728x90
자바에서 문자열(String)을 선언하는 방법은 이렇다.
1) 리터럴 변수로 바로 할당
2) 생성자인 new 연산자를 통해 할당
String name1 = "Jeong" ;
String name2 = new String ("Jeong") ;
"Jeong" 이라는 문자는 같아 보이는데 얘네는 실제 메모리에 할당되는 영역에 차이가 있다.
String name01 = "Jeong" ;
String name02 = "Jeong" ;
String name03 = new String ("Jeong") ;
String name04 = new String ("Jeong") ;
1. new 없이 바로 문자열을 할당하면, "Jeong" 문자열은 같은 heap 영역의 메모리를 사용한다.
System.out.println("name01==name02:" + (name01==name02)) ; // true
2. 반면, new String()으로 생성하면 다른 heap 주소 위치에 객체가 생성된다.
System.out.println("name03==name04:" + (name03==name04)) ; // false
즉.. 기본 데이터 유형은 동일한 값을 할당하면 true로 처리되지만,
객체의 경우 동일한 값을 할당하더라도 주소값이 다르기 때문에 false가 처리되는 경우가 많다
3. 동일한 문자열의 비교는 ==를 활용하면, 예외사항 때문에 문제가 발생한다.
문자열의 동등 비교는 .equals()를 활용하여 비교하여야 한다.
System.out.println("name01.equals(name02):" + name01.equals(name02)); // true
System.out.println("name01.equals(name04):" + name01.equals(name04)); // true
System.out.println("name03.equals(name02):" + name01.equals(name04)); // true
4. 응용 )
id.equals("비교데이터1")임의의 id, pass 문자열에 데이터를 할당하고
해당 id, pass가 동일하면 true, 그렇지 않으면 false를 처리하세요(문자열만 비교)
String id = "blue";
String pw = "767";
System.out.println("인증 여부:" + (id.equals("blue")&&(pw.equals("767"))));
>> 그냥 이거 읽자 ^^..
coding-factory.tistory.com/536
728x90
'Programming > Java' 카테고리의 다른 글
[JAVA 객체지향 프로그래밍] 패키지의 개념 (0) | 2021.02.21 |
---|---|
[Java 객체지향 프로그래밍] 객체와 클래스 (0) | 2021.02.21 |
[Java] 자바빈(JavaBean)에서 프로퍼티(property)와 필드(field)의 차이점? (0) | 2021.02.18 |
[Java] 자바의 예외(Exception) 처리 (0) | 2020.12.18 |
[Java] 추상클래스 vs 인터페이스 차이? (0) | 2020.12.04 |