java中一些小知识点(面试)

##看别人博客,发现这些题目还是有一定的迷惑性的,因此就在博客中记录下来。
3)下列选项中,哪一项能够正常编译: C

    A:int i = Integer.valueOf(1.2); 
    理由:Integer.valueOf(int/String);只有这两种参数
    B:char c = "a";不能将字符串类型转化为字符型
    C:byte b = 127;     
    D: float f = 1.3;理由:不能将double型转换为float类型

4)下面代码的运行结果是:A

       public static void main(String[] args){

             String s;

             System.out.println("s = " + s);

       }

    A:由于String s没有初始化,代码不能通过编译; 
    B:抛出NullPointException异常
    C:输出s=; 
    D:输出s = null;

要是我们没有掌握好,我们可能就会选D这个错误的选项,上题中的选择A的原因就是,局部变量必须得初始化;
但是,如果我们某个类有一个String类型的属性,默认就用“null”进行初始化,当我们进行这个属性的输出的时候就选择D这个选项。

6)上面语句一共产生了多少个对象? 答案:A

String a = “aaaaaa”;
String b = a.substring(2, 3);
String c = a.toString();
String d = new StringBufer(a).toString();
A:3个; B:4个 C:5个 D:6个

上题解析:第一个是一个对象,第二个也是一个对象,第三个与第一个对象是同一个对象(这个就是一个字符串的缓冲池的概念在里面),第四个又是一个新对象(因为他用new就是在强调我想要一个新对象,不要旧的);如果还有这样一个表达式:String str=new String(“aaaaaa”);这个也是一个新的对象(只要使用new产生的对象均是新的对象),也上面的对象都不一样。

7、下面程序的输出结果是:C

    A:输出null;    B:抛出异常    C:输出0;    D:输出1
package org.wrh.programbeautiful;
public class TestDemo01 {
    private static  int i;
    public static void say(){
        System.out.println(""+i++);
    }
    public static void main(String[] args) {

        ((TestDemo01)null).say();//这个不知道为什么输出为:0
        // say();这个结果不用多少为 1,
    }

}  

将null类型强制转换为TestDemo01类型,然后调用TestDemo01类中的say函数,但是为什么输出为0呢???

懂的人可否给我讲解一下,谢谢

上面的题目来源见这里

你可能感兴趣的:(java)