java scjp考试_通过Java认证 SCJP 考试之精辟总结

这篇博客详细讨论了Java编程的一些关键概念,包括数据类型、条件判断、循环、类与对象、异常处理、接口和内部类。强调了switch语句的限制、方法重载与覆盖的规则、构造器的使用,以及接口的实现。此外,还提到了内部类对外部类成员的访问权限和匿名类的特点。
摘要由CSDN通过智能技术生成

1.switch里面只能是short,int,char,byte的.

2.if (a="a") 编译错, if(a=false)编译ok,原因是a=false的a代表了个boolean值

3.这种写法Outer.Inner i = new Outer().new Inner(); OK!

4.文件里, 8 默认是int, 8.0默认是double

5.八进制是 0开头,不是O(英文o)

6.byte -128~127 ,-128是二进制的多少?

7. -1>>32还是-1, -1>>>32为什么还是-1?

8. char c='c'; String s ="s"; s+=c;结果是 sc!!!

9. boolean b1=true; boolean b2=true; System.out.println(b1 b2); 结果是true.编译没错!

10.java的默认import包有哪些?

类和对象(Class and Object)

0.最外层的类可以声明成final:final class a{} ok!,但是不能是private和static的.

1.overload是同类里同样的方法名,override是父子的继承

2.override的返回结果必须一样,否则编译错哦

The return type of an overriding method is identical to the return type of the method it overrides.

2.1 override的modifier可以扩大,但是不能缩小.比如父类private void test(){}

子类:public void test(){} ,没问题;如果反了,就死翘翘了!

3.super.super(),靠,错的,没这么写的

4.static和非static之间永远无法override!

5. 看程序

以下是引用片段:

public class A{

void test1() throws baseEx{hi();}

void hi(){System.out.println("say hi,a");}

}

class AA extends A{

void hi(){System.out.println("say hi,aa");}

}

class test{

static void main(String b[]) throws Exception{

A a = new AA();

a.test1();

}

}

结果是,"say hi,aa",这说明什么?说明,方法永远跟着类的原来面目走;而,变量恰恰相反!

6.一个非抽象方法死活也别想override成一个抽象方法

7.override的子类的方法抛出的的异常只能是父类方法抛出异常的子异常类,或者无!

8.构造器不能是native,final,static,synchronized的,可以是public,private,什么都没有的,呵呵

9.构造器函数里还可以写return呢,但后面什么都不许有,甚至null(这不是废话吗,哈哈)

10.构造器不能返回值.这大家都知道,但如果有个"构造器"反值了,别紧张,它就不是构造器喽,只是个普通函数

11.super();this();这两个函数只能在构造函数里调用.

12,成员变量声明时候赋值,比构造函数还早.int i=1; ealier than Test(){}

13.方法的参数变量可以是final.

14. hashCode返回一个int

15. void wait() throws InterruptException wait扔InterruptException异常

16. java.lang.Void 是void的包装类

17. Byte,Interger,Double...所有的跟数有关的包装类都是继承于Number

接口Interface)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

1.接口的所有方法默认都是public,abstract和non-static的

2.接口的所有变量默认都是public,static,final的.所以,接口的变量不能改值,在它的实现类里.

3.接口的实现类实现的方法必须和接口的方法抛出同样的异常,不许是子类,这和override不一样!同样,如果接口方法没有抛,实现方法也不能抛

4.实现类实现的方法必须显式的声明成public,什么都不写都不行,啊!!!

5.接口不能声明成final,要不它怎么被实现呢(这好像又是废话啊

6.一个类实现两个接口,如果两个接口有相同的方法,实现类就实现这个方法,没问题的.

内嵌类Inner Class)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

1.内嵌类可以访问outer类的任何变量,包括私有的.

2.静态inner类,只能访问outer类的任何static变量

2.1内嵌类可以是final,abstract的

3.**,方法内的内嵌类不能为static: void test(){ static class A{}} XXXXX!!!!

4.**,方法内的内嵌类也不能带任何modifier,void test(){ public class A{}} XXXXX!!!!

5.**,方法内的内嵌类只能访问方法内的final变量,但是,可以访问outer类的任何变量.

6.匿名类不能有构造器,但声明时候带参数,相当于构造器的参数传递.

class ABC{}

class ABCD{private ABCD(int i){}}

ABC test3(){return new ABC(){};}

ABCD test4(){return new ABCD(3){};}

interface iii{}

iii test5(){return new iii(){};}

//class BCD extends ABCD{} compile error,因为,

看上面就知道,new iii(){};实际上匿名类实现了iii接口;new ABC(){};实际上是匿名类继承了ABC.

8.???

class A {private A(){System.out.println("a!");}}

class B extends A{}

**,没错!B实例的时候会主动调用父类A的构造,即使是private的,看来也没问题!!!

9.内部类可以有synchronized方法,那么锁是这个内部类,跟外部类没一点关系,内外分别的,在锁的问题上.

10.外部类不能通过this被访问,this这时候应该指的是内部类,享用外部类的成员就直接用,不用加任何限定词

11.如何用this呢?请看:

以下是引用片段:

class Outer{ int i;

class Inner{

class InnerInner{

Outer.this.i=1;

}

}

}

}

看见了吧,类名.this.变量名,可以引用到i,第一次看到吧,嘿嘿,孤陋寡闻.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值