测试小结:
1.面向对象编程的特点:继承性,封装性,多态性。
重载:在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)
必须不同,也就是说用同一个运算符完成不同的运算功能。
重写:根据需要在子类中重写父类的方法。
2.构造器必须与类同名,方法也可以与类同名。构造器在一个对象被new时执行。
3.Java类里的类都可以用public、protected、private、abstract修饰符修饰,final不能被继承
4.内部类的访问:(1)外部类名.内部类名 变量名=new 外部类名().new 内部类名();
(2)外部类名 外部对象名=new 外部类名();
外部类名.内部类名 内部类对象名=外部对象名.new 内部类名();
5.String不是关键字,assert(断言):用于单元测试
6.字符串的比较:"join"=="join";比较的是地址,常量都存在常量池中,它们指向常量池中的一个常量,所以地址相同
"join".equals("join");equals一般比较地址
"join"==new String("join");new会在堆中开辟空间,存放常量的地址,栈中存放这块空间的地址
"join".equals(new String("join"));比较的是值,在String中重写了equals()方法
7.整数默认为int型,小数默认为double型,若要定义long型,须在后面加L,若要定义float,在后面加lf
8.定义数组的几种形式:(1)int [] a=new int[5];
(2)int [] a=new int [] {0,1};
(3)int [] a={0,1};
注意:int [] a;只能用于声明时初始化
int [] arr;arr={0,1};//编译错误
9."+"用于字符串的拼接或数值的相加,从左向右,字符串优先
10.传值:传的是基本类型,通过参数传递给方法,传的是值的拷贝,影响函数体内的值而函数体外的值不变。
即把A的数值传给B,改变B,A不会随之改变。B只是存了与A一样的值。
public static void method1(int i){
i= i+3;
System.out.println("在方法内的值"+i);
}
public static void main(String[] args) {
int i =5;
method1(i);//传值
System.out.println("调用之后的值"+i);
}
传址:传入的是对象的引用,通过参数传给方法,传的是地址的拷贝,若在函数体内,改变传入地址所指向的对象数据,
会影响函数体外的对象。即把A的地址传给B,改变B,A同时跟着变,B存的是A的地址(类似电脑快捷方式)
public static void method(String[] i){
i[0]="abc";
}
public static void main(String[] args) {
String [] a = new String[2];
a[0]="aaa"; a[1]="bbb";
for(int i= 0; i < a.length; i++){
System.out.print(a[i] + " ");
}
method(a);//传址
System.out.println( " ");
for(int i= 0; i< a.length; i++){
System.out.print(a[i] + " ");
}
}
11.switch中能使用的数据类型(jdk1.7):short,byte,int,char,String,enum
不行的有:long,float,double,boolean
12. .Throwable的子类有Exception(异常)和Error(错误),异常分为编译时异常和运行时异常
编译时异常:FileNotFoundException,TimeOutException
运行时异常:NullPointerException(空指针异常),ClassNotFoundException(指定类不存在),ArrayIndexOutOfBoundsException(数组下标越界), IndexOutOfBoundsException(索引越界)
自定义异常:用户自己定义的,必须继承自Exception或其子类
try...catch用于捕获异常,一个try可对应多个catch,小的在前,大的在后,Exception是所有异常的子类,最后写。单独的try...finally也可以
13,包装类:包装流有个特点,必须有原始的具体的IO对象,不能独立使用,如ObjectOutputStream,ObjectIputStream,都必须要有具体的输出流
对象FileOutputStream,SockeObjectOutputStream,因为包装流本身不能真正完成输入或者输出过程,必须使用可以完成输入、输出流对象
作为动作的真正执行者,包装流不过简化了调用者在输入、输出过程中的一些数据处理和特殊要求。
包装者要和被包装者对象继承一个类或一个接口;包装者要有被包装者对象;对需要修饰的对象进行修饰
14.线程的状态:new RUNNABLE BLOCKED WAITING TERMINATED
15.接口可多继承接口,接口不能实现接口
16.抽象类和接口的比较
1.面向对象编程的特点:继承性,封装性,多态性。
重载:在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)
必须不同,也就是说用同一个运算符完成不同的运算功能。
重写:根据需要在子类中重写父类的方法。
2.构造器必须与类同名,方法也可以与类同名。构造器在一个对象被new时执行。
3.Java类里的类都可以用public、protected、private、abstract修饰符修饰,final不能被继承
4.内部类的访问:(1)外部类名.内部类名 变量名=new 外部类名().new 内部类名();
(2)外部类名 外部对象名=new 外部类名();
外部类名.内部类名 内部类对象名=外部对象名.new 内部类名();
5.String不是关键字,assert(断言):用于单元测试
6.字符串的比较:"join"=="join";比较的是地址,常量都存在常量池中,它们指向常量池中的一个常量,所以地址相同
"join".equals("join");equals一般比较地址
"join"==new String("join");new会在堆中开辟空间,存放常量的地址,栈中存放这块空间的地址
"join".equals(new String("join"));比较的是值,在String中重写了equals()方法
7.整数默认为int型,小数默认为double型,若要定义long型,须在后面加L,若要定义float,在后面加lf
8.定义数组的几种形式:(1)int [] a=new int[5];
(2)int [] a=new int [] {0,1};
(3)int [] a={0,1};
注意:int [] a;只能用于声明时初始化
int [] arr;arr={0,1};//编译错误
9."+"用于字符串的拼接或数值的相加,从左向右,字符串优先
10.传值:传的是基本类型,通过参数传递给方法,传的是值的拷贝,影响函数体内的值而函数体外的值不变。
即把A的数值传给B,改变B,A不会随之改变。B只是存了与A一样的值。
public static void method1(int i){
i= i+3;
System.out.println("在方法内的值"+i);
}
public static void main(String[] args) {
int i =5;
method1(i);//传值
System.out.println("调用之后的值"+i);
}
传址:传入的是对象的引用,通过参数传给方法,传的是地址的拷贝,若在函数体内,改变传入地址所指向的对象数据,
会影响函数体外的对象。即把A的地址传给B,改变B,A同时跟着变,B存的是A的地址(类似电脑快捷方式)
public static void method(String[] i){
i[0]="abc";
}
public static void main(String[] args) {
String [] a = new String[2];
a[0]="aaa"; a[1]="bbb";
for(int i= 0; i < a.length; i++){
System.out.print(a[i] + " ");
}
method(a);//传址
System.out.println( " ");
for(int i= 0; i< a.length; i++){
System.out.print(a[i] + " ");
}
}
11.switch中能使用的数据类型(jdk1.7):short,byte,int,char,String,enum
不行的有:long,float,double,boolean
12. .Throwable的子类有Exception(异常)和Error(错误),异常分为编译时异常和运行时异常
编译时异常:FileNotFoundException,TimeOutException
运行时异常:NullPointerException(空指针异常),ClassNotFoundException(指定类不存在),ArrayIndexOutOfBoundsException(数组下标越界), IndexOutOfBoundsException(索引越界)
自定义异常:用户自己定义的,必须继承自Exception或其子类
try...catch用于捕获异常,一个try可对应多个catch,小的在前,大的在后,Exception是所有异常的子类,最后写。单独的try...finally也可以
13,包装类:包装流有个特点,必须有原始的具体的IO对象,不能独立使用,如ObjectOutputStream,ObjectIputStream,都必须要有具体的输出流
对象FileOutputStream,SockeObjectOutputStream,因为包装流本身不能真正完成输入或者输出过程,必须使用可以完成输入、输出流对象
作为动作的真正执行者,包装流不过简化了调用者在输入、输出过程中的一些数据处理和特殊要求。
包装者要和被包装者对象继承一个类或一个接口;包装者要有被包装者对象;对需要修饰的对象进行修饰
14.线程的状态:new RUNNABLE BLOCKED WAITING TERMINATED
15.接口可多继承接口,接口不能实现接口
16.抽象类和接口的比较
区别 |
抽象类 |
接口 |
关键字 |
class abstract |
interface |
别的类用关键字 |
extends |
implements |
继承 |
单 |
多 |
实现 |
多 |
不能 |
字段 |
常量,普通,类的字段 |
类的字段(static) |
方法 |
普通方法,抽象方法 |
抽象方法 |
静态代码块 |
有 |
无 |
创建 |
不能直接实例化 |
不能直接实例化 |
17.静态变量(static):属于整个类,是公共的资源,可以用类名或对象去访问,在静态方法和普通方法中使用,加载类的时候加载
实例变量:属于某个对象,是私有的,通过对象名去访问,在普通方法中使用,新建对象的时候加载
18.IO的四大类:InputStream OutputStream Reader Writer
按流向分为输入流和输出流,按单位分为字节流和字符流
19. Sleep ()、suspend ()和 wait ()之间有什么区别
|
sleep(ms) |
Supend(暂停,挂起) |
wait(ms) |
所属 |
static类方法 |
对象方法 |
对象方法 |
使用要求 |
|
|
必须在同步里面 |
锁 |
不释放 |
不释放 |
释放 |
CPU |
释放 |
释放 |
释放 |
唤醒 |
时间到或中止 |
Resume(),开始 |
时间到或中止notify |