scjp学习笔记(一)

类别:Java 点击:0 评论:0 推荐:

1.当对象被做为其它对象方法的参数使用时,传入该对象方法的是对象的地址,在方法中对对象内部变量的重新赋值造成的改变会立即实际改变作用,而对做为参数传入的对象地址重新赋值会在方法调用结束后还原为原来的地址。基本类型变量做为方法的参数时,只是传值进去,方法结束后,变量仍然是原来的值。
2.判断方法是否覆盖要看该的方法的返回值和参数是不是精确匹配,如果仅仅是方法的参数发生变化,返回值不变就是重载,如果返回值发生改变就是新的方法。
3.内部类:内部类如果定义在外部类的方法中,那么它可以访问外部类的所有实例变量(无论其访问控制符是什么),只能访问该方法的常量(有final控制符)。在方法中定义的内部类,必须在方法中创建内部类对象,外部类才能通过该方法访问内部类。方法中的内部不能是static的,如果一个类中的内部类是静态的,那么它就自动升级为顶级类,静态的内部类中的方法,无论静态还是非静态的,都只能直接访问外部类中的静态变量,在创建外部类对象的实例后,才能访问外部类中的非静态变量。
4.赋值语句:先对右边的语句进行计算后再把值赋给左边(计算按照运算符的优先级来)。例如:
float f=1/3;//f=0.0
float f=1/3f;//f=0.33333
float f=10;//f=10.0
5.基本类型取值范围:char类的取值范围是0->2e(16)-1,其它整数类型的取值范围均为-2e(X)->2e(x)-1
6.接口:所有接口中定义的变量均为static final常量,static final可以不写出来,但在定义时必须对这些常量赋值。所定义的所有方法必须为public,public也可以不写出来。
7.构造方法:构造方法没有返回值,连void也不能有,如果有了就成了普通的方法了。构造方法调用super时,只能在第一行调用。构造方法不能是静态的。
8.如果一个java文件中没有public限定符的类,该文件仍然可以正常运行。
9.静态方法:静态方法不能被覆盖为非静态方法,静态方法如果被覆盖为静态方法,那么覆盖的方法将被隐藏。静态方法中不可调用非静态方法和变量(原因就是后面的),静态方法可以在没有建立类的实例之前被调用,静态方法中不用访问隐式变量this(原因它是非静态的),非静态的方法中不能定义静态的变量。
10.关键字:main,true,sizeof都不是java的keyword。goto,const虽然是keyword,但至少偿末使用。
11.String中length()是一个方法不是属性,而在char[]中,length是属性而不是方法。
12.基本类型变量初值问题:如果在方法内定义的变量,必须在使用前赋值。如果在方法外的类变量,在方法内使用时,可以不用赋初值,系统自动就赋了一个该类型的缺省值。如果是基本类型的数组,无论在方法外还是在方法内,如果没有赋初值,系统都会自动赋以其缺省值,如果是对象数组,则缺省初值为null。
13.非静态的内部类中不能有静态的方法和变量。
14.多态:一个子类可以被看作是一个父类,并可以强制转换成父类,但父类不能强制转换成子类。多态将新创建的子类赋值给父类时,会传递一个子类的this指针给该父类对象,如果对该父类对象调用在子类中覆盖的方法时,会动态的绑定为子类的方法。例如:
class Super {
    public void T1(){
        System.out.print(”t1”);
    }
}
class A extends Super {
public void T1(){
    System.out.print(”t2”);
}
public static void main(){
    Super s=new A();
    s.T1();//将打印t2
}

但如果是T1是static的,那么子类中的T1将无法覆盖父类中的T1,因为这时子类中的T1在多态绑定时会自动隐藏。
15.垃圾收集:一个程序可建议垃圾收集,但不能强制垃圾收集,不同的java开发环境中的垃圾处理机制不太一样。
16.swicth(i)里面的i只能接受int以下的基本数据类型,并且从匹配条件开始执行,直到到break或swicth结束。
今天就写这么多了,不知道以后还能不能修改今天写的东西。

本文地址:http://com.8s8s.com/it/it13246.htm