문자열 (String)
둘 이상의 문자가 존재하는 형식.
기본형인 정수형이나 실수형들과 달리 한도가 없다.
참조 변수이기에 값을 직접 저장하지 않는다.
예를 들어 정수형은 i=1;이라는 식으로 값을 할당하면 1이라는 값이 자신에게 주어진 메모리에 저장이 된다.
반변 정수형 i="1"; 은 1이라는 숫자가 저장된 '메모리의 주소'를 자신에게 주어진 메모리에 저장한다. 따라서 직접 비교는 불가능하다.
함수를 적용하고 싶은 문자열 뒤에 콤마(.)를 찍은 뒤 함수를 사용한다.
문자열 관련 메소드(함수)
1. 길이 얻기 함수
length() : 문자열의 길이를 구하는 함수
String str = "졸려요...";
System.out.println("문자열의 길이:" + str.length()); => 출력값:6
2. 비교
equals() : 두 문자열이 같은지 판별하는 함수. 괄호 안에 비교하고 싶은 문자열을 넣는다.
String str2 = "그럼, 잘자요.";
System.out.println( str.equals( str ) ); => 출력값: false
3.한 글자만 추출하기
charAt() : 괄호 안에 뽑고 싶은 글자의 인덱스를 넣는다.
System.out.println( str2.charAt(0) ); 출력값 : 그
4. 문자 바꾸기
repalaceAll() : 바꾸고 싶은 단어, 바꿀 단어를 순서대로 쓰면 된다.
resultStr = str2.replaceAll("잘", "깊게");
System.out.println( resultStr ); => 출력값 : 그럼, 깊게자요.
5. 문자열 일부 추출하기
substring() : 시작 인덱스, 끝 인덱스 + 1 을 순서대로 적는다.
String resultStr = str.replaceAll("졸려요", "글쎄요");
System.out.println( resultStr ); 출력값 => 글쎄요...
6. 인덱스 알아내기
intdexOf() : 특정 문자열, 단어의 시작점을 알아낼 수 있다.
System.out.println( str2.indexOf("깊게자요")) => 출력값 : 4
"깊" 의 인덱스 번호
7.문자열 연결하기
concat() : + 연산자를 이용해서 문자열을 잇는 것과 같은 수행을 함. 차이는 없다.
System.out.println( str.concat( str2 ) );
출력값 => 글쎄요...그럼, 깊게 자요.
8. 대, 소문자로 바꾸기 함수
toUpperCase() : 괄호 안을 비워두면 문자열 전체가 대문자로 바뀐다.
toLowerCase() : 괄호 안을 비워두면 문자열 전체가 소문자로 바뀐다.
9. 앞뒤 공백 제거하기
trim() : 문자열 앞뒤에 존재하는 공백이 없어진다.
String str 3 = " wow! wonderful! ";
System.out.println(str3.trim()); 출력값 => wow! wonderful // 공백 제거됨
10. 문자열 전체에서 공백 제거하기
replaceAll(): 문자 바꾸기 함수 활용. 공백을 ""로 변경하면 된다.
System.out.println( str3.replaceAll(" ", ""));
출력값 => wow!wonderful!
마찬가지의 방법을 사용하면 한 글자면 다른 글자로 바꾸는 식으로 사용 가능하다.
11. 특정 문자열 포함 여부 확인
contains() : 괄호 안에 확인하고자 하는 문자열을 넣으면 된다. 출력값은 불리언(boolean) 형식으로 나온다.
System.out.println( str3.contains("wow") ); 출력값 => true
System.out.println( str4.contains("fantastic") ); 출력값 => false
12. 문자열 분리하기 (토큰으로 분리 - Tokenizing)
split() : 괄호안에 분리 기준으로 삼고 싶은 문자열을 넣으면 자동적으로 분리가 된다.
배열형식으로 분리된 문자열을 선언할 수 있다.\
String[] arrString = str3.split(" "); // 공백을 기준으로 분리
for(int i=0; i<arrString.length; i++ ){
System.out.println( arrString[i] ); // 모든 문자열 출력
}
출력값 => a[0] = wow!
a[1] = wonderful!
public class ex53 {
public static void main(String[] args) {
//문자열 관련 함수들(메소드)
String str = "This is mom!";
String strKor = "가나다라";
//문자열 길이 얻기
System.out.println("문자열의 길이:" + str.length());
System.out.println("문자열의 길이:" + strKor.length());
//문자열 비교( 값 비교 )
String str2 = "This is papa!";
System.out.println( str == str ); //주소를 비교하므로 안됨!
System.out.println( str == str2 ); //주소를 비교하므로 안됨!
//다른 언어에서는 == 문자열 비교에 사용가능. C#, 파이썬, 코틀린, JS
//자바에서는 반드시 문자열비교는 equals()함수를 사용함.
System.out.println( str.equals( str ) );
System.out.println( str.equals( str2 ) );
// 값 변수 vs 참조 변수
// 값 변수(Value Variable) : 실제 값을 가지고 있음.
// 기본형 8개-int long short byte char float double boolean
// 참조 변수(Reference Variable) : 주소 값을 가지고 있음
// 문자열형 객체 배열 열거형 맵 리스트 집합
//문자열에서 문자 한자씩 가져오기
for(int i=0; i<str.length(); i++){
System.out.println( str.charAt(i) );
}
//문자열 치환하기 변경전 변경후
String resultStr = str.replaceAll("mom", "hero");
System.out.println( resultStr );
//문자열 일부만 가져오기 시작인덱스 끝인덱스+1
// "This is mom!";
System.out.println( str.substring(8, 11) );
//연습문제 34
String str3 = "java programming is good!";
//1. str3의 문자열의 길이를 출력하시오.
//2. good 문자열을 perfect로 치환하여 출력하시오.
//3. "programming" 문자열만 가져와서 출력하시오.
//4. str3의 'i'문자가 몇개인지를 갯수를 출력하시오.
System.out.println( str3.length() );
System.out.println( str3.replaceAll("good", "perfect"));
System.out.println( str3.substring(5, 16) );
int count = 0;
for( int i=0; i<str3.length(); i++){
if( str3.charAt(i) == 'i'){
count++;
}
}
System.out.println("i의 갯수는 " + count);
str3 = "Java Programming is Good!";
//특정문자열의 시작 인덱스 얻어오기
System.out.println( str3.indexOf("Programming") );
//대문자로 바꾸기
System.out.println( str3.toUpperCase() );
//소문자로 바꾸기
System.out.println( str3.toLowerCase() );
//문자열 연결
// 1. 문자열 연결 연산자 +
// 2. concat() 함수
String str4 = "Spring is also Good!";
System.out.println( str3.concat( str4 ) );
//문자열 공백 제거
String str5 = " This is Trimed String~ ";
//문자열의 시작과 끝의 공백만 제거(중간의 공백 제거 안함)
System.out.println( str5.trim() );
//문자열 중간의 공백도 모두 제거
System.out.println( str5.replaceAll(" ", ""));
//특정 문자열을 포함하고 있는지 true/false로 확인
System.out.println( str4.contains("Spring") );
//문자열 분리(토큰으로 분리 - Tokenizing)
// 구분자
String[] arrString = str3.split(" ");
for(int i=0; i<arrString.length; i++ ){
System.out.println( arrString[i] );
}
//연습문제 35
String str6 = "Web Programming is funny~";
//1. "funny"의 시작 인덱스를 출력하시오.
//2. str6를 모두 대문자로 출력하시오.
//3. str6를 모두 소문자로 ~
//4. str5와 str6을 concat함수로 연결하여 출력하시오.
System.out.println( str6.indexOf("funny") );
System.out.println( str6.toUpperCase() );
System.out.println( str6.toLowerCase() );
System.out.println( str5.concat(str6) );
String str7 = " Test Trim String ";
//5. str7의 시작과 끝 공백만 제거하여 출력하시오.
System.out.println( str7.trim() );
//6. str7의 모든 공백을 *로 치환하여 출력하시오.
System.out.println( str7.replaceAll(" ", ""));
//7. str6은 "web"문자열을 포함하고 있는지? (대소문자 안가림)
// true/false로 출력하시오.
System.out.println( str6.toLowerCase().contains("web") );
//8. str6을 문자열 배열로 만들고, "Web"와 "funny~"만 출력하시오.
String[] arrString2 = str6.split(" ");
System.out.println( arrString2[0] + "," + arrString2[3] );
}
}
'공부 > java' 카테고리의 다른 글
자바(java) 문제 풀이 복습 (0) | 2022.11.25 |
---|---|
자바(java)의 최대, 최솟값 찾기 (0) | 2022.11.23 |
자바(java)의 반복문(2) : 다양한 형태의 반복문 (0) | 2022.11.21 |
자바(java)의 조건문(2) (1) | 2022.11.19 |
자바(java)의 연산자(연산 기호) (0) | 2022.11.17 |