에서 문자열 비교를 작동하지 :이 코드가 작동하지 않는 자바
String name = "Bob";
String name1 = "Anne";
if name = name1;
System.out.println ("Hello");
나는 자바 초보자 오전,이 코드로 우리를 도와주세요. 두 줄을 비교하려고합니다.
에서 문자열 비교를 작동하지 :이 코드가 작동하지 않는 자바
String name = "Bob";
String name1 = "Anne";
if name = name1;
System.out.println ("Hello");
나는 자바 초보자 오전,이 코드로 우리를 도와주세요. 두 줄을 비교하려고합니다.
당신은 당신이 그것을 한이
if (name.equals(name1))
이 일을해야하지하는 방식과 같이 두 변수를 비교해야합니다!
당신이 원하는 : 당신이
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()
으로 전화하십시오. 매우 편리합니다.
게시 된 코드는 실제로 자바가 아닙니다. 또한 '=='과 대입 연산자 '='를 비교하지 않습니다. 마지막으로 'Object'또는 'Object
'의 하위 항목을 적절히 비교하려면 .equals(...)
메소드를 사용해야합니다.
==
과의 비교는 "동일한 값입니다"라는 의미가 아니라 "동일한 값입니다"라는 의미입니다. 그 차이는 작아 보인다. 그러나 객체를 값으로 비교하도록 선택하면 전혀 작지 않습니다. 두 개의 Object
은 동일한 "값"으로 생성 될 수 있으며 .equals(...)
만이 두 개의 동일한 것으로 간주 할 수 있습니다.
if(name.equals(name1))
System.out.println("Hello");
==는 int 또는 long과 같은 프리미티브를 비교할 때만 작동합니다. 문자열을 비교하려면 equals() 또는 compareTo() 중 하나를 사용해야합니다. Single =은 name = name1을 수행함으로써 할당을 비교하지 않고 기본적으로 variable1에 string1을 지정합니다.
실수 :
당신은 문자열을 비교하는 "="
연산자를 사용하고 있습니다. 조건부 연산자가 아니며 대입 연산자입니다. Java의 조건부 연산자는 두 값이 같거나 같은지 비교하는 데 사용되는 "=="
입니다. 이 문자열을 문자열로 사용할 수도 없습니다.
당신은 다음과 같이 쓰고있다 :
if name = name1;
System.out.println ("Hello");
당신은 if 문 끝에 세미콜론을 뒀다. 그래서 아무것도하지 않습니다 (귀하의 상태가 옳을 경우,이 경우는 그렇지 않습니다). 그러나 조건은 사실이거나 그렇지 않습니다.
if 문에 주어진 조건과 관련하여 괄호가 누락되었습니다.
Synatx of if statement is : if(condition)
은 그래서 당신의 상태 주위 "()"
를 작성해야합니다. 그것은 정확히 같은 문자열을 확인
stringOne.equals(stringTwo)
:
지금, 문자열 비교, String 클래스는 우리에게 같은 방법을 제공합니다.
또는
stringOne.equalsIgnoreCase(stringTwo)
그것은 캡 - 작은 대소 문자를 무시합니다
.
@Jon Skeet 사용자는 "="이 아닌 다른 구문상의 실수가있는 문자열을 비교하기 위해 "="를 사용합니다. 나는 알아 내려고 노력했다. – gprathour
@GPSingh : 예, 알고 있습니다. 그들은 초보자라고 말했기 때문에 "순진한"구문 상 정확한 버전을 포함하여 다양한 측면을 지적했기 때문에 "=="를 사용합니다. –
@JonSkeet 네, 그게 제가 대답으로 지적한 것입니다. – gprathour