| 
 
| 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
 
 
 
 
 
 
 
 
 
 
 | 
 |