技术贴我也不知道该写啥,分享一下自己的基础班学习笔记给大家吧!!
1.==比较的是二者的存储位置是否相同,即是否指向同一内存地址;使用==号比较 基本类型域,使用equals比较对象域(引用类型),
2.对于数组类型的域,可以使用静态的Arrays.equals方法检测相应的数组元素是否相同
3不能在嵌套的块中声明同名的变量
4.for-eace循环(增强for循环):for(variable : collection) statement
5.静态域属于类 而不属于任何独立的对象<C++认为静态方法属于类且不属于类对象的变量和函数>
静态方法是一种不能向对象实施操作的方法,可以认为静态方法是没有this参数的方法(在一个非静态的方法中,this参数表示这个方法的隐式参数)
因为静态方法不能操作对象,所以不能在静态方法中访问实例域,但是可以访问自身类中静态域
6.在下面两种情况下使用静态方法:
1.不需要访问对象状态,其所需参数都是通过显式参数提供的(Math.pow(x,y))
2.一个方法只需要访问类的静态域
7.方法可以修改传递引用所对应的变量值,而不能修改传递值调用所对应的变量值;java总是采用值调用,也就是说方法得到的是所有参数值的一个拷贝,特别是
8.方法不能修改传递给他的任何参数变量的内容
9.java中方法参数的使用情况:
a不能修改一个基本数据类型的参数(数值型和布尔型)
b可以改变一个对象参数的状态
c不能实现让对象参数引用一个新的对象
10.必须明确地初始化方法中的局部变量,而如果没有初始化类中的域,则会被初始化为默认值
11. this的两种用法:
a.指示隐式参数(构造的当前对象);
b.如果构造器的首句形如this(...),该构造器将会调用同一类的另一个构造器
ps:采用这种方式使用this,对公共的构造器代码部分只需编写一次即可
12.可以为任何一个类添加finalize方法,finalize方法将在垃圾回收器清除对象之前调用,在实际应用中不要依赖使用finalize方法回收任何短缺的资源,这是
因为很难知道这个方法什么时候才能够调用
13.使用super调用基类的构造方法必须位于子类构造器的首句,如果子类没有显式地调用超类的构造语句,则将自动调用超类默认的构造方法;如果超类没有不带参数的构造器
且子类中没有显式调用超类的其他构造方法,将编译报错
14.调用super:1.调用超类的方法,2.调用超类的构造器
15.不能将一个超类的引用赋值给其子类变量,在java中子类数组的引用可以转换成超类数组的引用,而不需要采用强制类型转换
覆盖方法时,子类方法不能低于超类的可见性,使用final修饰的类不允许扩展
在对引用对象进行强制类型转换时,需要注意2点:
1.只能在继承层次内进行类型转换
2.在将超类对象转换成子类之前,应该使用instanceof进行检查
switch检查的数据变量类型只能是byte/short/char/int/string/enum,case标签必须是整数或者枚举常量不能测试字符串
为了提高程序的清晰度,包含一个或多个抽象方法的类本身必须被声明为抽象的,除了抽象方法之外,抽象类还可以包含具体数据和方法,
许多程序员认为在抽象类中不能包含具体的方法,建议尽量将通用的域和方法(不管是否抽象)放在超类(不管是否抽象)中,抽象方法充当着一个占位的
角色,他们具体实现在子类中,扩展抽象类可以有两种选择:一种是在子类中定义部分抽象方法或者抽象方法也不定义,这样就必须将子类也标记为抽象类
,另一种是定义全部的抽象方法这样子类就不是抽象的了。类即使不包含抽象方法也可以将类声明为抽象类。抽象类不能被实例化必须创建一个具体子类的对象;
需要注意的是,可以定义一个抽象类的对象变量,但是他只能引用非抽象子类的对象
在java中只有基本数据类型不是对象。所有的基本类型都有一个与之对应的类(包装器),对象包装器类是不可变的即一旦创建了包装器,就不允许更改包装在其中的值
同时对象包装器类是final,因此不能定义他们的子类。当将包装类对象赋给基本类型时称之为拆包,反之称为打包;打包与拆包是编译器认可的而不是虚拟机,编译器在生成
类的字节码时,插入必要的方法调用,虚拟机只是执行这些代码
回调是一种常见的程序设计模式,在该种模式下,可以指出在某个特定事件发生时应该采取的动作
内部类:定义在另一个类中的类
1.内部类方法可以访问该类定义所在的作用域中的数据,包括私有数据
2.内部类可以对同一个包中的其他类隐藏起来
3.当想要定义一个回调函数且不想编写大量代码时,使用匿名内部类比较便捷
嵌套是类之间的一种关系,而不是对象之间的关系,嵌套类利于命名控制和访问控制。内部类的对象有一个隐式引用,它引用了实例化该内部对象的外围类对象,
通过这个指针,可以访问外围类对象的全部状态。在java中static内部类没有这种附加指针,这样的内部类与C++中的嵌套类很类似
第6章
接口这种技术主要用来描述类具有什么功能,而并不给出每个功能的具体实现;一个类
可以实现一个或多个接口,并在需要接口的地方,随时使用实现了相应接口的对象
对象的克隆是指创建一个新对象,且新对象的状态与原始对象的状态相同,当对克隆的新对象进行修改时,不会影响原始
对象的状态。内部类定义在另一个类的内部,其中的方法可以访问包含他们的外部类的域
,内部类技术主要用于设计具有相互协作关系的类集合;代理是一种实现任意接口的对象,代理是一种
非常专业的构造工具,他可以用来构建系统级的工具
1.接口:
接口是对类的一组需求描述,这些类要遵从接口描述的统一格式进行定义,接口中的所有方法自动地属于public,因此在接口中声明方法时不必提供关键字public,不过在实现接口时必须把方法声明为public,否则编译器将认为这个方法的访问属性是包可见性,即类的默认访问属性,接口中的域将被自动设成public static final;接口绝不能含有实例域,也不能在接口中实现方法,但却可以包含常量,提供实例域和方法实现的任务应该由实现接口的那个类来完成,因此可以将接口看成是没有实例域的抽象类;尽管每个类只能够拥有一个超类,但却可以实现多个接口
让类实现一个接口通常需要下面两个步骤:
A.使用关键字implements将类声明为实现 给定的接口
B.对接口中的所有方法进行定义
接口的特性:
1.接口不是类,不能使用new运算符实例化一个接口,不过可以声明接口的变量,接口变量必须引用实现了接口的类对象
对象克隆:当拷贝一个变量时,原始变量与拷贝变量引用同一个对象,也就是说改变一个变量所引用的对象将会对另一个变量产生影响。如果创建一个对象的新的copy,他的最初状态与original一样,但以后将可以各自改变各自的状态,就需要使用clone方法
回调是一种常见的程序设计模式,用于指出某个特定方法发生时应该采取的动作
|
|