String数据类型比较.pdf
文本预览下载声明
Java
Java
JJaavvaa数据类型比较
Java
Java
JJaavvaa数据类型分为两种。一种为基本数据类型(或为简单数据类型、主要数据类型),另
外一种为引用数据类型(或为扩展类型)。基本数据类型存储的是具体的值,而引用数据类
型存储的是对象的引用。
Java (1) == (2) equals()
Java (1) == (2) equals()
在JJaavvaa中通过两种方式可以比较两个数据是否相等:((11))使用操作符“====”;((22))使用eeqquuaallss(())
方法。
� 基本数据类型比较
在Java中,基本数据类型比较一般使用操作符“==”进行比较。因为原始类型(int、
char 等)不是对象,因此只能用操作符“==”进行比较。
� 引用数据类型比较
Java中没有内置字符串类型,在标准 Java 库中有一个名为String 的预定义类,将字
符串作为预定义的对象处理,并且提供了丰富的功能来处理字符串。而比较两个对象的
值,则使用equals()方法,因为操作符“==”比较的是两个对象的本身而非对象的内容。
对象的比较
String 是Java中一个最常用的不可变对象。其对象的创建有两种方式:
其一:String str=abc;
其二:String str=new String(abc);
� 两者都为第一种方式创建对象的比较
String str1=abc;
String str2=abc;
System.out.println(str1==str2);
首先定义一个名为str1 的String类的对象引用变量。接着,在栈内存中搜索是否存在
这样一个存储单元,用来存放“abc”的值。若没有,则开辟一个新的存储单元存放“abc”
的值。然后,创建一个新的String类的对象x。并将对象x 指向新开辟的存储单元,同
时在栈内存中标记这个引用的对象x。如果已经存在值为“abc”,则搜索对象x,并返
回该对象x的地址。最后,将str1指向对象x 的地址。Str1指向存在栈中数据的引用。
String str2=abc;在栈内存中创建了一个对象引用变量str2,之前栈内存中已经有一个
对象x 值为“abc”,所以str2直接指向对象x,因此JVM 创建了两个对象引用变量str1
和str2,但仅创建了一个对象x,并且两个引用都指向了对象x,所以比较的结果为true。
� 两者都为第二中方式创建对象的比较
String str1=new String(abc);
String str2=new String(abc);
System.out.println(str1=str2);
系统会在栈内存中分别创建两个对象引用变量str1和str2,接着用new 关键字在栈内
存中创建两个对象,因为new 运算符在每一次运算是,都会产生一个新的对象,每一
个新的对象都有自己的内存和地址。所以两个引用变量分别表示了两个不同的对象。因
此比较的结果为false。
� 两者各自创建的对象比较
String str1=abc;
String str2=new String(abc);
System.out.println(str1==str2);
据前面的的分析,我们可以看出这个比较的结果为false。系统在栈内存中创建了两个
对象引用变量str1、str2.其中str1指向栈中的一个对象,str2指向堆中的一个对象。即
两个引用分别指向不同的两个对象,所以比较结果为false。
� 第一种声明方式的分割比较
String str1=abc;
String str2=a+bc;
System.out.println(str1==str2);
Java ,
显示全部