본문 바로가기
Java

String

by 코낄2 2024. 6. 5.

1. 다양한 문자열 메서드

String s = "I like Java and Python and C.";
System.out.println(s);

// 문자열의 길이
System.out.println(s.length()); // 29

// 대소문자 변환
System.out.println(s.toUpperCase()); // 대문자로 변환
System.out.println(s.toLowerCase()); // 소문자로 변환
System.out.println(s); // in-place 연산 아님.

// 포함 관계
System.out.println(s.contains("Java")); // 포함되면 true, 포함되어 있지 않으면 false
System.out.println(s.contains("C#"));

//위치 정보
System.out.println(s.indexOf("Java")); // 처음 만나는 인덱스 번호 출력
System.out.println(s.indexOf("C#")); // 포함하지 않으면 -1
System.out.println(s.lastIndexOf("and")); // 마지막부터 일치하는 인덱스 번호
System.out.println(s.startsWith("I like")); // 이 문자열로 시작하면 true
System.out.println(s.endsWith(".")); // 이 문자열로 끝나면 true

 

String s = "I like Java and Python and C.";

// 문자열 변환
System.out.println(s.replace(" and",",")); // " and" 를 ","로 변환
System.out.println(s.substring(7)); // 시작 위치에서 끝 위치까지만 출력, 끝을 정해주지 않으면 끝까지.
System.out.println(s.substring(s.indexOf("J")));
System.out.println(s.substring(s.indexOf("J"), s.lastIndexOf("."))); // . 직전까지 출력
System.out.println(s); // 위 함수들이 in-place 연산 아님

// 공백 제거
s = "      I love Java.      ";
System.out.println(s);
System.out.println(s.trim()); // 앞뒤 공백 제거

// 문자열 결합
String s1 = "Java";
String s2 = "Python";
System.out.println(s1 + s2);
System.out.println(s1 + "," + s2);
System.out.println(s1.concat(",").concat(s2));
// 문자열 비교
String s1 = "Java";
String s2 = "Python";

System.out.println(s1.equals("java")); // 문자열 내용이 같으면 true, 다르면 false
System.out.println(s1.equals(s2));
System.out.println(s1.equalsIgnoreCase("java")); // 대소문자 상관 X 내용만 비교

// 문자열 비교 심화
s1 = "1234";
s2 = "1234"; // 상수 풀에 있는 "1234"를 동일하게 참조 함.

System.out.println(s1.equals(s2)); // true - 내용을 비교
System.out.println(s1 == s2); // true - 참조하고 있는 주소를 비교

String s3;
String s4;
s3 = new String("1234"); // 새로운 String 객체가 힙 메모리에 생성됨.
s4 = new String("1234"); // 상수 풀에 동일한 내용이 있어서 불필요한 객체 생성이라는 경고가 뜸.
System.out.println(s3.equals(s4)); // true - 내용을 비교
System.out.println(s3 == s4); // false - 참조하고 있는 주소를 비교
참고.

자바에서는 문자열 리터럴을 생성하면, 해당 문자열은 문자열 상수 풀에 저장됩니다.
예를 들어, String s = "1234";라고 하면 "1234"는 상수 풀에 저장되고, s는 이 문자열을 참조합니다.
동일한 내용은 상수 풀의 문자열을 재사용하게 되어 메모리를 절약할 수 있습니다.


new String("1234") 를 사용하면, 새로운 String 객체가 힙 메모리에 생성됩니다.
이렇게 하면 상수 풀에 있는 문자열과 힙에 있는 새로운 String 객체, 두 개의 문자열 객체가 존재하게 됩니다.

equals내용을 비교
== 참조하고 있는 주소를 비교합니다.

2. 이스케이프 문자

이스케이프 문자(Escape Character)는 역슬래시(\)로 시작하는 특수한 문법입니다. 이스케이프 문자는 문자열 내에서 특정한 기능을 수행하거나 특별한 의미를 부여하기 위해 사용됩니다.

// 특수문자, 이스케이프 문자 (Escape Sequence, Escape Character, Special Character)

// \n : 줄바꿈
System.out.println("자바가\n너무\n재밌어요");

// 해물파전     9000원
// 김치전      8000원
// \t는 tab을 한 것 처럼 간격을 맞춰준다.
System.out.println("해물파전\t9000원");
System.out.println("김치전\t8000원");

// \\ : 그냥 \를 문자열처럼 프린트하고 싶다면 \\ 두번 입력
System.out.println("C:\\Program Files\\Java");

// \특수문자 : 따옴표와 같이 특수문자를 문자열로 포함하고 싶을 때
System.out.println("단비가 \"냐옹\"이라고 했어요.");
System.out.println("단비가 '뭘 봐?'라는 표정을 지었어요."); // 작은 따옴표는 string 안에서는 \ 안해도 된다.
char c = 'A';
// c = ''';  //오류
c = '\'';
System.out.println(c);
자바가
너무
재밌어요
해물파전 9000원
김치전     8000원
C:\Program Files\Java
단비가 "냐옹"이라고 했어요.
단비가 '뭘 봐?'라는 표정을 지었어요.
'

String idNumber;
idNumber = "123456-7891012";

System.out.println(idNumber.replace(idNumber.substring(8),"******"));
System.out.println(idNumber.substring(0,8));
System.out.println(idNumber.substring(0, idNumber.indexOf("-")+2));
123456-7******
123456-7
123456-7

'Java' 카테고리의 다른 글

반복문  (0) 2024.06.17
조건문  (0) 2024.06.09
연산자  (0) 2024.06.05
출력,자료형,형변환  (0) 2024.06.01
윈도우에서 JDK / IDE 설치  (0) 2024.05.31