너무 간단한 건데 아무도 답변을 안달아서, 달려고 쪼물락 거리다가 이번에도 감이 수상해서 새창 열어 확인했더니..

 

 

질문) 자바 string 비교

 

안녕하세요 --> 질문을 수정했지만 이전 질문과 문제의 맥락은 비슷함.
자바에서 스트링값 비교할때
만약 if문을 사용한다면 if(q.equals(d)) 이런식으로 비교하잖아요   

저건 q랑 d가같으면 이죠?

그런데 저렇게하면 단순히 값만 비교하게되는데  --빨간부분에서 질문의 내용이 완전 바뀜..

d 값이 1 이라면                                             --> 본래는 다를때 equals 표현은 어떻게 쓰는가 였음.

무조건 q랑 1만 비교하게되잖아요  
123 처럼 1이 포함되는 모든 것을 비교할려면 어떻게 해야하죠?

 

 

타인의 답변)

 

 

 

내 답변)

 

아래를 보면서 비교해 보세요.

 

1. CLASS

 

public static void main(String[] args) {
 
  Scanner sc = new Scanner(System.in);

  String k1[] = {"a", "b", "c"};


  // case1
  System.out.print("비교할 대상이 'a' 이면 : ");
  System.out.println();
  
  if(k1[0].equals("a")){
    System.out.println("1-1. 같으면");
  }else if(!k1[0].equals("a")){
    System.out.println("1-2. 같지 않으면");
  }else{
    System.out.println("1-3. 그 외");
  }
  
  if(k1[0] == "a"){
    System.out.println("2-1. 같으면");
  }else if(k1[0] != "a"){
    System.out.println("2-2. 같지 않으면");
  }else{
    System.out.println("2-3. 그 외");
  }
  
  if("a" == "a"){ // 극단적인 비교를 위해..
    System.out.println("3-1. 같으면");
  }else if("a" != "a"){ // 극단적인 비교를 위해..
    System.out.println("3-2. 같지 않으면");
  }else{
    System.out.println("3-3. 그 외");
  }
  
  // case2
  System.out.print("\na, b, c 중 입력받으면 : ");
  String in1 = sc.nextLine();
  
  if(k1[0].equals(in1)){
    System.out.println("1-1. 같으면");
  }else if(!k1[0].equals(in1)){
    System.out.println("1-2. 같지 않으면");
  }else{
    System.out.println("1-3. 그 외");
  }
  
  if(k1[0] == in1){
    System.out.println("2-1. 같으면");
  }else if(k1[0] != in1){
    System.out.println("2-2. 같지 않으면");
  }else{
    System.out.println("2-3. 그 외");
  }
  
  if("a" == in1){
    System.out.println("3-1. 같으면");
  }else if("a" != in1){
    System.out.println("3-2. 같지 않으면");
  }else{
    System.out.println("3-3. 그 외");
  }

 

}

 

 

2. RUN

 

비교할 대상이 'a' 이면 :
1-1. 같으면
2-1. 같으면
3-1. 같으면

 

a, b, c 중 입력받으면 : a
1-1. 같으면
2-2. 같지 않으면
3-2. 같지 않으면

 

a, b, c 중 입력받으면 : b
1-2. 같지 않으면
2-2. 같지 않으면
3-2. 같지 않으면

 

 

결론은..

같은것과 같지 않을 것을 비교할 때는 조건문(if)의 첫번째 조건이 무조건 같은것으로 설정해 주면 됩니다.

if() ~ else if() ~ 같이 if 문을 switch case 처럼 쓰지 않는다면.. '!=' 이나 'not equals' 등은 어떻게 쓰든 의미가 없습니다.

 

 

 

// 저런식으로 질문을 바꿔버리면 답변을 채택했다 하더라도..

// 나중에 해당 질문을 조회한 사람은 왠 동문서답이냐고 생각하게되고, 답변을 단 지식인의 공신력에 흠집이 나게 된다.

// 내 답변 역시 수정 전의 질문에 맞춰서 만들어진 답변이다.