java学习笔记,都是重点,我的体会.docx_第1页
java学习笔记,都是重点,我的体会.docx_第2页
java学习笔记,都是重点,我的体会.docx_第3页
java学习笔记,都是重点,我的体会.docx_第4页
java学习笔记,都是重点,我的体会.docx_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/-this- -1.this指向当前对象或 类。2.this()表示调用当前类的无参构造方法新类的定义中,可以自定义新的属性和方法/-重写、覆盖-特点:1.方法的名、参数列表、返回值全部一样2.子类的访问修饰符的访问范围要大于原父类的3.子类的返回值类型可以是父类返回值的子类型(jdk5.0及以上)*1.基本数据能转换成引用数据类型*/多态-1.构造方法是不能被继承的2.父类类型的变量去引用子类类型的对象,发生多态时,编译期调用的是父类的方法,运行中调用的是子类的方法;3.多态时,先寻找原变量类型中定义的方法,有责,去找寻子类中是否进行了重写,若有,则调用重写/抽象类-在Java中所谓的抽象类,即是在类说明中用关键字abstract修饰的类。一般情况下,抽象类中可以包含一个或多个只有方法声明而没有定义方法体的方法。当遇到这样一些类,类中的某个或某些方法不能提供具体的实现代码时,可将它们定义成抽象类。定义抽象类的一般格式如下:访问限定符 abstract class 类名其中,声明抽象方法的一般格式如下:访问限定符 abstract 数据类型 方法名(参数表);注意:抽象方法只有声明,没有方法体,所以必须以“;”号结尾。有关抽象方法和抽象类说明如下:1 所谓抽象方法,是指在类中仅仅声明了类的行为,并没有真正实现行为的代码。也就是说抽象方法仅仅是为所有的派生子类定义一个统一的接口,方法具体实现的程序代码交给了各个派生子类来完成,不同的子类可以根据自身的情况以不同的程序代码实现。2 抽象方法只能存在于抽象类中,正像刚才所言,一个类中只要有一个方法是抽象的,则这个类就是抽象的。3 构造方法、静态(static)方法、最终(final)方法和私有(private)方法不能被声明为抽象的方法。4 一个抽象类中可以有一个或多个抽象方法,也可以没有抽象方法。如果没有任何抽象方法,这就意味着要避免由这个类直接创建对象。5 抽象类只能被继承(派生子类)而不能创建具体对象即不能被实例化。抽象类不能直接实例化,也就是不能用new运算符去创建对象。抽象类只能做为父类使用,而由它派生的子类必须实现其所有的抽象方法,才能创建对象。/静态 static-1.可以在没有任何实例时调用,即直接由类名调用!(当然亦可实例化后,由对象去调用)2.不能在static方法内部访问非static成员3.不能被非static方法覆盖(静态方法不能被覆盖)4.静态代码块 优先于 实例代码块,先于构造方法运行。A静态 static B静态 A实例 A构造 A() B实例 B构造/设计模式之 :单例模式-class Singleton2() /饿汉式private static Singleton singleton= new Singleton2(); /或者 private static final Singleton singleton= new Singleton2();private Singleton2()public static Singleton2 getInstance()return singleton;public class Singleton()/懒汉式(延迟加载)private static Singleton singleton;private Singleton()public static Singleton getInstance()if(singleton = null) /次处可能出现多线程的singleton =new Singleton(); /不同步现象,应加synchronized进行同步处理return singleton;public class Singleton()/懒汉式(延迟加载)-改进后private static Singleton s;private Singleton()public static Singleton getInstance() /进行双重判断,减少了同步次数,提高了程序运行效率if(s=null)synchronized (s.class)if(s = null) s =new Singleton(); return s;/final 关键字-final 用来修饰一个类,方法,属性或局部变量final 类不能被继承 final 方法不能被覆盖final 变量的值不能被改变/abstract类和abstract方法-1.如果一个方法没有实现的代码,那么它必须被声明为抽象的方法。2.如果一个类包含有抽象方法,那么它必须被声明为抽象类。3.抽象类不能实例化-不能生成对象。4.可以定义一个抽象类的引用, 即创建一个该类的变量去引用其具体子类的一个对象(实例) /接口-1.接口是一种特殊的抽象类2.接口中所有的方法都是抽象方法3.一个类可以实现多个接口4.接口中的所有属性都会自动声明为final static5.接口与接口之间可以多重继承(可以提高代码的重用性)6.当一个类去实现一个接口时,必须实现该接口中所有的方法【显然,这些方法都是抽象方法】/ 接口 与 抽象类 的区别-1. 声明方法的存在而不去实现它的类被叫做抽像类( abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽像类,并让它指向具体子类的一个实例。不能有抽像构造函数或抽像静态方法。Abstract 类的子类为它们父类中的所有抽像方法提供实现,否则它们也是抽像类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法接口( interface )是抽像类的变体。在接口中,所有方法都是抽像的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽像的,没有一个有程序体。接口只可以定义static final成员变量,而抽象类对成员变量不要求。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对像上调用接口的方法。由于有抽像类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换, instanceof 运算符可以用来决定某对象的类是否实现了接口。3.A。接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的, B。实现接口的一定要实现接口里定义的所有方法,而实现抽象类可以有选择地重写需要用到的方法,一般的应用里,最顶级的是接口,然后是抽象类实现接口,最后才到具体类实现。C。接口可以实现多重继承,而一个类只能继承一个超类,但可以通过继承多个接口实现多重继承,接口还有标识(里面没有任何方法,如Remote 接口)和数据共享(里面的变量全是常量)的作用/串池空间-String s = new String(abc);创建了两个对象 :1.new的一个在内存空间2.abc在串池空间publicclassStringTest1 publicstaticvoidmain(Stringargs) Stringstr1=abc; Stringstr2=abc; System.out.println(str1=str2); Stringstr3=newString(“abc);Stringstr4=newString(“abc);System.out.println(str1 =str3); System.out.println(str3=str4); Java中为了给String对象提高效率,所以就为String类提供了字符串池。在StringTest1中就使用了串池。当你重新声明一个String型变量为abc时,将使用串池里原来的那个abc,而不重新分配内存。在str3和str4中使用了普通对象的声明方式,即new关键字,系统将会为str3和str4各分配一块内存。/String 和 StringBuffer-1、String类的实例一旦创建出来就不能再修改,各种貌似修改的方法都是返回一个包含修改结果的新的String实例。2、如果你要频繁修改字符串或处理长字符串,那就用stringbuffer,更有效率。 3、str+=会创建新实例,而str=a+b,(两个字符串相连,而不是两个实例相连),就是str=ab,加号无视,所以更快/-/ System.out.printf();使用 System.out.printf(); 方法控制数据的输出格式 如: double number = 234.234 ; System.out.printf(“%6.2f” , number); 程序运行结果 : 234.23 /字符串分割String s = str.split(D+); /以 一个 或 多个 空格 为界,接收数字 /Exception-1. Exception与错误 的区别Exception:一个异常是在一个程序执行过程中出现的一个事件,它中断了一个正常指令的运行错误:偏离了可接受的代码行为的一个动作或一个实例Exception 分为 运行时异常 (未检查异常) 和 编译时异常(已检查异常)2.String str=null; 则abc.equals(str)可正常运行, 而 str.equals(abc);则会报异常:NullPointerException3. 撒网捕鱼try可能出现异常的代码块catch出现异常需要被执行的代码块finally无论异常出现与否,都要执行的代码块 :即相当与 撒网捕鱼4.子类覆盖父类的方法时,抛出的异常不能比父类抛出的更宽泛/-/在myeclipse中如何实现代码的整块向前缩进啊选中多行代码,按Tab键是整块向右推进,按Shift+Tab是整块向左缩进/ 在Windows系统中,回车符由两个字符表示:rn/ IO Stream-流的种类:1.按功能分输入流:一个可以读取字节序列的对象InputStream输出流:一个可以写入字节序列的对象OutputStream2.按性质分字节流:适合读写流媒体文件InputStream/OutputStream字符流:适合续写文本文件Reader/Writer/线程+进程:一个应用程序启动就会在系统中创建一个进程线程:一个进程中可能包含多个线程多线程编程:如果我们希望一个程序中多条代码交替执行,就需要产生多个线程并制定每个线程上需要运行的程序代码-方法的调用不能够产生新的线程/产生线程的方式1:1.继承Thread类2.重写Thread类中run方法3.创建自定义线程类的对象4.调用start方法-new MyThread()-调用start()-CPU-run()-线程结束线程的初始状态线程进入可运行状态运行状态 结束状态|-阻塞状态 |-|-/产生线程的方式2:1.实现Runnable接口2.实现接口中的run()方法3.实例化自定义线程类4.构造一个Thread对象将自定义线程类的示例作为传输传递5.调用start()方法-线程应用的好处:提高CPU的利用率烧水泡茶:找茶杯 2分钟烧水5分钟洗茶杯3分钟泡茶2分钟synchronized关键字:被修饰的代码越少越好,因为同步后会影响效率synchronized()wait()notify():随即的选取一个等待该对象的线程,让它离开阻塞状态not

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论