SCJP认证考试复习笔记系列之一(收藏)

希望总结的这些知识点会对准备通过SCJP考试的朋友有所帮助!难免有错误的地方欢迎大家批评指正。
  1. Thread类是在java.lang包中定义的,sleep()和yield()是Thread的静态方法。但是wait()、notify()、notifyAll()是Object类的实例方法。要让一个线程启动要调用start()方法,但是具体什么时间线程开始运行是跟操作系统和虚拟机相关的。
  2. 任何时候都要记得String类是不可修改的,但是不要认为调用某些方法一定会创建一个新的对象。当调用String的实例的concat()、trim()、toUpperCase()、toLowerCase()方法时,如果调用后实例没有发生变化,那么将不会创建对象。运行下面的程序得到四个true就说明了这一点。
    public class TestString
    {
    ?public static void main(String[] args)
    ?{
    ??TestString ts = new TestString();
    ??ts.test();?
    ?}?
    ?
    ?public void test()
    ?{
    ??String lower = "mingjava";
    ??String upper = "MINGJAVA";
    ??
    ??System.out.println(lower == lower.toLowerCase());
    ??System.out.println(upper == upper.toUpperCase());
    ??System.out.println(lower == lower.trim());
    ??System.out.println(lower == lower.concat(""));
    ?}
    }
  3. 所有的异常都继承自Throwable,它的两个分支是Error和Exception。Error和RuntimeExcepton合起来称作UnCheckedException。其他的异常称作CheckedException。Error和RuntimeException是不需要进行捕捉的,Error我们无能为力,但是RuntimeException的出现就是你的错误,你应该检查你的代码。如果方法中没有用throws声明CheckedException,那么你进行捕捉的话同样会出现编译错误!
  4. 记得数组的下标从开始0开始计数的,有时候会在main(String[] args)里面考察你这个问题
  5. 内部类对它的Enclosing class有无限的访问权限,甚至可以访问他的private类型的变量。但是如果内部类想访问局部变量的时候,那么这个局部变量必须为final的。例如
    public class Test
    {
    ?public void doSome()
    ?{
    ??final int j = 100;??
    ???
    ??class InnerClass
    ??{
    ??
    ??????public void print()
    ??????{
    ??????????System.out.println(j);
    ??????}?
    ???}?
    ?}
    ?
    }
  6. 方法重载的时候,返回值和抛出异常是不能区分同样名字的方法的。起作用的是方法参数的类型和个数
  7. 注意>>是带符号的移位,>>>是右边补零的移位。看下面的例子

    public class MyClass
    {
    ?public static void main(String argv[])
    ?{
    ??int i = 0x80000000;
    ??
    ??System.out.println(i);
    ??System.out.println("after >>"+(i>>1));
    ??System.out.println("after >>>"+(i>>>1));
    ?}

    }
  8. ArrayIndexOutOfBoundsException, NullPointerException, ArithmeticException, NumberFormatException.ClassCastException都是常见的RuntimeException,不是Complie Exception
  9. String s = "xxxx" 这样的声明s是可以复用的,但是new String("xxx")是一定创建一个新的对象的。比较一下System.out.println("String" =="String")和System.out.println(new String("String")==new String("String"))的结果吧
  10. 在遇到a++和++a的时候一定要小心
  11. 短路运算符||和&&一定要弄明白,如果短路运算符前面的条件为真的话那么后面的语句就会被丢弃不会被执行
  12. transient只能修饰变量,并且它不能和final static一起使用
  13. 如果你继承Thread你可以不实现public void run()方法,但是你实现Runnable接口的话必须实现这个方法
  14. 如果方法前面不加限制修饰符,那么它是在包内可见的。 protected的意思是包内可见并且子类可见。
  15. String覆盖了Object的equals方法,这个方法比较的是String实例的内容,==比较的是地址。
  16. Byte, Double, Float, Integer, Long, Short 继承自Number,Character、Boolean继承自Object。
  17. 有时间应该看看几个包装类的构造函数考试的时候会涉及到
  18. 这样的声明是正确的int[][] array = new int[3][];
  19. 你应该很清楚switch语句的结构,并且switch()你能接受int char的参数
  20. 如果你覆盖了public boolean equals(Object object)方法那么你应该同时覆盖public int hashCode()
  21. instanceof 既可以用在class也可以用在interface
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值