- 메모리에서 사용하는 데이터 크기가 가변적인 특징이 있다.
-실제 데이터를 힙메모리에 저장하고, Strint타입으로 선언된 변수에는 힙 메모리의 주소값을 스택에 저장- 실제 사용 예: 고객이름, 주소 ,직업,회사명,상품명,등
- 산술연산 기호중 '+'만 사용 가능 => 문자열 합치기
-문자열 + 문자열 , 숫자 + 문자열 , 문자열 + 숫자 -> (가능)
public class StringBasic {
public static void main(String[] args) {
String message1= "안녕하세요 자바입니다.";
//변수 message에는 힙 메모리에 저장된 "안녕하세요 자바입니다."의
//데이터의 시작 주소값을 갖고 있다는 의미이다
String message2 = "좋은 아침입니다.";
String message3;
System.out.println(message1);
System.out.println(message2);
message3 = message1 + " " + message2;
System.out.println(message3);
// 2+3+message1 => 5+ 안녕하세요 자바입니다. =>"5"(문자열로 형변환)+"안녕하세요 자바입니다"
message2 = 2 + 3 + message1;
System.out.println(message2);
// 문자열이 앞으로와 뒤의 정수 타입이 문자열로 바뀌게 됨
// 따라서 안녕하세요 자바입니다 23으로 출력
message3 = message1+2+3;
System.out.println(message3);
int a = 10;
System.out.println("a = " +a);
}
}
문자데이터의 길이를 구할수 있다.
1.한글과 영어 글자 1문자를 length에서는 1개로 인식
-한글과 영어 글자는 unicode로 구성되어 있음
public class StringBasic {
public static void main(String[] args) {
String message = "Welcome to Java";
String message2 = "안녕하세요 , 자바씨";
System.out.println(message + "변수의 문자 길이 = "+message.length());
//문자열의 길이는 15이다.
System.out.println(message2 + "변수의 문자 길이 = "+message2.length());
//문자열의 길이는 11이다
}
}
문자열에서 특정 문자를 가져올 수 있다.
index = 0일때 첫번째 문자를 가져옴
intdex = lenght - 1 일때 마지막 문자를 가져옴
public class StringBasic {
public static void main(String[] args) {
String message = "Welcome to Java";
//'W'를 출력한다
System.out.println(message.charAt(0));
//'a'를 출력한다
System.out.println(message.charAt(message.length()-1));
}
}
문자열을 합칠 수 있다.
-concat = concatenate
public class StringBasic {
public static void main(String[] args) {
String s1 = "Welcome to ";
String s2 = "Java";
String s3;
s3 = s1.concat(s2);
//'Welcome to Java'을 출력한다
System.out.println("s3 = "+ s3);
}
}
문자열을 콘솔에서 읽기
1.next() = 스페이스로 구분된 문자열을 읽어올 때 사용
2.nextLine() = 한줄 전체를 문자열로 읽어올 때 사용
public class StringBasic {
public static void main(String[] args) {
Scanner S = new Scanner(System.in);
System.out.println("space로 구분된 3개의 단어를 입력하세요");
String s1 = S.next();
String s2 = S.next();
String s3 = S.next();
System.out.println("s1 = " + s1);
System.out.println("s2 = " + s2);
System.out.println("s3 = " + s3);
System.out.println("다음 한 줄을 입력하고 enter key를 누르세요");
String s4 = S.nextLine(); //1 라인 전체 문자를 읽어 올 때 사용(s4에는 엔터키 문자는 제외됨)
System.out.println("s4 = " + s4);
}
}
- s1과 s2의 문자열을 알파벳 순서로 비교하는데 첫번째 문자부터 비교함
- compoareTo 메소드의 실행 결과
-s1의 문자열 > s2의 문자열 => 양수의 값을 return
-s1의 문자열 < s2의 문자열 => 음수의 값을 return
-s1의 문자열 == s2의 문자열 => 0 값을 return
public class StringBasic {
public static void main(String[] args) {
String s1 = "apple";
String s2 = "banana";
String s3 = "pineapple";
String s4 = "banana";
System.out.println(s1+"과"+s2+"의 크기비교 : "+s1.compareTo(s2));
System.out.println(s1+"과"+s3+"의 크기비교 : "+s1.compareTo(s3));
System.out.println(s2+"과"+s1+"의 크기비교 : "+s2.compareTo(s1));
System.out.println(s2+"과"+s4+"의 크기비교 : "+s2.compareTo(s4));
//각각 -1 -15 1 0 을 출력한다
}
}
전체 문자열에서 일부 문자열 가져오기 : substring (startIndex,endIndex)
1. startIndex = 0부터 시작, 일부 문자열 가져오기에 포함
2. endIndex는 일부 문자열 가져오기에 불포함됨
-(endIndex-1 의 문자까지만 가져옴)
3. startIndex 값은 있고 endIndex값이 없는 경우
-startIndex부터 문자열 끝까지의 데이터를 가저옴
- ex)substring(0);
public class StringBasic {
public static void main(String[] args) {
String mes = "Welcome to Java";
String test = "el";
//'Welco'을 출력함
System.out.println(mes.substring(0,5));
//'lcome to Java'을 출력함
System.out.println(mes.substring(2));
}
}
문자열에서 찾고자 하는 문자 또는 문자열의 시작 index 가져오기
1. indexOf(char 또는 String, startIndex)
-startIndex부터 시작하여 찾고자하는 문자나 문자열이 있으면 시작 index를 가져옴
-단 startIndex가 주어지지 않으면 startIndex는 0부터 시작한다고 가정함
-만일 찾고자 하는 문자나 문자열이 없으면 -1을 return
-문자나 문자열을 찾을 때 대소문자 구분하여 찾음
2. lastIndexOf : 문자열의 마지막 index부터 시작하여 찾음
public class StringBasic {
public static void main(String[] args) {
//각각 0 , 4 를 출력
System.out.println("Welcome to Java".indexOf('W'));
System.out.println("Welcome to Java".indexOf('o'));
//comet 문자열을 찾지 못했기 때문에 -1 을 출력
System.out.println("Welcome to Java".lastIndexOf("comet"));
}
}
문자열 내부에서 특정 문자를 다른 문자로 바꾸기 : replace
1. replace(oldChar , newChar)
-문자열 내에서 oldChar 을 newChar로 바꿔줌
public class StringBasic {
public static void main(String[] args) {
String s1 = "apple";
// p를 a로 바꿔 'aaale'로 출력
System.out.println(s1.replace('p', 'a'));
}
}