大三第一学期Java课程期末复习笔记整理 (2)
大三第一学期Java课程期末复习笔记整理 (1)
29.内部类
1.内部类可以声明为 private或是protected,但是,如果内部类是private的话,那么外部类之外将无法访问这个内部类了。
2.内部类的创建方式只能“外部类.内部类”,无论是在外部类中里外,并且一定要在外部类对象的基础上:
OutClassoc = new OutClass(); OutClass.InClass oi = new oc.new InClass(); 3.内部类是static,创建方式:
OutClass.staticClass os = new OutClass.static(); 4.内部类中可以直接访问外部类的所有成员,包括private protected ,但不能通过内部类对象来访问外部类的成员。而外部类中无法访问内部类的成员,外部类的对象也不能访问内部类的成员。如下图所示:
http://farm3.static.flickr.com/2773/4308741242_407c0546c0_o.jpg
32.equals方法
默认:
public boolean equals (Object obj){return (this == obj);} 比较的是两个对象引用在内存中是否指向同一个对象。
33.匿名类没有名称,也没有构造方法。
34.toString方法:
默认:所属类名@(一个无符号的十六进制数,一般是对象所在的内存地址)
35.“克隆”
1. newObject = oldObject.clone();
这名话的意思是:将oldObject复制到一个新的内存地址中去,并让newObject的引用指向新的对象。
2.默认情况下,java中自定义的类都不具有克隆能力,必须实现Cloneable接口之后才行。否则会抛出异常:CloneNotSupportException。
3. 注意深拷贝和浅拷贝。
http://farm5.static.flickr.com/4004/4308571937_1fccbd352e_o.gif
36. 语句 obj instanceof A : obj是否是A类或其子类的对象。
37. 字符串转化成Boolean类型
Boolean b1 = new Boolean("true"); //=>true
Boolean b2 = new Boolean("yes"); // =>false
38.round()的返回值
对于float,方法返回的是四舍五入后的int值
对于double,方法返回的是四舍五入后的long值
39.
String s1 = "Hello!";String s2 = s1.concat("World"); 有关字符串的方法,操作后不改变s1的值。
40.String中的一些方法
indexOf:
String s = "My name is nileader";int i1 = s.indexOf("na"); //i1 = 2;int i2 = s.indexOf("is",3); //i2 = 8;int i3 = s.lastIndexOf("ni",15); //i3 = 11;
substring(int begIndex, int endIndex)
没有endindex参数的时候,默认是从begIndex到结尾,如果有了这个参数,则是从begIndex到endIndex-1
41.有关String,始终记住:
1.String类对象是个常量,其值在创建之后不可改变。
2 .String类中的任何一个方法如果要修改String对象的值,都是创建一个包含修改结果的新的String对象并返回。
42.String s = "Hello"+"nileader"+"!";
对于如上语句的执行,java编译器不会生成三个字符串后在给s,而是:
String s= new StringBuilder("Hello").append("nileader").append("!").toString();
43. 声明数组时,只声明 一个用来操作数组的引用,不分配实际内存大小,所以:
int a;//这样的语句是错误的,在声明数组时是不可以指定数组的大小的
44.数组中要注意的一点是,
Integer[] i = new Integer; //此时,i 中每个元素都是null 复合类丰创建完其对象时,全天候元素均是null。
45.数组创建过程中:
http://farm3.static.flickr.com/2716/4310558136_208ebfe33e_o.gif
length代表的只是数组中可能存在的最大元素个数,并不是实际对象的个数。
46.有关Arrays的fill()方法。
http://farm3.static.flickr.com/2784/4310623932_0f25b176c1_o.gif
这是因为,当fill方法操作的是一个复合类型时,那么实际上是将这个对象的引用赋给数组中待复制的元素。
说得通俗点:
以上程序的相关语句可以描述如下:
http://farm3.static.flickr.com/2682/4310675592_964fb562db_o.gif
页:
[1]