版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java基础学习.ScannerScannersc=newScanner(System.in)Intnum=sc.nextINT();Stringstr=sc.next()Inttemp=a>b?a:b;a大于b吗大于的话就是a否那么是b.匿名对象如果只使用唯一的一次如publicclassPerson(){Stringname;Publilcvoidshowname(){(我是:"+same)}}非匿名对象Personper=newperson()Pe「.name='李飞'匿名对象Newperson(),name=1ifeiz匿名对象作为方法参数Publicstaticvoidmain(String[]args){methodParam(newScanner(System.in))}PublicstaticvoidmerhodParam(Scannersc){Intnum=sc.nextint();System.out.print('输入的是'+num)}.随机数Randomr=newRandom();Intnum=r.nextint()Intnum=r.nextint(10);随机0-9.对象数组Publicclassperson{PrivateStringname;Privatrintagr;Fw.write(cs)Fw.write「黑马程序员〃)写字符串Fw.close();.Properties集合唯一和io流结合的集合双列集合key和value都是StringPropertiespr=newProperties();Pr.setProperty(''赵丽颖",168);Set<String>set=pr.stringpropertyName();#取出键值放在set集合中For(Stringkey:set){Stringvalue=pr.getProperty(key);#使用增强for)使用store方法将数据存储进文件如,txt文件使用字符流时Filewriterfw=newFileWriter,'…\data.txt")可以读取中文Pr.store(fw/savedata")使用load方法将文件中数据以键值对的读取到控制台遍历出来Pr.load(newFileReader('\..\data.txtz,))Set<String>set=p「.stringpropertyNdme();#取出键值放在set集合中For(Stringkey:set){Stringvalue=pr.getProperty(key);#使用增强for}24,缓冲流.final关键字内部类Final修饰类时不能有子类其成员方法因为没有子类也不可以重写PublicfinalclassMyclass{Publicvoidmethod(){}}Final修饰局部变量这个变量永不变内部类是在类中的局部内部类在类的成员方法中同类同包不同包不同包非寻BBprivateyesdefaultyesyesprotectedyesyesyespublicyesyesyesyes.equals方法基本类型比拟值引用类型比拟地址值Objects的equals方法可以防止空指针异常迭代器针对集合循环遍历如Collection<String>coll=newArraylist<>();创立了集合对象使用多态接口new实现类Coll.add('asd')Iterator<String>it=coll,iterator();While(it.hasNext()){hasNext判断集合中还有下一个元素吗返回值为false或者trueStringe=it.next();next。取出元素Sout(e))增强f。「循环:遍历数组或者集合For(集合/数组数据类型变量名:集合名/数组名){system,out.print(变量名)}.File类文件遍历用list或者listfilesFilefile=newFile(”c:\\a\\b〃)String[]arr=file.list();For(Stringfilename:arr){Sout(filename)}.递归递归需要条件限定保证递归能停下来不然会导致栈内存溢出有限定条件次数太多也会导致溢出.缓冲流对基本流的增强增加缓冲区相当于数组(一次存储多个)增强效率FileoutoutStreamfos=newFileoutoutStream字节输入输知名流BufferedoutoutStreambos=newBufferedoutoutStream(fos);Bos.write(''123456〃)Bos.flush();Bos.close();outputstream把数据写入文件中字节输入流Fileinputstreamfis=newFileinputstream(x12\\0,txt,)Bufferedinputstreambis=newBufferedinputstream(fis)Intlen=0;While(len=bis.read()!=-1){Sout(len))Bis.close()字节输入流读取数据到控制塔这里利用字节数组存储一次性读取Fileinputstreamfis=newFileinputstream('12\\0.txt')Bufferedinputstreambis=newBufferedinputstream(fis)Byte[]byte=newbyte[1024]Intlen=O;While(len=bis.read(byte)!=-1){Soutn(newString(byte,O,len))}Bis.close()复制文件先输入在输出字符缓冲流字符输出流BufferedWriterbw=newBufferedWriter(newfilewriter(''10\\0.txrt,z))Bw.write("lovE〃)将love写入O.txt字符缓冲输入流BufferedReaderbw=newBufferedReader(newfilereaser(u10\\0.txrt,z))Readline。读一行Stringline;Whlie((line=br.readline())!=null){Sout(lilne)}.转换流即编码与解码UTF-8gbk等.序列化与反序列化把对象以流的方式写入文件就叫对象的序列化因为对象包括字符与字节ObjectOutputstream对象的序列化流writeObject(p)序列化时类必须实现Serializable接口把文件中保存的对象以流的方式读取出来叫做读对象也叫对象的反序列化Objectinoutstream对象的反序列化流readObject(p)打印流Printstream.软件结构C/S结构如QQ网盘客户端与服务器b/s结构如谷歌火狐浏览器与服务器.网络通信协议TCP/IP协议传输控制协议包括四层应用层ftptftodns传输层tcpudp网络层icmpip物理层udp协议无连接通信协议如视频会议qqTCP协议面向连接的协议三次握手文件下载浏览网页.客户端向服务器端发送连接请求等待服务器确认.服务器端向客户端会送一个响应通知客户端收到请求.客户端再次向服务器端发送请求确认连接TCP通信协议Socket和字符字节流Stream流属于管道流只能使用一次List<string>list=newArraylist<>();List.add(”张王玉〃);List.add(”张2玉〃);List.add(''张3玉〃);List.stream()・filter(name->name.startswith(¥K")).filter(name->name.legthn()=3).filter(name->System.out.print(name))Foreach方法Stream<string>stream=stream,of(、'1〃,〃2〃)Stream.foreach((Stringname)->{System.out.print(name)})Filter过滤方法Stream.filter((stringname)->{returnname.startswith("张〃)})输出列表中以张开头的字符串还有map映射方法skip跳过方法count统计方法concat合并两个流junit单元测试黑盒白盒单元测试白盒测试.定义一个测试类2,定义测试方法:可以独立运行.给方法加@test注解.导入Junit包利用assert断言方法Assert.assertEquals(expected,result)期望值和真实值36.反射很多优秀的开源框架都是通过反射完成的,比方最初的很多注解框架框架的灵魂将类的各个组成局部封装成其他对象获取Class对象的方式:.class.forname('全类名'):将字节码文件加载进内存返回class对象*多用于配置文件将类名定义在配置文件中读取文件加载类2.类名.class:通过类名的属性class获取*多用于参数的传递3,对象,getclass():getclass()方法在Object类中定Class对象的功能获取成员变量获取构造方法获取成员方法4,获取类名案例:写一个框架不能改变该类的任何代码可以帮我们创立任意类对象执行任意方法实现:配置反射步骤:1.将需要创立的对象全类名和需要执行的方法定义在配置文件中.在程序中加载读取配置文件,使用反射技术加载类文件进内存.创立对象.执行方法37,注解本质就是接口编写文档生成doc文档如javaAPI代码分析编译检查Publicperson(){}Publicperson(stringnamejntage){T=name;This.age=age;}Publicstringgetname(){4Returnname;}Publicvoidsetname(Stringname){T=name;}}Person[]array=newperson[3];Personone=newperson('123',12);Persontwo=newperson('135zz22);Array[0]=one;Array[l]=two;System.out.print(array[O].getname());.集合类arraylist长度可以变化Arraylist<E>E代表一个类型比方String类型是引用类型不是基本类型Arraylist<String>list=newArraylist<>();List.add()List.get()List,remove。List.size();基本byteshortintlongfloatdoublecharboolean弓[用ByteShortIntegerLongFloatDoubleCharacterBooleam从jdkl.5+可以自动装箱自动拆箱即基本类型引用类型(包装类)引用类型(包装类)基本类型Alt+inter可以出现可以选择的getset方法Publicclassdemo4{Publicstaticvoidmain(String[]args){Arraylist<Integer>biglist=newArraylist<>();PublicstaticArraylist<Integer>getsmallList(Arraylist<Integer>biglist){Arraylist<Integer>smalllist=newArraylist<>();}}.字符串所有的“”中的额字符串都是String对象可以共享字符数组创立字符串Char[]chararray={'a','b','c'}Stringstr=newstring(charArray)System.out.print(str)字符串比拟Strl.equals(str2)内容比拟字符串获取相关方法Length()concat。拼接方法charAt()获取索引位置值indexOF()参数字符串首次出现的位置字符串截取方法Substring(intindex)或者(intbeginintend)转换方法分割方法R即lace()split(stringregex)按照字符串规那么分割.静态static静态只能访问静态成员方法可以访问静态8•继承性extends共性抽取父类也是基类和超类子类也叫派生类子类可以拥有父类的内容也可以有自己专有的内容Publicclassfu{intnum=10}Publicclassziextendsfu{Intnum=20;Publicvoidmehtod(){Intnum=30;System.out.println(num);局部变量30System.out.println(this.num);本类的成员变量20System.out.println(super.num);父类的成员变量10})方法的重写也叫覆盖方法名称一样参数列表一样创立的是子类对象就优先使用子类的方法方法的重载是方法名称一样参数列表不一样子类构造方法中有隐含的super方法默认先调用父类的构造方法.superthis关键字Super访问父类的成员方法成员变量构造方法This访问本类的成员变量本类的另一个成员方法本类的另一个构造方法.抽象类如果父类中的方法不确定如何实现就是一个抽象方法抽象类publicabstractclassanimal{抽象方法publicabstractvoideat();}.不能直接创立new抽象类对象.必须用一个子类继承抽象父类.子类必须覆盖重写抽象父类中的所有抽象方法即子类去掉抽象方法的abstract然后补上方法体大括号如publicvoideat(){System.out.printin('吃鱼')}.创立子类对象使用.如果不全部重方法的话可以将继承的子类也定义为抽象类.接口公共规范标准interface引用数据类型Publicinterface接口名称{}接口都能定义抽象方法例如publicabstractvoidmethod();Public和abstract可以省略必须有一个继承的子类才能使用实现implements默认方法publicdefaultvoidmethod(){}默认方法会被实现类继承下去静态方法publicstaticvoidmethod(){}可以在实现类中通过接口名称直接调用如MYinterface.method();私有方法如果接口中共用方法不让实现类使用可以定义私有方法privatevoidmethod(){}接口中的常量必须赋值一旦赋值不能修改建议用完全大写字母用publicstaticfinal修饰接口没有静态代码块和构造方法可以实现多个接口例如PublicclassmyinterfaceimplementsinterfaceA,interfaceB{}.多态性父类publicclassFu{Publicvoidmethods(){System.out.println('父类'))}子类publicclassziextendsFu{Publicvoidmethods(){System.out.println('字类'))}实现类publicclassdemo{Publicstaticvoidmain(String[]args){Fuobj=newzi();Obj.method();父类名称对象名=new子类名称。;)接口名称对象名=new实现类名称0;}对象的向上转型就是多态写法父类名称对象名=new子类名称();对象的向下转型子类名称对象名=(子类名称)父类对象Animalanimal=newCat();Catcat=(Cat)animal;.多线程并发交替进行同一时间段并行同时发生分时调度抢占式调度主线程:执行主方法的线程创立多线程程序的第一种方法:创立thread子类步骤1,创立一个thread类的子类.在thread类的子类中重写run方法设置线程任务.创立thread类的子类对象.调用thread类方法start开启新的线程执行run方法多线程原理:Start方法重新开辟一个站空间执行run方法Getname获取线程名称Sleep以指定的毫秒数暂停线程创立多线程程序的第二种方法:声明实现runnable接口的实现类步骤1,创立一个runnable接口的实现类2.在实现类中重写run方法设置线程任务.3.创立一个runnable接口的实现类对象4,调用thread类对象构造方法中传递runnable接口的实现类对象5.调用thread类方法start开启新的线程执行run方法匿名内部类没有名字写在其他类内部的类作用:把子类继承父类,重写父类的方法,创立子类对象合成一步把实现类实现接口,重写接口方法创立实现类对象合成一步方法一:publicstaticvoidmain(String[]args){//newmyThread(),start();NewThread(){〃重写runPublicvoidrun(){For(){sout())}}.start();〃接口Runnabler=newrunnable。;多态Runnabler=newrunnable(){Publicvoidrun(){For(){sout())}}}Newthread(r).start();多线程共享数据会产生平安问题比方一个影院的三个窗口同时卖票1-100解决平安问题方法一:同步代码块Synchronize(锁对象){例如objectobj=newobject();肯出现问题的代码(访问了共享数据的代码))注意:锁对象可以任意但是必须保证多个线程使用的是同一个作用:把代码块锁住只让一个线程在同步代码块中执行解决平安问题方法二:同步方法PublicSynchronizevoidpaytictet(){可能出现问题的代码(访问了共享数据的代码)}解决平安问题方法三:thisPublicSynchronizevoidpaytictet(){Synchronize(this){可能出现问题的代码(访问了共享数据的代码)}}解决平安问题方法四:静态同步方法PublicstaticSynchronizevoidpaytictet(){可能出现问题的代码(访问了共享数据的代码)}解决平安问题方法五:lock接口.成员位置创立一个ReentrantLock对象.可能出现问题的代码前调用lock接口方法lock获取锁.可能出现问题的代码后调用unlock接口方法lock释放锁如publicclassRunnableimplimplementsRunnable{Lockl=newReentrantLock();Publicvoidrun(){L.lock();可能出现问题的代码块L.unlock();}).线程状态notify方法唤醒waitting无限等待状态只有锁对象才能调用notify和waitting方法notifyAII唤醒所有.线程池即容器用集合(Arrdylist,HdshSet,LInkedlistvthread>,HdshMap).集合list创立一个list集合对象多态List<String>list=newArraylist<>();Add()Add(index:3,element/love')Set(3,'A')替换元素Get()Arraylist数组集合查询块增删慢Linkedlist链表集合查询慢增删块Linkedlist<String>linked=newLinkedlist<>();Addfirst()Vector集合.set集合不包含重复元素没有索引也没有f。「循环Hashset无序集合哈希表结构查询速度快不能遍历循环只能用迭代器实现每个元素的输出如:Set<interger>set=newhashset<>();Interator<integer>it=set.iterator();While(it.hasnext()){Integern=it.next();System.out.print(n);}或者for(integeri:set){System.out.print(i))哈希值hashcode()Hashset哈希集合Hashset<String>set=newHashset<>();必须重写hashcode和equals才能保证元素唯一Hashset无序不允许重复Linkedhashset有序不允许重复.可变参数方法的参数列表数据类型确定个数不确定时.collection集合工具类向一个集合中同时添加多个元素Arraylist<String>list=newArraylist<>();Collections.addAII(list/a7b7cz)Collections.shuffle打乱集合元素顺序Collections.sort升序可以对类进行创立列表如Arraylist<Person>list=newArraylist<
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年虚拟现实英语单词记忆创新报告
- 2026年高硅氧纤维行业创新趋势预测报告
- 2026年电脑测深仪行业管理系统创新报告
- 2026年制造业办公软件市场深度分析报告
- 高钙片行业2026创新战略深度解析报告
- 2026年航空货运市场展望报告:政策与技术创新分析
- 2026年清洁胶行业智能创新报告
- 2026年气象测量仪器创新行业报告
- 2026年雷达技术革新对无线电导航设备应用影响分析报告
- 2026年辊磨机行业技术创新动态报告
- 2026广东事业单位集中招聘公基职测真题
- 2026年会议筹备会务经办试卷(带答案)
- 2026年秋中小学生体重管理与健康饮食课件:学生营养改善计划
- 2027南方凤凰台5A新考案高考一轮复习全国版数学提高版第37讲 空间直角坐标系与空间向量
- 【新教材】统编版(2024)|八年级上册历史第9课《辛亥革命》教案
- 2026年医德医风警示教育案例课件(完整版)
- CSCO肿瘤治疗所致血小板减少症诊疗指南(2026版)
- 2026+第一季度北京市人力资源市场薪酬数据报告
- 石灰石矿山采剥作业规范
- 机动车检测站全套作业指导书(综、安、环)(完整版)
- 2026年政府采购评审专家考试题库及答案
评论
0/150
提交评论