`

Java认证之总结

 
阅读更多

Java认证之总结


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包有哪些??????? java.lang.*

类和对象(Class and Object)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0.最外层的类可以声明成final: "$file a":<final class a{}>,但是不能是private、protected和static的.
1.overload是同类里同样的方法名、参数类型、顺序或个数不同,override是父子的继承
2.override的返回结果必须一样,否则编译错哦:)
override的modifier可以扩大,但是不能缩小。比如父类private void test(){} 子类:public void test(){} ,没问题;如果反了,就死翘翘了!
override抛出的异常只能是父类抛出异常的子类,或不抛出异常
3.super.super(),靠,错的,没这么写的。调用方法可以用super.method(),但不能用super.super.method()
4.static和非static之间永远无法override!
5.看程序
class A{
void test1(){hi();}
void hi(){System.out.println("say hi,a");}
}
class AA extends A{
void hi(){System.out.println("say hi,aa");}
}
public class test{
public static void main(String b[]) throws Exception{
A a = new AA();
a.test1();
}
}
结果是,"say hi,aa",这说明什么?说明,方法永远跟着类的原来面目走;而,变量恰恰相反!
若两个hi()都声明为static,则输出“say hi, a”,因为static方法不能overrided,只是隐藏而已。
若父类的hi()声明为private,则输出“say hi, a”,原因不知,记住就是!
6.一个非抽象方法死活也别想override成一个抽象方法
7.override的子类的方法抛出的的异常只能是父类方法抛出异常的子异常类,或者无!
8.构造器不能是native, final, static, synchronized的,可以是public, private,什么都没有的,呵呵
9.构造器函数里还可以写return呢,但后面什么都不许有,甚至null(因为其没有返回值)
10.构造器不能返回值.但如果有个"构造器"反值了,别紧张,它就不是构造器喽,只是个普通函数
11.super();this();这两个函数只能在构造函数里调用,而且必须在第一行
12.成员变量声明时候赋值比构造函数还早. int i=1; earlier than Test(){}
13.方法的参数变量可以是final,不能有访问控制修饰符(public等)和static
14.hashCode返回一个int,对象的内存地址
15.void wait() throws InterruptException,wait扔InterruptException异常
16.java.lang.Void 是void的包装类
17.Byte,Interger,Double...所有的跟数有关的包装类都是继承于Numeric

接口:(Interface)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1.接口的所有方法默认都是abstract(没有方法体)和non-static的
2.接口的所有变量默认都是static, final的,所以接口的变量在它的实现类里不能改值
3.接口的实现类实现的方法必须和接口的方法抛出同样的异常,不许是子类,这和override不一样!
同样,如果接口方法没有抛,实现方法也不能抛。
4.Runnable接口有一个run()方法,实现类实现的方法必须声明成public void run(){…}
5.接口不能声明成final,要不它怎么被实现呢(这好像又是废话啊:)
6.一个类实现两个接口,如果两个接口有相同的方法,实现类就实现这个方法,没问题的.
7.接口不能实例化,只能由类/接口实现
8.接口继承接口用extends,类实现接口用implements
9.接口只可声明为public或default,前面有修饰符abstract也可以编译

内嵌类:(Inner Class)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1.内嵌类可以访问outer类的任何变量,包括私有的
2.静态inner类,只能访问outer类的任何static变量(任何静态content只能访问静态的)
3.内嵌类可以是final, abstract的
4.方法内的内嵌类不能为static, void test(){ static class A{}} XXXXX!!!!
5.方法内的内嵌类也不能带任何modifier。 void test(){ public class A{}} XXXXX!!!!
6.方法内的内嵌类只能访问方法内的final变量,但是可以访问outer类的任何变量
7.匿名类不能有构造器,但声明时候带参数,相当于构造器的参数传递。
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{
void Test(){
Outer.this.i=1;
}
}
}
}
看见了吧,类名.this.变量名,可以引用到i,第一次看到吧,嘿嘿,孤陋寡闻。
12.注意这两种写法都可以
Outer.Inner i = new Outer().new Inner();
或者,Outer o= new Outer();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,是Thread的静态变量
5.Thread.yeild( );是静态方法,所以,使用格式是Thread.yield()或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=<double random()<1
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,toRadius()度转化为弧度
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)是1234,注意不是subString( )
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.char /u0061=´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=0! i=++i; 结果为1 i=--i;结果为-1
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)(b1+b2);
7.XOR一样的为0,不一样为1
8. x == Float.NaN编译错,应该是Float.IsNaN(x)
9. x == Double.POSITIVE_INFINITY编译可以
10.-1是1111.... 1111, <<永远右补零,>>正补零,负补一,>>>恒补零
-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或者-INF
0/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)
b1 = b2==b3 && b4==b5; //b1=((b2<=b3)&&(b4==b5));
b1 = b2==b3==true; //b1=(b2==(b3==true));
b1 = b2==b3==b4都是对的!
6. 1>>1 是0
7. %= <<= =>> =>>>都是合法符号
8. --1-10*4 这种写法没错,就是 (--1)-10*4
9. k=1;++k + k++ + k ;结果是7,相当于 (++k)+(k++)+(k)=2+2+3
10.标号不能标示声明.
hi:
if (b){
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的!!!native方法不能是abstract
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! 静态方法是不能overrided的,只是隐藏
区别于没有声明为static的情况(输出hi,child)
7.静态方法可以通过类的实例调用.
new Child().test(); 和 Child.test(); 都OK!
8.transient只能用在类的成员变量上,不能用在方法里
9.transient变量不能是final和static的
10.native方法可以是private, final的,没有方法体,不能为abstract,

流程控制
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1.不可到达的语句声明为错:while(false){} ;for(;false;){};if(false){}都无法编译
2.for(第一部分;;)的第一部分可以用来声明和赋值,如for(int i=0;i<5;i++)
3.byte b; switch (b) { 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的,噢噢~,错喽!!
错误:boolean b=-1;(只能是ture或false) char c=17c;(没有c后缀) byte b=10b;(没有b后缀)
int i=019;(八进制最大为7)
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; 对! 对象可以通过显式来转成一个数组.


分享到:
评论

相关推荐

    Java认证之精辟总结.doc

    Java认证之精辟总结.doc

    Java 认证之 精屁总结

    Java 认证之 精屁总结 Java 认证之 精屁总结

    Java认证之精辟总结

    Java认证之精辟总结.doc

    java 面试题 总结

    JAVA相关基础知识 1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用...

    Java程序员认证-SCJP模拟题

    不错的总结,如果有想考证的朋友,不妨一试!

    Java安全知识点总结

    身份认证和授权:Java应用程序的身份认证和授权机制是确保只有经过验证和授权的用户能够访问受限资源的关键。常见的身份认证方式包括用户名密码认证、令牌(Token)认证和双因素认证等。 密码存储和处理:Java应用...

    九阳神功之java面试题

    九阳神功之java面试题 总结 很长,需要慢慢看 找工作前看看还是蛮有用的

    java认证所有课程

    说到底,所有的组件都继承了java.awt.Component类,而handleEvent()就在java.awt.Component类中。 然而,这种模型也存在缺点: - 事件只能由产生这个事件的组件或包含这个组件的容器处理。这个限制违反了面向对象...

    OSPF 认证完整总结

    OSPF的认证有2种类型(确切说是3种),其中type0表示无认证,type1表示明文认证,type2表示MD5认证。明文认证发送密码进行认证,而MD5认证发送的是报文摘要

    Java网络高级编程

    第10章介绍Java安全体系结构、密钥、消息摘要、数字签名、访问控制、安全套接口SSL、主体身份认证JAAS和公共密钥构架PKI技术。第11章简明地介绍移动代理编程技术。 本书可作为高校计算机应用、网络信息、电子商务...

    java深度历险

    总结 9 参考资料 10 JAVA类的加载、链接和初始化 11 JAVA类的加载 11 JAVA类的链接 12 JAVA类的初始化 13 创建自己的类加载器 14 参考资料 15 JAVA线程:基本概念、可见性与同步 16 JAVA线程基本概念 16 可见性 17 ...

    java 垃圾回收机制详细介绍

    垃圾收集器是Java语言区别于其他程序设计语言的一大特色。它把程序员从手工回收内存空间的繁重工作中解脱了...鉴于此,笔者总结了这个垃圾收集器的专题,希望对广大Java技术的爱好者和准备认证考试的考生们有所帮助。

    JAVA面向对象编程(孙卫琴).z01

    本书内容由浅入深,紧密结合实际,利用大量典型实例,详细讲解Java面向对象的编程思想、编程语法和设计模式,介绍常见Java类库的用法,总结优化Java编程的各种宝贵经验,深入阐述Java虚拟机执行Java程序的原理。...

    https单项认证总结

    https单项认证总结,一些自己的总结,希望有用,谢谢

    JAVA面向对象编程(孙卫琴).z04

    本书内容由浅入深,紧密结合实际,利用大量典型实例,详细讲解Java面向对象的编程思想、编程语法和设计模式,介绍常见Java类库的用法,总结优化Java编程的各种宝贵经验,深入阐述Java虚拟机执行Java程序的原理。...

    java面试题目与技巧1

    │ │ ├─java认证课程 │ │ │ c01-04.doc │ │ │ C05.doc │ │ │ C06.doc │ │ │ C07.doc │ │ │ C08.doc │ │ │ c09.doc │ │ │ c10.doc │ │ │ c11-15.doc │ │ │ Desktop_.ini │ │ │ │ ...

    java面试题及技巧4

    │ │ ├─java认证课程 │ │ │ c01-04.doc │ │ │ C05.doc │ │ │ C06.doc │ │ │ C07.doc │ │ │ C08.doc │ │ │ c09.doc │ │ │ c10.doc │ │ │ c11-15.doc │ │ │ Desktop_.ini │ │ │ │ ...

    Java JDK7学习笔记-光盘

    《Java JDK7学习笔记》是作者多年来教学实践经验的总结,汇集了教学过程中学生在学习java时遇到的概念、操作、应用或认证考试等问题及解决方案。《Java JDK7学习笔记》针对java se 7新功能全面改版,无论是章节架构...

    scjp310-065官方认证资料总结(精华)

    个人总结。。。秒杀一般的java面试。 scjp310-065官方认证资料总结(精华)

Global site tag (gtag.js) - Google Analytics