SCJP 笔记(一)

1.当对象被做为其它对象方法的参数使用时,传入该对象方法的是对象的地址,在方法中对对象内部变量的重新赋值造成的改变会立即实际改变作用,而对做为参数传入的对象地址重新赋值会在方法调用结束后还原为原来的地址。基本类型变量做为方法的参数时,只是传值进去,方法结束后,变量仍然是原来的值。
2.判断方法是否覆盖要看该的方法的返回值和参数是不是精确匹配,如果仅仅是方法的参数发生变化,返回值不变就是重载,如果子类中的同名方法,返回值发生改变将不能编译,提示类型不兼容。
3.内部类:内部类如果定义在外部类的方法中,那么它可以访问外部类的所有实例变量(无论其访问控制符是什么),只能访问该方法的常量(有final控制符)。在方法中定义的内部类,必须在方法中创建内部类对象,外部类才能通过该方法访问内部类。方法中的内部不能是static的,如果一个类中的内部类是静态的,那么它就自动升级为顶级类,静态的内部类中的方法,无论静态还是非静态的,都只能直接访问外部类中的静态变量,在创建外部类对象的实例后,才能访问外部类中的非静态变量。访问类内部定义的内部类(非方法内定义的),可以用new 外部类().new 内部类(),来创建类的实例。静态内部类创建实例。outer.inner classname=new outer.inner();
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,没有任何后缀的整数java默认为int型的,没有任何后缀的小数默认为double型的。010是int型的八进制数,0x11是int型的16进制数,如果double型的也可以使用0x,0,但前提必须这个double型不能是小数或有小数后缀。
1//int,1.0//double,1L//(大小写均可以)long,1.0F//(大小写均可以)float,

6.接口:所有接口中定义的变量均为public static final常量,public static final可以不写出来,但在定义时必须对这些常量赋值。所定义的所有方法必须为public,public也可以不写出来。接口方法不能用static,接口可以用abstarct来修饰。
7.构造方法:构造方法没有返回值,连void也不能有,如果有了就成了普通的方法了。构造方法调用super时,只能在第一行调用。构造方法不能是静态的。构造方法只能用public,protected,private三种限定符,但private定义的构造方法不能在其它类中构造该类的对象,void classname()不是构造方法,但它是一个普通的方法,可以在类中显式的调用,class.classname();子类中建立子类对象时会首先调用父类的无参构造方法。如果父类已经有了有参构造方法,java将不会再为类生成一个默认的无参构造方法,这时必须手动设置一个无参构造方法,以保证建立子类对象时不会出错。构造方法不能被子类继承,例如:class Test extends Thread{};Test t=new Test(runable r);无法编译,因为没有Test(r)这个构造方法。
8.一个java文件最多只能有一个public类,如果一个java文件中没有public限定符的类,该文件仍然可以正常运行。
9.静态方法:静态方法不能被覆盖为非静态方法,静态方法如果被覆盖为静态方法,那么覆盖的方法将被隐藏。静态方法中不可调用非静态方法和变量(原因就是后面的),静态方法可以在没有建立类的实例之前被调用,静态方法中不用访问隐式变量this(原因它是非静态的),非静态的方法中不能定义静态的变量。非静态的方法也不能覆盖为静态方法。
10.关键字:main,sizeof都不是java的keyword。goto,const虽然是keyword,但至少偿末使用。true,false,null虽然不是关键字,但它们是java定义的常量,也不能做为变量名。关键字全部都是小写的。
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.垃圾收集:一个程序可建议垃圾收集,runtime.gc(),System.gc()方法可以建议垃圾收集,但不能强制垃圾收集,不同的java开发环境中的垃圾处理机制不太一样。
16.swicth(i)里面的i只能接受int以下的基本数据类型,并且从匹配条件开始执行,直到到break或swicth结束。
今天就写这么多了,不知道以后还能不能修改今天写的东西。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值