建筑专业,毕业,无编程基础,4个有考过SCJP1.4,复习心得2
(45)访问权限控制:public>protected>无>private
没有继承关系的其他类不能访问本类中的protected和没有访问权限修饰符的成员!
有继承关系的话的类可以于包外访问本类中的protected成员,而不能访问没有访问权限修饰符的成员!
因此protected的权限高于没有访问权限修饰符
(46)if()里面的必须使用boolean数据类型 而不是java.lang.Boolean类类型
(47)main方法可以是final的 最外层的类可以声明成final
(48)没有static的main()方法可以编译,但不可以运行。因为没有static后的main()被看作是一个普通方法
(49)线程类如果没有实现Runnable接口,例如:
public test implements Runnable
{
void run(Thread t){}
//此时编译出错,出错提示是类出错而不是run(Thread t)方法出错。
//void run(Thread t)本身并无错,而相当于是void run()的一个重载。
}
(50) switch()里可以是char型
(51) wait(),notify // 唤醒一个睡眠的线程 ,notifyAll()//唤醒所有的睡眠的线程;都不是Thread类的方法,而是Object类的方法
(52) i++>m;i是在整个表达式执行完才被加1
(53) 左移X位即低位补0相当乘以2的X次方,
(54) 正数>>X位即高位补0,相当于除以2的X次方,若不能除尽取整数
(55)负数>>X位:(高位补1)设x为负数:x>>y=-(~x>>y+1)
(56)负数无符号>>>位:(高位补0)
(57)x+~x+1=0
(58)Java里switch(这里只可以是char或者String类型)
(59)包裹类的比较和普通类的比较不同。(大家为同类)
例如:String s1=new String(“a”);String s2=new String(“a”);
则s1==s2返回假;
s1.equals(s2)返回真。
如果是普通类:例如class MyObject
MyObject m1=new MyObject(); MyObject m2=new MyObject();
m1.equals(m2)返回假;m1==m2返回假
(60) 运用equals对包裹类(Date,File,String,Float等)进行比较时,比较的是类型及内容而非地址(引用)!而其他类进行比较时,比较的是地址,即引用!
(61) 移位操作只对整型有效
(62) const,goto是Java关键字,但不使用。而unsigned则不是Java关键字
(63) 不能在一个方法里定义静态变量 void A() {static int I=0;}这是错的!!!
(64) 匿名内部类不能是final,static,不能实现多接口,不能有权限修饰符。
(65) 方法内的内部类不能是static,不能有权限修饰符,但可以是final的,可以实现多接口
静态内部类里的方法,无论是静态的还是非静态,如果要访问外部类中的非静态成员,那么必须通过外部类对象去访问
(66)main()方法可以是final的。
final, public,static与顺序无关
标准写法:public static final int varial=100;
abstract,public 与顺序无关
abstract 与static ,final 系冲突的,不能同在一方法中(abstract是提倡方法覆盖的,而static ,final,是禁止方法覆盖)
接口的所有方法默认都是public,abstract(不能实现的)和non-static的。
类实现接口时,必须实现接口的所有方法。
接口的所有变量默认都是public,static,final的.所以,接口的变量不能改值,在它的实现类里。
接口的实现类实现的方法必须和接口的方法抛出同样的异常,不许是子类,这和override不一样!同样,如果接口方法没有抛,实现方法也不能抛.
(67)HashSet里的元素保证是唯一的.
(68) start方法不能直接导致线程停止.wait()和setPriority()//设置线程优先级 可以直接导致一个线程停止执行.yield()//把当前线程执行权限让给同优先级的线程 sleep() stop()也可以导致线程停止执行。
(69) 147的第141题:重载了toString()方法,输入new B()实际上是调用了对象(new B())的toString()方法,故答案是43
(70) _3_ 和afd12 都是合法的变量名