String類和StringBuffer類主要用來處理字符串,這兩個類提供了很多字符串的使用處理方法。String類是不可變類,表示對象所包含的字符串類不能改變。StringBuffer類是可變類,其對象所包含的字符串內容可以被添加或修改。
關於這兩個類處理字符串的常用方法請參考:http://www.runoob.com/java/java-string.html
http://www.runoob.com/java/java-stringbuffer.html
下面主要介紹:equals和==在字符串和非字符串使用方面的區別
class Test{ int x=1; } public class EqualTest{ public static void main(String args[]){ String a1,a2,a3="abc",a4="abc"; a1=new String("abc"); a2=new String("abc"); System.out.println("a1.equals(a2): "+(a1.equals(a2))); System.out.println("a1==a2: "+(a1==a2)); System.out.println("a1.equals(a3): "+(a1.equals(a3))); System.out.println("a1==a3: "+(a1==a3)); System.out.println("a3.equals(a4): "+(a3.equals(a4))); System.out.println("a3==a4: "+(a3==a4)); System.out.println("----------------------------"); Test one=new Test(); Test two=new Test(); System.out.println("one.equals(two): "+(one.equals(two))); System.out.println("one==two: "+(one==two)); one=two; System.out.println("賦值後:"); System.out.println("one.equals(two): "+(one.equals(two))); System.out.println("one==two: "+(one==two)); } }
1. ==可以用來比較基本類型和引用類型,判斷內容和內存地址
2. equals只能用來比較引用類型,它只判斷內容。
java中的數據類型,可分為兩類:
1.基本數據類型,也稱原始數據類型。byte,short,char,int,long,float,double,boolean
他們之間的比較,應用雙等號(==),比較的是他們的值。
2.復合數據類型(類)
當他們用(==)進行比較的時候,比較的是他們在內存中的存放地址,
所以,除非是同一個new出來的對象,他們的比較後的結果為true,否則比較後結果為false。
字符串緩沖池:程序在運行的時候會創建一個字符串緩沖池。
當使用 String a3 = "abc"; 這樣的表達是創建字符串的時候,程序首先會在這個String緩沖池中尋找相同值的對象
在String a3 = "abc";中,a3先被放到了池中。所以在a4被創建的時候,程序找到了具有相同值的 a4,並將a4引用a3所引用的對象"abc"。
使用了 new 操作符,他明白的告訴程序:"我要一個新的!不要舊的!"於是一個新的"abc"Sting對象被創建在內存中。他們的值相同,但是位置不同。