2011-12-02 7 views
2

에서 문자열 비교를 작동하지 :이 코드가 작동하지 않는 자바

String name = "Bob"; 
String name1 = "Anne"; 
if name = name1; 
System.out.println ("Hello"); 

나는 자바 초보자 오전,이 코드로 우리를 도와주세요. 두 줄을 비교하려고합니다.

답변

2

당신은 당신이 그것을 한이

if (name.equals(name1)) 

이 일을해야하지하는 방식과 같이 두 변수를 비교해야합니다!

14

당신이 원하는 : 당신이

if (name.equals(name1)) 

참고하지

if (name == name1) 

어떤 구문 올바른 될 싶어하지만, 두 개의 문자열을 비교하는 것 참조 평등에 대한, 관련된 객체가 동일한 문자 시퀀스를 나타내는 지 비교하는 것보다

또한 최상위 버전도 서수 문자열의 UTF-16 코드 단위 비교를 수행합니다. 두 문자열이 논리적으로 동일한 문자를 나타내지 만 다른 형식 인 경우 원하는 결과를 얻지 못할 수 있습니다. 문화에 민감한 비교를 원한다면 Collator을 봐야합니다.

또한 이 Java에 익숙하지 않은 경우 콘솔 앱 및/또는 단위 테스트로 시작하여 JSP 대신 언어를 탐색하는 것이 좋습니다. 그러면 훨씬 더 부드러운주기가 제공됩니다. 기본을 배우고 작업하기에 더 간편한 환경입니다.

name이 null 참조 인 경우 맨 위에 제공된 코드는 NullPointerException을 던집니다. 그 시점에서 당신이 원하는 것을 고려해야한다. 만약 문자열이 null이라면 어쨌든 버그를 나타낼 것이다. 그렇다면 예외가 적절할 것이다. 그렇지 않으면 코드를 변경할 수 있습니다. (좋은 물건으로 가득차있다) Guava의 한 유용한 방법은 Objects.equal입니다 : 정확히 하나 인수가 null의 경우 모두 인수가 false, null의 경우

if (Objects.equal(name, name1)) 

방법 리턴 사실, 그 결과의 둘 다 null이 아닌 경우 equals()으로 전화하십시오. 매우 편리합니다.

+0

@Jon Skeet 사용자는 "="이 아닌 다른 구문상의 실수가있는 문자열을 비교하기 위해 "="를 사용합니다. 나는 알아 내려고 노력했다. – gprathour

+0

@GPSingh : 예, 알고 있습니다. 그들은 초보자라고 말했기 때문에 "순진한"구문 상 정확한 버전을 포함하여 다양한 측면을 지적했기 때문에 "=="를 사용합니다. –

+0

@JonSkeet 네, 그게 제가 대답으로 지적한 것입니다. – gprathour

0

게시 된 코드는 실제로 자바가 아닙니다. 또한 '=='과 대입 연산자 '='를 비교하지 않습니다. 마지막으로 'Object'또는 'Object'의 하위 항목을 적절히 비교하려면 .equals(...) 메소드를 사용해야합니다.

==과의 비교는 "동일한 값입니다"라는 의미가 아니라 "동일한 값입니다"라는 의미입니다. 그 차이는 작아 보인다. 그러나 객체를 값으로 비교하도록 선택하면 전혀 작지 않습니다. 두 개의 Object은 동일한 "값"으로 생성 될 수 있으며 .equals(...)만이 두 개의 동일한 것으로 간주 할 수 있습니다.

1
if(name.equals(name1)) 
    System.out.println("Hello"); 

==는 int 또는 long과 같은 프리미티브를 비교할 때만 작동합니다. 문자열을 비교하려면 equals() 또는 compareTo() 중 하나를 사용해야합니다. Single =은 name = name1을 수행함으로써 할당을 비교하지 않고 기본적으로 variable1에 string1을 지정합니다.

3

실수 :

  1. 당신은 문자열을 비교하는 "=" 연산자를 사용하고 있습니다. 조건부 연산자가 아니며 대입 연산자입니다. Java의 조건부 연산자는 두 값이 같거나 같은지 비교하는 데 사용되는 "=="입니다. 이 문자열을 문자열로 사용할 수도 없습니다.

  2. 당신은 다음과 같이 쓰고있다 :

    if name = name1; 
    System.out.println ("Hello"); 
    

당신은 if 문 끝에 세미콜론을 뒀다. 그래서 아무것도하지 않습니다 (귀하의 상태가 옳을 경우,이 경우는 그렇지 않습니다). 그러나 조건은 사실이거나 그렇지 않습니다.

  1. if 문에 주어진 조건과 관련하여 괄호가 누락되었습니다.

    Synatx of if statement is : if(condition) 
    

은 그래서 당신의 상태 주위 "()"를 작성해야합니다. 그것은 정확히 같은 문자열을 확인

stringOne.equals(stringTwo) 

:

지금, 문자열 비교, String 클래스는 우리에게 같은 방법을 제공합니다.

또는

stringOne.equalsIgnoreCase(stringTwo) 

그것은 캡 - 작은 대소 문자를 무시합니다

.

관련 문제