자바에서 문자열을 생성 하는 두가지 방법
String s = “abc”
- 자바 런타임 시스템에서 공유 문자열 풀(shared string pool)에 같은 클래스로 통합하여 관리한다.
- 같은 문자열인 경우에 같은 객체를 객체 참조자가 공유 하도록 한다.
- 자바 런타임 시스템에서 공유 문자열 풀(shared string pool)에 같은 클래스로 통합하여 관리한다.
- 같은 문자열인 경우에 같은 객체를 객체 참조자가 공유 하도록 한다.
String s = new String(“abc”)
- 공유문자열 풀이 아닌 heap 영역에 새로운 문자열 객체를 생성
- 같은 문자열이라도 서로 다른 객체를 참조 하도록 heap 메모리 영역에 객체를 생성하고 참조자를 갖도록 한다.
String 객체는 내부적으로 자바 문자 배열을 사용한다. 하지만 그 배열은 private으로 선언되어 있으므로 직접 보거나 바꿀 수 없다. 그러므로 자바에서는 실제 배열을 사용해 자신의 길이를 알고 있으므로 String 객체에 특별한 종료 문자가 필요 없다.
문자열의 길이 확인
String s = “abc”;
Int I = s.length();
+연산자
문자열 통합 기능
String name = “John” + “Smith”;
String name = “John”.concat(“Smith”);
문자열 통합 기능
String name = “John” + “Smith”;
String name = “John”.concat(“Smith”);
String myString = “ONJOR”;
myString = “OJAVA”;
myString = “OJAVA”;
myString변수가 "ONJOR"을 참조하고 있다가 그 참조를 끊고 새로운 "OJAVA"를 참조해야 한다.
- 문자열 연결
String a = “I love “;
a += “korea”;
이것은 “I love” 문자열이 수정된것이 아니라, a 가 새로운 객체를 참조하는 것이다. 즉 새로 객체생성이며 기존의 객체가 변형
되는 것은 아니다.
- 문자열 비교
String a=“1234”; String b=“12” + “34”;
if (a == b) …………
- 문자열이 같은지 비교를 위해서는 String Class의 equals() 메소드를 사용한다.(대소문자구분, 길이, 개수, 문자열이 같을경우 true)
- 대소문자를 무시하고 비교 위해서는 equalsIgnoreCase()를 사용한다.
if (a == b) …………
- 문자열이 같은지 비교를 위해서는 String Class의 equals() 메소드를 사용한다.(대소문자구분, 길이, 개수, 문자열이 같을경우 true)
- 대소문자를 무시하고 비교 위해서는 equalsIgnoreCase()를 사용한다.
C와 동일하게 Reference로 문자열을 Access 하므로 ==로 정확한 비교 불가
equals() : java.lang.Object에 속하는 메소드이므로 모든 자바의 패키지에서 사용이 가능하고 Overriding도 가능
boolean equalsIgnoreCase(String another) //대소문자 미교안하고 비교한다,
int compareTo(String another) //두문자가 같으면 0, 앞 문자가 크면 양수, 적으면 음수 리턴
boolean regionMatches(boolean ignoreCase = false, int start, String other, int ostart, int len)
[문자열 비교 예제]
class StringTest {
public static void main(String[] args) {
String s1 = "Foo";
char[] c = {'F', 'o', 'o'};
String s2 = new String(c);
System.out.println(s1 + ", " + s2);
if (s1.equals(s2)) System.out.println("s1.equals(s2) : 같다...");
else System.out.println("s1.equals(s2) : 다르다...");
public static void main(String[] args) {
String s1 = "Foo";
char[] c = {'F', 'o', 'o'};
String s2 = new String(c);
System.out.println(s1 + ", " + s2);
if (s1.equals(s2)) System.out.println("s1.equals(s2) : 같다...");
else System.out.println("s1.equals(s2) : 다르다...");
s1 = "Foo";
s2 = "FOO";
System.out.println(s1 + ", " + s2);
if (s1.equalsIgnoreCase(s2)) System.out.println("s1.equalsIgnoreCase(s2) : 같다");
else System.out.println("s1.equalsIgnoreCase(s2) : 다르다");
s2 = "FOO";
System.out.println(s1 + ", " + s2);
if (s1.equalsIgnoreCase(s2)) System.out.println("s1.equalsIgnoreCase(s2) : 같다");
else System.out.println("s1.equalsIgnoreCase(s2) : 다르다");
s1 = "abc"; s2 = "abc "; System.out.println(s1 + ", " + s2);
if (s1.compareTo(s2)>0){
System.out.println("s1.compareTo(s2) : 양수, s1이 크다");
}
else if (s1.compareTo(s2)<0){
System.out.println("s1.compareTo(s2) : 음수, s2가 크다");
}
else System.out.println("s1.compareTo(s2) : 0, 같다.");
s1 = "abcdef"; System.out.println("s1 : " + s1);
if (s1.regionMatches(true, 1, "xyBcdz", 2, 3)){
System.out.println("s1.regionMatches(true, 1, 'xyBcdz', 2, 3) : true");
}
else System.out.println("s1.regionMatches(true, 1, 'xyBcdz', 2, 3) : false");
}
}
if (s1.compareTo(s2)>0){
System.out.println("s1.compareTo(s2) : 양수, s1이 크다");
}
else if (s1.compareTo(s2)<0){
System.out.println("s1.compareTo(s2) : 음수, s2가 크다");
}
else System.out.println("s1.compareTo(s2) : 0, 같다.");
s1 = "abcdef"; System.out.println("s1 : " + s1);
if (s1.regionMatches(true, 1, "xyBcdz", 2, 3)){
System.out.println("s1.regionMatches(true, 1, 'xyBcdz', 2, 3) : true");
}
else System.out.println("s1.regionMatches(true, 1, 'xyBcdz', 2, 3) : false");
}
}
[결과]
Foo, Foo
s1.equals(s2) : 같다...
Foo, FOO
s1.equalsIgnoreCase(s2) : 같다
abc, abc
s1.compareTo(s2) : 음수, s2가 크다
s1 : abcdef
s1.regionMatches(true, 1, 'xyBcdz', 2, 3) : true
s1.equals(s2) : 같다...
Foo, FOO
s1.equalsIgnoreCase(s2) : 같다
abc, abc
s1.compareTo(s2) : 음수, s2가 크다
s1 : abcdef
s1.regionMatches(true, 1, 'xyBcdz', 2, 3) : true
[오프라인 개강예정강좌, 오프라인교육장에 오시면 보다 자세히 배울 수 있습니다.]
오라클자바커뮤니티에서 운영하는 개발자 전문교육 ,개인80%환급(www.onjprogramming.co.kr)
[주간]
[12/02]안드로이드개발자과정
[12/02]iPhone 하이브리드 앱 개발 실무과정
[12/09][기업100%환급]Spring Framework,MyBatis,Hibernate실무프로젝트과정
[12/16][기업100%환급]PL/SQL,ORACLE HINT,TUNING
[12/23][기업100%환급]자바기초에서 JDBC, Servlet/JSP까지
[12/23][기업100%환급]SQL기초에서 Schema Object까지
[평일야간]
[12/03]웹퍼블리싱 마스터
[12/03]iPhone하이브리드앱개발실무과정
[12/04]SQL초보에서실전전문가까지
[12/05]Spring3.X, MyBatis, Hibernate실무과정
[12/09]C#,ASP.NET마스터
[12/09]JAVA&WEB프레임워크실무과정
[12/12]자바초보에서안드로이드까지
[주말]
[11/30]SQL초보에서전문가까지
[11/30]C#,ASP.NET마스터
[12/07]Spring3.X,MyBatis,Hibernate실무과정
[12/14]자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
[12/14]자바초보에서안드로이드까지
[12/14]웹퍼블리싱 마스터
오라클자바커뮤니티에서 운영하는 개발자 전문교육 ,개인80%환급(www.onjprogramming.co.kr)
[주간]
[12/02]안드로이드개발자과정
[12/02]iPhone 하이브리드 앱 개발 실무과정
[12/09][기업100%환급]Spring Framework,MyBatis,Hibernate실무프로젝트과정
[12/16][기업100%환급]PL/SQL,ORACLE HINT,TUNING
[12/23][기업100%환급]자바기초에서 JDBC, Servlet/JSP까지
[12/23][기업100%환급]SQL기초에서 Schema Object까지
[평일야간]
[12/03]웹퍼블리싱 마스터
[12/03]iPhone하이브리드앱개발실무과정
[12/04]SQL초보에서실전전문가까지
[12/05]Spring3.X, MyBatis, Hibernate실무과정
[12/09]C#,ASP.NET마스터
[12/09]JAVA&WEB프레임워크실무과정
[12/12]자바초보에서안드로이드까지
[주말]
[11/30]SQL초보에서전문가까지
[11/30]C#,ASP.NET마스터
[12/07]Spring3.X,MyBatis,Hibernate실무과정
[12/14]자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
[12/14]자바초보에서안드로이드까지
[12/14]웹퍼블리싱 마스터
댓글 없음:
댓글 쓰기