위로
아래
문자열
특징
- 문자열은 기본형이 아니라 객체이다
- 문자열도 필드와 메소드를 가지고 있다.
- 문자열도 힙 메모리에 저장된다 (객체라서)
- 문자열은 힙 메모리에 저장된 객체 데이터를 가리키고 있는 참조변수.
- 참조변수 (레퍼런스 변수) : 객체를 가리키고 있는 변수
묵시적 선언 방식
- 내용이 같은 문자열을 묵시적 방식(문자열 리터럴)으로 선언하면, 새로 문자열을 만들지 않고 힙 메모리에 있는 같은 문자열을 동시에 가리킨다.
명시적 선언 방식
- 내용이 같은 문자열을 선언해도, 새로 문자열을 만든다.
public class String1Demo {
public static void main(String[] args) {
String s1 = "Hi, Java!"; // 묵시적 선언
String s2 = "Hi, Java!"; // 묵시적 선언
String s3 = new String("Hi, Java!"); // 명시적 선언
String s4 = new String("Hi, Java!"); // 명시적 선언
System.out.println(s1==s2); // 결과 true
System.out.println(s1==s3); // 결과 false
System.out.println(s3==s4); // 결과 false
s1=s3;
System.out.println(s1==s3); // 결과 true
}
}
문자열 메소드 목록
s1.compareTo(s2) // s1
s1.compareToIgnoreCase(s2) //
s1.equals(s2) // 문자열 s1과 s2가 같으면 true, 아니면 false 반환
s1.equalsIgnoreCase(s2) // 대소문자 구분 없이 문자열 s1과 s2가 같으면 true, 아니면 false 반환
s1.charAt(index) // s1 문자열 중 인덱스 번호 번째 문자를 반환
s1.length() // s1 문자열의 길이 반환
s1.concat(s2) // s1문자열과 s2문자열을 이어 붙인다
s1.substring(3,6) // s1 문자열을 인덱스 3이상 6미만 만큼만 문자열 반환
s1.toLowerCase() // s1 문자열을 전부 소문자로 변경
s1.toUpperCase() // s1 문자열을 전부 대문자로 변경
s1.isEmpty() // 문자열이 아예 비어있으면 true, 아니면 false
s1.isBlank() // 문자열이 비어 있거나 공백이면 true, 아니면 false
s1.repeat(10) // s1 문자열을 10번 반복 출력
s1.trim() // s1 문자열의 빈칸 제거
s1.indexOf("a") // s1 문자열에서 'a' 문자를 찾아 인덱스 번호를 반환
String.format("%s %d","JDK",14) // 맨 앞 형식에 맞게 뒤에 애들 끼워넣기 (문자열, 정수형)
String.join("/","a","b","c") // 맨 앞 문자 /를 뒤에 문자들 사이마다 놓기. 결과 a/b/c
String PI = String.valueOf(3.14) // 3.14를 알아서 String으로 바꿔서 PI에 넣어라.
int a = Integer.valueOf("57") // 57을 알아서 int로 바꿔서 a에 넣어라
compareTo, compareToIgnoreCase, equals, equalsIgnoreCase 예시
더보기
public class String2Demo {
public static void main(String[] args) {
String s1 = "Hi, Java!"; // 대문자
String s2 = new String("Hi, Java!");
String s3 = "Hi, Code!";
String s4 = "hi, java!"; // 소문자
System.out.println(s1.equals(s2)); // 필드(내용)비교. 결과 true
System.out.println(s1.equals(s3)); // 필드(내용)비교. 결과 false
System.out.println(s1.equals(s4)); // 필드(내용)비교. 결과 false
System.out.println(s1.equalsIgnoreCase(s4)); // 대소문자 무시하고 필드(내용)비교. true
System.out.println(s1.compareTo(s3)); // 다른 곳 J-C = 7. 결과 7
System.out.println(s1.compareToIgnoreCase(s4)); // 같다. 결과 0
System.out.println(s3.compareTo(s4)); // 결과 -39 (-가 나온 걸로 보아 s4가 더 크다)
System.out.println("Hi, Java!".compareToIgnoreCase("hi,java!")); // 같다. 결과 0
}
}
concat, substring, toLowerCase, toUpperCase, trim, charAt 예시
더보기
public class String3Demo {
public static void main(String[] agrs) {
String s1 = new String("Hi,");
String s2 = new String(" Java");
System.out.println("문자열의 길이(s1) : " + s1.length()); // 결과 3
System.out.println(s1.charAt(1)); // 결과 i
s1 = s1.concat(s2);
System.out.println(s1.concat(s2)+"!"); // 결과 Hi, Java Java!
System.out.println(s1.toLowerCase()+"!"); // 결과 hi, java!
System.out.println(s1.substring(4,8)+"!"); // 결과 Java!
String s3 = " ";
System.out.println(s3.isEmpty()); // 결과 false
System.out.println(s3.isBlank()); // 결과 true
String s4 = "";
System.out.println(s4.isEmpty()); // 결과 true
System.out.println(s4.isBlank()); // 결과 true
String s5 = "*-*";
System.out.println(s5.repeat(10)); // 결과 *-**-**-**-**-**-**-**-**-**-*
System.out.println(s2.trim().indexOf("v")); // 결과 2
}
}
String.format, String.join, String.valueOf 예시
더보기
public class String5Demo {
public static void main(String[] args) {
String version = String.format("%s %d", "JDK", 14);
System.out.println(version);
String fruits = String.join(", ", "apple","banana","cherry","durian");
System.out.println(fruits);
String pi = String.valueOf(3.14);
System.out.println(pi);
int a = Integer.valueOf("57");
Boolean.valueOf("true");
}
}
가변 개수 매개변수 ...
개수가 정해져 있지 않으면 매개변수에 ...을 쓰면 동적으로 받아들인다.
예시
더보기
public class String6Demo {
public static void main(String[]args) {
printsum(1,2,3,4,5);
printsum(10,20,30);
System.out.println(String.format("My Score is %.1f",99.8));
System.out.println(String.join(",", "one", "two","three"));
}
public static void printsum(int ...v) {
int sum=0;
for(int i :v) {
sum += i;
}
System.out.println(sum);
}
}