day02
1、下面的程序有问题吗,如果有,在哪里呢?
byte b1 = 3;
byte b2 = 4;
byte b3 = b1 + b2;
byte b4 = 3 + 4;
输出b3会出现"可能损失精度",因为byte类型的b1加上byte类型的b2,会自动转换为int类型,用byte接收是不行的,要用int接收或者long啊这些的。
day03
2、 short s1 = 1;
s1 = s1 + 1;
short s2 = 1;
s2 += 1;
请问上面的代码哪个有问题?
第一个有问题,md还是一样的道理,可能损失精度,需要注意的是s2之所以可以执行,是因为他隐含了自动强制转换哦。
day04
3、switch语句的表达式可以是byte吗?可以是long吗?可以是String吗?
可以
不可以
JDK7以后可以
day08
4、 A:Override和Overload的区别?Overload是否可以改变返回值类型?
override是重写的意思,方法重写也称方法覆盖,是指方法名和参数个数以及类型(包括返回值类型)都相同,子类继承自父类可以重写方法,也可以不重写。
overload是重载的意思,方法重载是指方法名相同,但具有不同的参数个数和参数类型(还有返回值类型),体现了多态性;
B:this和super的区别和各自的作用?
this是指当前类的对象,而super是指当前类的父类的对象。
day09
5、A:局部变量
a:基本类型 值不能发生改变
b:引用类型 地址值不能发生改变,但是对象的内容是可以改变的
B:初始化时机
a:只能初始化一次。
b:常见的给值
定义的时候。(推荐)
构造方法中。
day10
6、填空
class Outer {
public int num = 10;
class Inner {
public int num = 20;
public viod show() {
int num = 30;
System.out.println(num);
System.out.println(this.num);
System.out.println(Outer.this.num);
}
}
}
//30 //20 //10
7、不齐代码
匿名内部类的面试题(补齐代码)
interface Inter {
void show();
}
class Outer {
//补齐代码
public static Inter method() {
return new Inter() {
public void show() {
System.out.println("HelloWorld");
}
};
}
}
class OuterDemo {
public static void main(String[] args) {
Outer.method().show(); //"HelloWorld"
}
}
day11
8、==和equals()的区别?
A:==
基本类型:比较的是值是否相同
引用类型:比较的是地址值是否相同
B:equals()
只能比较引用类型。默认情况下,比较的是地址值是否相同。
但是,我们可以根据自己的需要重写该方法。
day12
9、字符串的面试题(看程序写结果)
A:==和equals()
String s1 = new String("hello");
String s2 = new String("hello");
System.out.println(s1 == s2);
// false
System.out.println(s1.equals(s2));
// true,String类已经重写了equals()方法
String s3 = new String("hello");
String s4 = "hello";
System.out.println(s3 == s4);
// false
System.out.println(s3.equals(s4));
// true
String s5 = "hello";
String s6 = "hello";
System.out.println(s5 == s6);
// true
System.out.println(s5.equals(s6));
// true
B:字符串的拼接
String s1 = "hello";
String s2 = "world";
String s3 = "helloworld";
System.out.println(s3 == s1 + s2);
// false
System.out.println(s3.equals((s1 + s2)));
// true
System.out.println(s3 == "hello" + "world");
// false 这个我们错了,应该是true
//字符串直接赋值的方式是先到字符串常量池里面去找,如果有就返回,没有,就创建并返回
System.out.println(s3.equals("hello" + "world"));
// true
|
|