이번 강좌에서는 자바에서의 문자열(java.lang.String)에 대하여 알아 보겠습니다.
(신입사원채용무료교육, 오라클, SQL, 튜닝, 자바, 스프링,
Ajax, jQuery, 안드로이드, 아이폰, 닷넷, C#, ASP.Net) www.onjprogramming.co.kr
자바에서는 문자열을 객체로서 다룹니다.String클래스는 자바와 함께 제공되는 표준 클래스 이며 유니코드(UniCode)를 사용하므로 각각의 문자는 2Byte를 차지합니다. 문자열을 만드는 방법의 아래 처럼 2가지 방법이 있습니다.
String s = new String(“jclee”);
String s = “jclee”;
‘+’연산시 한쪽의 타입이 String 이라면 나머지쪽도 자동으로 String으로 변환되어 문자열이 더해지게 되는 것입니다.
String a = “abc”; int i=5;
System.out.println(a + i);
문자열의 길이를 알기 위해서는 String.length()를 사용 합니다.
[예제1]
public class StringTest {
public static void main(String[] args) throws java.io.IOException {
String a;
String b=null;
String c="";
if (b == null) {
System.out.println("b는 아무것도 참조하지 않습니다...");
}
//아래의 경우 Compile시 NullPointEXception이 발생한다.
//System.out.println("b=null일때 b의 길이 -->"+b.length());
//아래의 두경우 모두 a가 초기화 되지 않았다는 오류발생
//if (a == "1234"){
// System.out.println("a는 '1234'와 같습니다...");
//}
//if (a == null) {
// System.out.println("a는 아무것도 참조하지 않습니다...");
//}
/////////////////////////////////////////////////////////
System.out.println(c.hashCode());
if (c == null) {
System.out.println("c는 아무것도 참조하지 않습니다...");
}
if (c == "") {
System.out.println("c는 "" 입니다...");
}
if (c == " ") {
System.out.println("c는 " " 입니다...");
}
if (c.equals(null)){
System.out.println("c는 아무것도 참조하지 않습니다...");
}
if (c.equals("")){
System.out.println("c는 "" 입니다...");
}
if (c.equals(" ")) {
System.out.println("c는 " " 입니다...");
}
//아래의 경우 c가 ""이므로 NullPointException이 발생한다.
//if (c.compareTo("")==0){
// System.out.println("c는 "" 입니다...");
//}
System.out.println("""의 길이 -->"+c.length());
/////////////////////////////////////////////////////////
String d=" ";
System.out.println(d.hashCode());
if (d == null) {
System.out.println("d는 아무것도 참조하지 않습니다...");
}
if (d == "") {
System.out.println("d는 "" 입니다...");
}
if (d == " ") {
System.out.println("d는 " " 입니다...");
}
if (d.equals(null)){
System.out.println("d는 아무것도 참조하지 않습니다...");
}
if (d.equals("")){
System.out.println("d는 "" 입니다...");
}
if (d.equals(" ")) {
System.out.println("d는 " " 입니다...");
}
// 이 경우에도 NullPointException이 발생한다.(주의)
//if (d.compareTo(" ")==0){
// System.out.println("d는 " " 입니다...");
//}
System.out.println("" "의 길이 -->"+d.length());
d = d.trim();
System.out.println("trim후 " "의 길이 -->"+d.length());
}
}
[결과]
b는 아무것도 참조하지 않습니다...
0
c는 "" 입니다...
c는 "" 입니다...
""의 길이 -->0
32
d는 " " 입니다...
d는 " " 입니다...
" "의 길이 -->1
trim후 " "의 길이 -->0
[예제2]
//== 연산자인 경우 양쪽에 객체가 오는 경우 값이 같더라도 참조하고 있는 곳(주소)이 틀리면 다르다고 합니다.
class StringTest2 {
public static void main(String[] args) {
String a="1234";
String b="12";
String c="34";
b += c;
// ==인 경우 실제 값이 같아도 참조하고 있는것이 틀리면 false
System.out.println("a : " +a+" b : "+b);
if (a == b) {
System.out.println("a와b 두문자열 동일한 문자열을 참조한다.");
}
else {
System.out.println("a와b 두문자열 동일한 문자열을 참조하지 않는다.");
}
//c="1234";
c = new String("1234");
System.out.println("b : " +b+" c : "+c);
if (b == c) {
System.out.println("b와c 두문자열 동일한 문자열을 참조한다.");
}
else {
System.out.println("b와c 두문자열 동일한 문자열을 참조하지 않는다.");
}
System.out.println("a : " +a+" c : "+c);
if (a == c) {
System.out.println("a와c 두문자열 동일한 문자열을 참조한다.");
}
else {
System.out.println("a와c 두문자열 동일한 문자열을 참조하지 않는다.");
}
}
}
[결과]
a : 1234 b : 1234
a와b 두문자열 동일한 문자열을 참조하지 않는다.
b : 1234 c : 1234
b와c 두문자열 동일한 문자열을 참조하지 않는다.
a : 1234 c : 1234
a와c 두문자열 동일한 문자열을 참조하지 않는다.
댓글 없음:
댓글 쓰기