1、equals與==比較不一樣java
在實現某我的去5個商場去購物,控制檯輸入是否購物(Y/N)的時候,在比較出了問題,發現不管輸入什麼都是false,後來查閱資料發現,字符串的比較,==和equals不同。spa
先看下面的例子:code
1 String s1,s2,s3 = "abc", s4 ="abc" ; 2 s1 = new String("abc"); 3 s2 = new String("abc"); 4 5 s1==s2 是 false //兩個變量的內存地址不同,也就是說它們指向的對象不 同樣, 6 7 s1.equals(s2) 是 true //兩個變量的所包含的內容是abc,故相等。
咱們發現,對象
購物的例子:有幸的朋友能夠看看我敲的代碼,歡迎進行補充。blog
1 package day04; 2 3 import java.util.Scanner; 4 5 public class Shop_bug { 6 public static void main(String[] args) { 7 //5家店,每家店限制購買3件衣服 8 int[] shops = new int[5]; 9 int count = 0; 10 Scanner sc = new Scanner(System.in); 11 12 for(int i = 0;i<shops.length;i++) { 13 System.out.println("歡迎進入"+(i+1)+"店進行購物!"); 14 for(int j = 0;j<3;j++) { 15 System.out.println("是否選擇購買商品?(Y/N)"); 16 String a = sc.next(); 17 if(a.equals("Y") || a.equals("N") ) { 18 if(a.equals("Y")) { 19 count++; 20 }else{ 21 break; 22 } 23 }else { 24 System.err.println("上一個的輸入方式有問題而且購買失敗!"); 25 j-=1; 26 } 27 28 } 29 System.out.println("歡迎下次光臨第"+(i+1)+"家店"); 30 System.out.println(); 31 32 } 33 System.err.println("您總共購買了"+count+"件衣服!"); 34 35 36 } 37 38 }
2、break的跳出不一樣內存
在敲代碼的過程當中,當咱們遇到兩個for循環,內部要判斷的時候,有時候會在判斷不符合的時候跳出循環,進行for循環外的代碼,由於不知道break的做用範圍,致使實現的效果不如題意。字符串
例子:for循環
在這裏我特意將if()裏面寫的是一個真使其執行break,在第一個for循環內,第二個for循環外添加一條輸出語句,結果咱們發現,當執行了break語句,在嵌套for循環中,跳出的是本for循環。class