Java基礎-比較運算符Compare Operatorsspa
做者:尹正傑code
版權聲明:原創做品,謝絕轉載!不然將追究法律責任。對象
一.關係運算符blog
關係運算符包括:內存
1>.大於(>)字符串
2>.大於等於(>=)io
3>.小於(<)class
4>.小於等於(<=)基礎
5>.等於(==)變量
6>.不等於(!=)
關係運算的結果是一個布爾值。
二.基本數據類型比較
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 7 public class CompareDome{ 8 public static void main(String[] args){ 9 System.out.println( 10 > 5 ); //true 10 System.out.println( 10 >= 5 ); //true 11 System.out.println( 10 < 5 ); //false 12 System.out.println( 10 <= 5 ); //false 13 System.out.println( 10 == 5 ); //false 14 System.out.println( 10 != 5 ); //true 15 16 int a = 10; 17 int b = 20; 18 System.out.println( a > b ); //false,變量進行比較是比較兩個變量的值。 19 } 20 }
三.字符串的比較
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 7 public class CompareDome2{ 8 public static void main(String[] args){ 9 String s1 = "abc"; 10 String s2 = "abc"; //直接賦值字符串字面量 11 String s3 = "ab" + "c"; //使用加號能夠進行字符串的連接 12 String s4 = new String("abc"); //使用String類的構造方,建立字符串對象 13 14 System.out.println(s1); 15 System.out.println(s2); 16 System.out.println(s3); 17 System.out.println(s4); 18 19 System.out.println(s1 == s2); //true 20 System.out.println(s1 == s3); //true 21 System.out.println(s1 == s4); //false 22 System.out.println(s2 == s3); //true 23 System.out.println(s3 == s4); //false 24 25 } 26 }
你可能會疑問,爲何輸出的布爾值一次是:「true,true,false,true,false」,其實很簡單,咱們須要瞭解一下「堆區,棧去和方法區」。
1>.Java把內存分爲棧區,堆區,方法區三塊;
2>.s1,s2,s3,s4這四個是main方法中定義的局部變量,這四個變量在棧區中分配存儲空間;
3>.「abc」是使用雙引號引發來的字符串字面量,字符串字面量存儲在方法區中的常量區裏。系統會先在常量區查找這個字符串是否存在,若是不存在就把「abc」字符串存儲在常量區,而後把在常量區中的存儲地址賦(內存地址)值給變量s1;若是常量區中有這個字符串,就直接把這個字符串的存儲地址(內存地址)賦值給變量s2;
4>.「ab」+「c」是兩個字符串常量進行鏈接病生成一個新的字符串常量「abc」,如今常量區中已經存在「abc」字符串了,就直接把「abc」的存儲地址(內存地址)賦值給變量s3;
5>.s4這個字符串是經過new運算符建立的,new運算符會在堆中單獨分配一塊存儲空間(內存地址),並將這個存儲空間的內存地址賦值給變量s4,而分配的這個內存地址中存儲的vlaue就是常量區中的「abc」。咱們能夠經過下圖幫助咱們理解:
若是想要比較字符串中的每一個字符是否都同樣,可使用「equals()」方法。
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 4 EMAIL:y1053419035@qq.com 5 */ 6 7 public class CompareDome3{ 8 public static void main(String[] args){ 9 String s1 = "abc"; 10 String s2 = "abc"; //直接賦值字符串字面量 11 String s3 = "ab" + "c"; //使用加號能夠進行字符串的連接 12 String s4 = new String("abc"); //使用String類的構造方,建立字符串對象 13 14 /** 15 String 是一個類,是一種引用數據類型。 16 s1,s2,s3,s4中存儲的內容是從另一塊存儲空間的引用(地址)。使用雙等號(==) 17 進行比較時,是比較的這些變量中的值,便是否都引用了另一塊存儲空間引用(地址) 18 */ 19 20 //若是想要比較字符串中的每一個字符是否都同樣,可使用「equals()」方法。 21 System.out.println(s1.equals(s2)); //true 22 System.out.println(s1.equals(s3)); //true 23 System.out.println(s1.equals(s4)); //true 24 System.out.println(s2.equals(s3)); //true 25 System.out.println(s2.equals(s4)); //true 26 System.out.println(s3.equals(s4)); //true 27 } 28 }