일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 예외처리
- 정보처리기사
- mybatis
- 백엔드
- String클래스
- 프로그래머스 SQL
- Java
- 데이터 조회
- StringBuilder
- html
- 클래스
- 자바
- where
- 자바스크립트
- select
- 스프링
- 프로그래밍
- 백준
- 메서드
- 리눅스
- select문
- SQL
- 웹개발
- github
- 개발자
- MySQL
- 형변환
- sql문
- order by
- 프로그래머스 sql 고득점 kit
- BufferedReader
- 정보처리기사필기요약
- 입출력
- 프론트엔드
- scanner
- DML
- Linux
- 알고리즘
- JavaScript
- Git
- Today
- Total
ToBe끝판왕
[ JAVA ] String 클래스 (1) 본문
■ java.lang 패키지 에 관하여 알아보자 !
• 자바 언어를 이루는 가장 기본이 되는 클래스들을 보관하는 패키지
• java.lang 패키지의 대표적인 클래스
- Object : 모든 자바 객체의 부모 클래스
- String : 문자열
- Integer, Long, Double : 래퍼타입 , 기본형 데이터 타입을 객체로 만든 것
String 클래스
• 자바에서 문자를 다루는 대표적인 타입은 char , String 2가지가 있다.
• Char
- 문자 하나 다룰 때 사용
- 여러 문자를 나열하기 위해선 char[] 배열을 사용해야 함
• String 클래스
- 문자열을 매우 편리하게 다룰 수 있다.
- String은 클래스이기 때문에, 기본형이 아닌 참조형이다.
- String은 불변객체이다.
String 클래스 주요 메서드
1) equals()
• String 클래스를 비교할때는 == 비교가 아닌, equals() 비교를 해야 한다.
• 즉 논리적으로 같은 값인지를 확인하는 것이다.
• equals( ) 예시
- main( ) 메서드와 isSame( ) 메서드를 만드는 개발자가 서로 다르다고 가정
- isSame( ) 메서드의 매개변수인 String 인스턴스가 newString( )으로 만들어진 것인지 문자열 리터럴인지 알 수가 없다.
- 문자열 비교는 항상 equals( ) 를 사용해서 동등성 비교를 해야 한다.
package lang.string.equals;
public class StringEqualsMain2 {
public static void main(String[] args) {
String str1 = new String("hello");
String str2 = new String("hello");
System.out.println("메서드 호출 비교 1: " + isSame(str1, str2));
String str3 = "hello";
String str4 = "hello";
System.out.println("메서드 호출 비교 2: " + isSame(str3, str4));
}
private static boolean isSame(String x, String y) {
return x == y;
}
}
// 실행 결과
메서드 호출 비교 1: false
메서드 호출 비교 2: true
2) String 클래스 문자열 정보 조회 메서드
• length( ) : 문자열의 길이 반환
• isEmpty( ) : 문자열이 비어있는지 확인
• isBlank( ) : 문자열이 비어있는지 확인( 길이가 0이거나 공백(whitespace) 만 있는 경우
• charAt(int index) : 지정된 인덱스에 있는 문자 반환
• 문자열 정보 조회 메서드 예시
package lang.string.method;
public class StringInfoMain {
public static void main(String[] args) {
String str = "Hello, java!";
System.out.println("문자열의 길이: " + str.length());
System.out.println("문자열이 비어 있는지: " + str.isEmpty());
System.out.println("문자열이 공백인지 1: " + str.isBlank());
System.out.println("문자열이 공백인지 2: " + " ".isBlank());
char c = str.charAt(7);
System.out.println("7번 인덱스의 문자 = " + c);
}
}
// 실행 결과
문자열의 길이: 12
문자열이 비어 있는지: false
문자열이 공백인지 1: false
문자열이 공백인지 2: true
7번 인덱스의 문자 = j
3) 문자열 비교 메서드
• equals( Object anObject ) : 두 문자열이 동일한지 비교
• equalsIgnoreCase( String anotherString ) : 두 문자열을 대소문자 구분없이 비교
• compareTo( String anotherString ) : 두 문자열을 사전 순으로 비교한다
• compareToIgnoreCase( String str ) : 두 문자열을 대소문자 구분 없이 사전적으로 비교한다
• startsWith( String prefix ) : 문자열이 특정 접두사로 시작하는지 확인한다
• endsWith( String suffix ) : 문자열이 특정 접미사로 끝나는지 확인한다
• 문자열 비교 메서드 예시
package lang.string.method;
public class StringComparisonMain {
public static void main(String[] args) {
String str1 = "Hello, Java!"; // 대문자 일부 있음
String str2 = "hello, java!"; // 모두 소문자
String str3 = "Hello, World!"; // 다른 문자
System.out.println("str1 equals str2: " + str1.equals(str2));
System.out.println("str1 equalsIgnoreCase str2: " + str1.equalsIgnoreCase(str2));
System.out.println("'b' compareTo 'a': " + "b".compareTo("a"));
System.out.println("str1 compareTo str3 : " + str1.compareTo(str3));
System.out.println("str1 compareToIgnoreCase str2 : " + str1.compareToIgnoreCase(str2));
System.out.println("str1 starts with 'Hello': " + str1.startsWith("Hello"));
System.out.println("str1 ends with 'Java!': " + str1.endsWith("Java!"));
}
}
// 실행 결과
str1 equals str2: false
str1 equalsIgnoreCase str2: true
'b' compareTo 'a': 1
str1 compareTo str3 : -13
str1 compareToIgnoreCase str2 : 0
str1 starts with 'Hello': true
str1 ends with 'Java!': true
3) 문자열 검색 메서드
• contains( CharSequence s ) : 문자열이 특정 문자열을 포함하고 있는지 확인한다
• indexOf( String ch ) / indexOf( String ch, int fromIndex ) : 문자열이 처음 등장하는 위치를 반환한다
• lastIndexOf( String ch ) : 문자열이 마지막으로 등장하는 위치를 반환한다.
• 문자열 검색 메서드 예시
package lang.string.method;
public class StringSearchMain {
public static void main(String[] args) {
String str = "Hello, Java! Welcome to Java world.";
System.out.println("문자열에 'Java'가 포함되어 있는지: " + str.contains("Java"));
System.out.println("'Java'의 첫번째 인덱스: " + str.indexOf("Java"));
System.out.println("인덱스10부터 'Java'의 인덱스: " + str.indexOf("Java", 10));
System.out.println("'Java'의 마지막 인덱스: " + str.lastIndexOf("Java"));
}
}
// 실행 결과
문자열에 'Java'가 포함되어 있는지: true
'Java'의 첫번째 인덱스: 7
인덱스10부터 'Java'의 인덱스: 24
'Java'의 마지막 인덱스: 24
4) 문자열 조작 및 변환 메서드
• substring( int beginIndex ) / substring( int beginIndex, int endIndex ) : 문자열의 부분 문자열을 반환한다
• concat( String str ) : 문자열의 끝에 다른 문자열을 붙인다
• replace( CharSequence target, CharSequence replacement ) : 특정 문자열을 새 문자열로 대체 한다
• replaceAll( String regex, String replacement ) : 문자열에서 정규 표현식과 일치하는 부분을 새 문자열로 대체한다
• replaceFirst( String regex, String replacement ) : 문자열에서 정규 표현식과 일치하는 첫 번째 부분을 새 문자열로
대체한다
• toLowerCase() / toUpperCase() : 문자열을 소문자나 대문자로 변환한다
• trim() : 문자열 양쪽 끝의 공백을 제거한다. 단순 Whitespace 만 제거할 수 있다
• strip() : Whitespace 와 유니코드 공백을 포함해서 제거한다
• 문자열 조작 및 변환 메서드 예시 (1)
package lang.string.method;
public class StringChangeMain1 {
public static void main(String[] args) {
String str = "Hello, Java! Welcome to Java";
System.out.println("인덱스 7부터의 부분 문자열: " + str.substring(7));
System.out.println("인덱스 7부터 12까지의 부분 문자열: " + str.substring(7, 12));
System.out.println("문자열 결합: " + str.concat("!!!"));
System.out.println("'Java'를 'World'로 대체: " + str.replace("Java", "World"));
System.out.println("첫 번째 'Java'를 'World'로 대체: " + str.replaceFirst("Java", "World"));
}
}
// 실행 결과
인덱스 7부터의 부분 문자열: Java! Welcome to Java
인덱스 7부터 12까지의 부분 문자열: Java!
문자열 결합: Hello, Java! Welcome to Java!!!
'Java'를 'World'로 대체: Hello, World! Welcome to World
첫 번째 'Java'를 'World'로 대체: Hello, World! Welcome to Java
• 문자열 조작 및 변환 메서드 예시 (2)
package lang.string.method;
public class StringChangeMain2 {
public static void main(String[] args) {
String startWithSpaces = " Java Programming ";
System.out.println("소문자로 변환: " + startWithSpaces.toLowerCase());
System.out.println("대문자로 변환: " + startWithSpaces.toUpperCase());
System.out.println("공백 제거(trim): '" + startWithSpaces.trim() + "'");
System.out.println("공백 제거(strip): '" + startWithSpaces.strip() + "'");
System.out.println("앞 공백 제거(strip): '" + startWithSpaces.stripLeading() + "'");
System.out.println("뒤 공백 제거(strip): '" + startWithSpaces.stripTrailing() + "'");
}
}
// 실행 결과
소문자로 변환: java programming
대문자로 변환: JAVA PROGRAMMING
공백 제거(trim): 'Java Programming'
공백 제거(strip): 'Java Programming'
앞 공백 제거(strip): 'Java Programming '
뒤 공백 제거(strip): ' Java Programming'
5) 문자열 분할 및 조합 메서드
• split( String regex ) : 문자열을 정규 표현식을 기준으로 분할한다
• join( CharSequence delimiter, CharSequence... elements ) : 주어진 구분자로 여러 문자열을 결합한다
• 문자열 분할 및 조합 메서드 예시
package lang.string.method;
public class StringSplitJoinMain {
public static void main(String[] args) {
String str = "Apple,Banana,Orange";
// Split()
String[] splitStr = str.split(",");
for (String s : splitStr) {
System.out.println(s);
}
//
// String joinStr = "";
// for (String string : splitStr) {
// joinStr += string + "-";
// }
// System.out.println("joinStr = " + joinStr);
// 마지막에 "-" 가 붙기 때문에 제거해줄 필요가 있다.
String joinStr = "";
for(int i=0; i< splitStr.length; i++) {
String string = splitStr[i];
joinStr += string;
if( i != splitStr.length-1) {
joinStr += "-";
}
}
System.out.println("joinStr = " + joinStr);
// 위와 같은 불편한 코딩방식에서 벗어나기 위한 메서드
// Join()
String joinedStr = String.join("-", "A", "B", "C");
System.out.println("joinedStr = " + joinedStr);
// 문자열 배열 연결
String result = String.join("-", splitStr);
System.out.println("result = " + result);
}
}
// 실행 결과
Apple
Banana
Orange
joinStr = Apple-Banana-Orange
joinedStr = A-B-C
result = Apple-Banana-Orange
• concat( String str )
- 문자열을 더하는 메서드
- String은 클래스이기 때문에 참조형이다.
- 참조형은 변수에 참조값이 들어가 있어 원칙적으론 + 연산자를 사용할수 없지만, 문자열은 프로그래밍에서 너무 많이 다뤄지기
때문에 특별히 + 연산자를 사용가능토록 해준다.
- concat 예시
package lang.string;
public class StringConcatMain {
public static void main(String[] args) {
String a = "hello"; // 참조값 x001
String b = " java"; // 참조값 x002
String result1 = a + b;
String result2 = a.concat(b);
System.out.println("result1 = " + result1);
System.out.println("result2 = " + result2);
// 자바에서 문자열을 다룰때는 concat 메서드를 사용해야 한다.
// 하지만 문자열은 너무 자주 다루어지기 때문에 편의상 특별히 + 연산을 허용
// ( 일반적으로 참조값끼리의 + 연산은 되지 않는다. )
}
}
※ 해당 내용은 인프런 김영한 강사님의 "실전 자바 중급1" 인강의 참고자료와 예시들을 참고하였습니다
'■ 프로그래밍 SKILLS > JAVA' 카테고리의 다른 글
[ JAVA ] 래퍼 클래스 ( Wrapper Class ) (0) | 2024.08.20 |
---|---|
[ JAVA ] String 클래스 (2) (0) | 2024.08.19 |
[ JAVA ] 불변 객체 ( 기본형과 참조형 ) (0) | 2024.08.12 |
[ JAVA ] Object 클래스 (0) | 2024.08.11 |
[ JAVA ] 예외처리를 위한 try-catch-finally 문 (0) | 2024.05.29 |