分享
 
 
 

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

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

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(b1b2); 结果是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,第一次看到吧,嘿嘿,孤陋寡闻.

12.注意这两种写法都可以

Class Outer.Inner i = new Outer().new Inner();

或者, Class o= new Outer(); Class Outer.Inner i=o.new Inner();

线程Thread)

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

?????去看Thread的API!!!!

1.线程启动必须通过start函数.

2.run函数不许也只能是public的.

3.线程有优先级从1到10,通过Thread.setPriority(int);来改变,不能超过10,否则会出现运行异常

4.线程优先级默认是5,即NORM_PRIORITY.????????NORM_PRIORITY是Thread的静态变量吗?

5.????Thread.yeild();是静态方法,所以,使用格式是Thread.yield();她强迫当前的进程放弃CUP.

6.sleep(1000),是说线程睡觉1秒,然后,进入Ready状态,注意,不是运行状态,它还要等OS来调度来获得CUP.

java.lang.*;

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

1.数组的科隆: int ia[][]={{1,2},null}; int ib[][]=(int[][])ia.clone();

2.什么是NaN?????然后看ceil(NaN),floor(NaN),...

3.Math.floor(-1.1f);//-2.0

Math.ceil(-1.1f);//-1.0

Math.round(-1.6d)//-2

4.0=

5.Math,Interger,Boolean...等类型包装类都是final的,不可继承

6.int round(float); long round(double);唉,round永远返回不了小数点

7.static double ceil(double)

8.static double floor(double)注意,ceil,floor的只有这个double版本,什么都转成double!

9.static double sin(double 弧度); 还有cos,tan

10. new String; ?可以是byte[];char[];String;StringBuffer

11. String的一些函数: int length(); char charAt(int); String toUpperCase(); String toLowerCase();

12. String("Abc").equals(String("abc"))不相等的,不然就不会有boolean equalsIgnoreCase(String)函数

13."012345678"是一个串的顺序号码,indexOf('1'),indexOf("1")都返回1,subString(1,5)是2345,嘿嘿:是的感觉

14, trim()连tab都退毛,\t\n java ,trim()一下就只剩下java了

15. 关于对象的科隆,去喳喳API??????????????????????

16. abcd.trim(),abcd + new String(ef)都是合理的写法

17. StringBuffer的3个构造器:()初始化容量为16,(int 初始化容量),(String),初始化容量为串长加上16

18. StringBuffer的一些函数: String toString();append();reverse();insert();delete(int start,int end);deleteCharAt

(int);setLength(int newLength);

19. String s=""; StringBuffer sb=new StringBuffer(); if (s==sb){}编译错!因为,s,sb类型不一样,不能比较 集合:

1.各接口和类的关系,只有最后一个是类

Collection:List:vector,ArrayList,LinkedList

Map:SortedMap:TreeMap

Collection:Set:SortedSet:TreeSet

Map:HashTable

Collection:Set:HashSet

基础base)

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

1.java application的main可以不是public的.但必须是static的

2.一个文件只能有一个public类,而且还得跟文件名一样,包括大小写

3.变量只能是字母,$,_开头,接下来的第二个可以是,数字

4.ch\u0061r='a'; char \u0063='b'; char c='\u0063';都是合法的

5.1e-5d,合法.e-5d不合法,必须有前面的系数

6.int[] i[]={null{1,2}}正确! int i[]={1,2,3,} 正确!","和没有的效果一样

7.局部array,跟变量一样,使用前要初始化

8.main方法可以为final

操作符和分配符(Operator and Assignment)

1.System.out.printl(1+2+"3");//33 System.out.printl("1"+2+3);//123

2.int i=0; i=i++;i=i++;i=i++; 结果,i=0!

3.int i[]; index=0; i[index]=index=5; 结果是,i[0]=5;!!!

4.byte b=10;可以,因为,10可以被自动从int转成byte

5.接下来,byte b=b+10;不可以!!因为,10+b后的int无法被自动从int转成byte,问我,我也不知道为什么!靠!

6.byte b1 = 4; byte b2 = 6; b1 = b1 + b2;错!编译错!b1 + b2后,必须强制转成byte,b1x1+b2);

7.XOR 一样的为0,不一样为1 1,1=0;0,0=0;1,0/0,1=1

8. x == Float.NaN编译错,应该是Float.IsNaN

9. x == Double.POSITIVE_INFINITY编译可以

10.-1是1111.... 1111,<<永远右补零,>>正补零,负补一,>>>恒补零

10.1 -1>>多少位都是-1 ; 1<<31变成了最小负数,1000....0000

11.最大正数是01111....1111

12.最小负数是1000....0000(-2147483648)

13. a instanceof b,b必须是类/接口,不能是实例

-------补充------------------------------

1. byte,short,char 都存在 var = -var;编译错误,因为,这时候的-var已经自动转成个int类型了

2. int/0会扔出ArithmeticException double,float/0得INF或者-INF0/0得NaN

3. int a-b-c;是不符合命名规则的变量名????编译会出错.

4. char a='\u0001';对! char b=\u0001;编译错!

5. boolean b1,b2,b3,b4,b5;

b1 = b2==b3;

b1 = b2<=b3 && b4==b5;

b1 = b2==b3==true

都是对的!

b1 = b2==b3==b4 XXXXXXX编译错!

6. 1>>1 是0

7. %=, ==, =都是合法符号

8. --1-10*4 这种写法没错,就是 (--1)-10*4

9. k=1;++k + k++ + +k ;结果是7,相当于 (++2)+(2++)+(+3)

10.标号不能标示声明.

hi:

if {

break hi;

//break hi1;不行,不能向后调转

}

//hi1:不行,不能放在声明前

int i;

hi1:

i=1;

11.public static void main(String s[]) throws Exception{}可以噢,main可以扔出异常

12. hi:

if(b==true){break hi;}

break 标号,可以用在if里面.别的任何都不行,包括break,continue 标号.

13.int x = i*-j; **,没问题的!!!编译没错! int x = i*j++ + +i++; 这个也没问题,

变量修饰符(Modifier)

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

1.最外面一层的类不能声明成protect和pravite的

2.同一个类的两个实例之间可以访问彼此的私有方法和私有变量,酷

3.protect和无修饰符的具体区别???????关于外包可以访问被子类访问的是哪个?

4.成员变量被修饰成final后,必须声明时候就赋初值或者在构造器里面赋初值,别指望她可以得到default值.

5.抽象方法不能是static的!!!

6.静态方法将随着类的变化而变化,看例子:

class Parent{

static void test(){System.out.println("hi,parent")};

}

class Child extends Parent{

static void test(){System.out.println("hi,child")};

}

Parent p = new Child();

p.test(); //打出来的是hi,parent!

7.静态方法可以通过类的实例调用. new Child().test(); 和 Child.test(); 都OK!

8.transient只能用在类的成员变量上,不能用在方法里.

9.transient变量不能是final和static的

10.native方法可以是private,abstractd的

流程控制

1.不可到达的语句声明为错:while(false){} ;for(;false{};if(false){}都无法编译

2.for(第一部分;的第一部分可以用来声明或者赋值,但不能两者都

3.byte b; switch { case 200: // 200 not in range of byte,因为200超过b的范围,将编译错误

4.带标签的continue回达到标签的位置,从新进入紧接在标签后面的循环

5.带标签的break会中断当前循环,并转移到标签标示的的循环的末尾

转型和上溯(Converting and Casting)

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

Binary operators convert the smaller(less precise) operand to the type of the larger(more precise) operand.

All operators will convert things smaller than ints to ints or larger. This includes char 's!

1.byte,char,short默认转成int

2.byte,short,int,long,float,double char^ 这是默认可以转型的方向,反了必须要显式cast! 特别注意:long->float是默认的,别看

long64,float32,还有就是看得出来,char和 byte,short之间无法互相默认转换

3.float f=1/3; OK!float f=1.0/3.0;编译出错,因为1.0/3.0结果是double的,噢噢~,错喽!!

4.int i=1; byte b=i;错!需要显式cast. final i=1; byte b=i;就ok!

我也不知道为什么,final就可以.而且,据我实验只有int和byte的关系这样,其他不行.

5.int i[]; Object[] obj=i;错! Object obj=i;对!

数组只能转成Object,而不能是Object[]

6.int i[]; Object[] obj;i=(int[])obj; 对! 对象可以通过显式来转成一个数组.

I/O

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

1.File类的一些重要方法:isFile();isDirectory();String[] list();exists();getAbsolutePath();getParent();

2.通过delete();mkdir();rename(File newname);可以操纵文件,但是却改变不了文件的内容

2.1 File类无法改变当前目录,除非重新创建一个File对象.

3.InputStreamReader(InputStream in,String encodingName);

OutputStreamReader(OutputStream in,String encodingName);

Encoding: 8859_1是Latin-1,包含ASCII

4.关闭close一个流,就自动调用了flush.

5.System.in,System.out,System.err,由JVM自动创建

6.RandomAccessFile(File file,String mode);mode有,r,rw

阅读关于 Java认证 SCJP 考试 精辟总结 的全部文章

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有