您的位置:首页 > 编程语言 > Java开发

【Java】Java基础知识3. tip21~30

2015-02-06 15:32 309 查看
1.Java中equal和==的区别是什么?

public class Test1{
    public static void main(String args[]){
            String a="1234";
            String b="1234";
            String c = new String("1234");
            System.out.println(a==b);
            System.out.println(a==c);
            System.out.println(a.equals(c));
    }
}


true false true
true true false
true false false
true true true

答案:A
equal:是用来比较两个对象内部的内容是否相等的。

==:是用来判断两个对象的地址是否相同,即是否是指向同一个对象。

new一个就是新地址
 
以下程序段的输出结果为:

public class EqualsMethod
{
    public static void main(String[] args)
    {
        Integer n1 = new Integer(47);
        Integer n2 = new Integer(47);
        System.out.print(n1 == n2);
        System.out.print(",");
        System.out.println(n1 != n2);
    }
}


false,false
false,true
true,false
true,true

答案:B

因为两次new() 分出的内存也不同

2.在jdk1.5的环境下,有如下4条语句:

Integer i01 = 59;
int i02 = 59;
Integer i03 =Integer.valueOf(59);
Integer i04 = new Integer(59)。

以下输出结果为false的是:
System.out.println(i01== i02);
System.out.println(i01== i03);
System.out.println(i03== i04);
System.out.println(i02== i04);

答案:C

JVM中一个字节以下的整型数据会在JVM启动的时候加载进内存,除非用new Integer()显式的创建对象,否则都是同一个对象
所有只有i04是一个新对象,其他都是同一个对象。所有A,B选项为true
C选项i03和i04是两个不同的对象,返回false
D选项i02是基本数据类型,比较的时候比较的是数值,返回true 。有基本数据类型的比较的都是值。
 

3.根据下面的程序代码,哪些选项的值返回true?

public class Square {  
    long width;  
    public Square(long l) {   
        width = l;  
    }  
    public static void main(String arg[]) {   
        Square a, b, c;  
a = new Square(42L);   
        b = new Square(42L);   
        c = b;  
        long s = 42L;  
    } 
}


a == b
s == a
b == c
a.equals(s)

答案:C

a = new Square(42L);   
 b = new Square(42L);   

这里new了两个对象,所以a,b不是同一个引用a!=b

s的类型跟a,b不同类型,所以s!=a,s!=b

 c = b;

这里b,c是同一个对象的引用,所以b==c是true


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: