学习Java已经有一段时间了,本次考核对之前学习的JavaSE进行了一次测验,在此我将之前学习中存在的问题做以下汇总:
1.关于JAVA中基本数据类型的所占字节、默认值及对应的包装类做总结
首先分为四类:整数型、浮点型、布尔型、字符型
基本数据类型 | 字节数 | 默认值 | 包装类 |
byte | 1字节 | 0 | Byte |
short | 2字节 | 0 | Short |
int | 4字节 | 0 | Integer |
long | 8字节 | 0 | Long |
float | 4字节 | 0.0 | Float |
double | 8字节 | 0.0 | Double |
boolean | 1字节 | false | Boolean |
char | 2字节 | '0' | Character |
2.关于接口:
1)接口中的方法默认是抽象的(public abstract 默认不写)
2)抽象方法必须在抽象类中, 而抽象类中的方法不一定都是抽象方法,也可以是静态方法
3)接口中的属性都是静态变量(public static final 默认不写)
3.关于下面代码执行顺序正确的顺序应是:
静态代码块>构造代码块>构造函数
4.遍历数组的两种方法是:普通for循环、for-each循环
for-each循环:
String str[]=new String[]{"abcd","efg","hijk"};
for(String item:str){
System.out.println(item);
}
5.运行结果为:4
public static int divide(){
int i = 3;
try {
int a = 10/0;
return i;
} catch (Exception e) {
i = 4;
return i;
}finally{
i = 5;
}
}
当try-catch语句中有return时,return 语句会暂存变量值,然后执行 finally 代码块。
6.以下代码运行结果是:false、false、true
public class Test1 {
public static void main(String[] args) {
Integer a = new Integer(3);
Integer b = 3;
Integer f1 = 100, f2 = 100;
int c = 3;
System.out.println(a == b);
System.out.println(a == c);
System.out.println(f1 == f2);
}
}
解析:
(1)不管是new创建的Integer对象,还是通过直接赋值Int值创建的Integer对象,它们与Int类型变量通过“==”进行比较时都会自动拆封装变成Int类型,所以Integer对象和Int变量比较的是内容大小。
例如:int a = 100;Integer b = 100;Integer c = new Integer(100);a == b == c为True。
(2)new创建的Integer对象和直接赋Int值创建的Integer对象相互比较
这两种Integer对象通过“==”比较的都是内存地址。
(3)赋Int值创建的Integer对象相互比较
当Int值在-128—127之间时,两个Integer变量引用的是IntegerCache中的同一个对象,比较的内存地址相同。
当Int值不在以上范围时,两个Integer对象都是通过new创建的,比较的内存地址不同。
7.
class A {
static {
System.out.print("1");
}
public A() {
System.out.print("2");
}
}
class B extends A{
static {
System.out.print("a");
}
public B() {
System.out.print("b");
}
}
class Test2 {
public static void main(String[] args) {
A ab = new B();
ab = new B();
}
}
以上代码运行结果是:1a2b2b 。
解析:创建对象时构造器的调用顺序是:先初始化静态成员,然后调用父类构造器,再初始化非静态成员,最后调用自身构造器。
8.“==”和equals 最大的区别是
1)“==”是运算符,如果是基本数据类型,则比较存储的值;如果是引用数据类型,则比较所 指向对象的地址值。
2)equals是Object的方法,比较的是所指向的对象的地址值,一般情况下,重写之后比较的 是对象的值。
9.成员变量与局部变量的区别
10.构造器不可被重写
因为重写的定义是对从父类继承的方法进行操作,而构造器无法被继承所以无法重写