티스토리 뷰
1. 참조 자료형 String
클래스 자료형으로 선언. 초기화 가능.
문자열 저장 클래스로 쌍따옴표(" ") 사용.
(1) String 객체 생성 방법
String 참조변수명 = new String("문자열");
└new : 항상 새로운 객체를 만듦.
String 참조변수명 = "문자열";
└문자열이 같으면 하나의 객체를 공유
_예시)
String str1 = "Java";
String str2 = "Java";
String str3 = new String("Java");
String str4 = new String("Java");
String str5 = str4;
//1
System.out.println(str1); // Java
System.out.println(str2); // Java
System.out.println(str3); // Java
System.out.println(str4); // Java
System.out.println(str5); // Java
//2
System.out.println(str1 == str2); //true
System.out.println(str2 == str3); //false
System.out.println(str3 == str4); //false
System.out.println(str4 == str5); //true
//3
str5 = "Java Program"; // str5 새로운 객체 만들어 값 초기화. 기존의 Java는 연결이 끊겨 가비지
System.out.println(str4); //Java
System.out.println(str4 == str5); //false
-str1과 str2는 문자열이 같아 하나의 객체를 공유
-new 키워드는 항상 새로운 객체르 만드므로 str4 != str5
-3 : str5에 새로운 값을 대입하면 새로운 객체 생성되어 값 대입. 기존의 값(Java)와 연결이 끊기며 가비지(Garbage)
(2) String 특징
-리터럴을 바로 입력한 데이터는 문자열이 같은 경우 하나의 객체를 공유
String str1 = "java";
String str2 = "java";
-객체 내 값 변경 불가능
값을 변경하면 새로운 객체를 생성하여 값 대입(초기화)
String str1 = "java"; //첫번째 객체 : java
String str1 += "program"; //두번째 객체 : javaprogram
String str1 += "1.8"; //세번째 객체 : javaprogram1.8
└기존의 값에서 갱신되는 게 아니라 새로운 객체 생성해서 저장.
└객체랑 변수 연결이 끊어져 가비지(garbage) 생성.
└문자열 연산할 때, 가비지 많이 생성됨. 계속 새로운 객체를 만들기 때문에.
String str1 = new String("안녕");
String str2 = str1;
str1 = "안녕하세요"; //값 갱신이 아니라 새로운 객체 생성
2. 문자열 연산
(1) Plust Operator(더하기 연산)
-Type_1 : 문자열 + 문자열 : 문자열 연결
String str = "Hello" + " java " + "world" + " !";
System.out.println(str); // 결과 : Hello java world !
└각 배열 요소 : Hello, java, world, !를 플러스 연산(연결)
Hello java → Hello java world → Hello java world!(최종 결과값)
각각 새로운 객체로 저장. 가비지 발생.
-Type_2 : 기본 자료형 + 문자열 : 기본자료형을 문자열 변환 → 문자열 연결
System.out.println(1+"안녕"); //1안녕
System.out.println(1+"안녕"+2); //1안녕2
System.out.println("안녕"+1+2); //안녕12
System.out.println(1+2+"안녕"); //3안녕
└정수 자료형이 문자형으로 바뀌어 연산
(2) 문자열 길이 : length();
공백 포함. 주로 배열의 반복문 조건식에서 많이 쓰임.
String str = "Hello java world";
System.out.println(str.length()); //결과값 16(공백 count)
(3) 문자열 검색 : charAt(), indexOf(), lastIndexOf()
-Type_1 : charAt(); : String 문자열 중 한 글자를 선택해 char 타입으로 변환
String str = "Hello java world";
System.out.println(str.charAt(0)); //str 문자열에서 인덱스 0번 가져오겠다. - H
System.out.println(str.charAt(1)); //str 문자열에서 인덱스 1번 값 가져오겠다. - e
-Type_2 : indexOf(), lastIndexOf() - 특정 문자 위치 찾기
찾는 방향이 순방향인지 역방향인지 차이일뿐 인덱스 번호가 바뀌는 것은 아님.
결과값이 -1이면 찾고자 하는 문자가 문자열 내에 없다.
String str = "Hello java world";
System.out.println(str.indexOf("p")); //결과값 -1 문자 없음.
System.out.println(str.indexOf("v")); //결과값 8
System.out.println(str.lastIndexOf("v")); //결과값 8
System.out.println(str1.indexOf("r"));
System.out.println(str1.lastIndexOf("r"));
System.out.println(str1.indexOf("r", 4)); //r을 찾는 시작 위치 : 4
(4) 문자열 변환 및 연결
-Type_1 : valueOf() - 괄호 안의 값을 String으로 변환.
System.out.println(String.valueOf(1));
System.out.println(String.valueOf(-5.3));
-Typle_2 : concat() - 문자열 이어 붙이기
System.out.println("java".concat(" Program")); //java Program
(5) 문자 배열 변환
-Type_1 : getByte(); - byte로 변환
System.out.println();
String str10 = "java"
byte[] bs = str10.getBytes();
//배열 출력
for(byte b:bs){ //bs라는 배열로부터 값을 하나씩 꺼내서 b에 할당.
System.out.println(b);
}
-Type_2 : toCharArray(); - char로 변환
String str10 = "java"
char[] chs = str10.toCharArray();
//반목문
for(char ch:chs){ //chs 배열로부터 하나씩 꺼내서 할당. ch 끝날 때까지 반복.
System.out.println(ch);
}
(6) 문자열 수정
-Type_1 : toLowerCase();, toUpperCase();
문자열을 소문자/대문자로 바꾼다.
String str1- = "java program 1.8";
System.out.println(str1.toLowerCase()); //결과 : java program 1.8
System.out.println(str1.toUpperCase()); //결과 : JAVA PROGRAM 1.8
-Type_2 : replace(); - 문자열의 문자를 바꾼다(대체한다)
String str1- = "java program 1.8";
System.out.println(str1.replace("1.8", "17")); //java program 17
-Type_3 : substring(); - 문자열 잘라서 반환
String str1 = "java program 1.8";
//1
System.out.println(str1.substring(5)); // program 1.8
//2
System.out.println(str1.substring(5, 12)); // program
└1은 str1[5]부터 끝까지 리턴.
└2는 str1[5] ~ str1[12-1] 리턴.
-Type_4 : split(); - 지정한 문자를 기준으로 문자열 자르기
String str1- = "java program 1.8";
String[] strArray=str1.split(" "); //공백을 기준으로 나눈 뒤 문자열 배열 strArray에 대입
System.out.println(strArray[0]); //결과 : java
System.out.println(strArray[1]); //결과 : program
System.out.println(strArray[2]); //결과 : 1.8
└공백을 기준으로 자른 뒤 문자열 배열 strArray에 대입
-Type_5 : trim(); - 문자열의 좌우공백 제거
String str10 = "java program 1.8";
String str9 = " java ";
str9 = str9.trim(); //java
└문자열의 처음과 끝에 있는 공백 제거. 문자열 사이에 있는 공백은 제거하지 않음.
(7) 문자열 내용 비교 .equals(); / .equalsIgnoreCase(); ★
String str10 = "java program 1.8";
String str3 = "java";
String str4 = new String("java")
System.out.println(str3 == str4); //메모리번지(stack) 비교 //false
System.out.println(str3.equals(str4)); //문자열 비교 // true
System.out.println(str3.equalsIgnoreCase(str4)); //문자열 대소문자 구분없이 비교. //true
(8) 문자열 쪼개기 StringTokenizer
사용하기 위해서는 import 필요. StringTokenizer 위에서 [ctrl] + [shift] + [o]
String str = "씽2게더, 스파이더맨:노 웨이 홈,특송-경관의 피/하우스 오브 구찌";
StringTokenizer st = new StringTokenizer(str, ",=-/");
System.out.println(st.countTokens());
while(st.hasMoreTokens()){ //토큰을 쪼개서 꺼내 st 대입. st에 값이 있는 동안 반복
System.out.println(st.nextToken());
}
//split 사용
String[] str1 = str.split(",|-|/");
for(Stirng s:str1){
System.out.println(s)
}
└Split : 글자를 자를 때, 하나의 형태로 구분했다면 split 사용하면 편함. ex 공백, 콤마, 슬래스 중 하나로 구분
└StringTokenizer는 자바 유틸이라 임포트해야 함.
(java.lang에 있는 Math, Integer, class 등은 별도의 임포트할 필요없음)
'수업 > └Java' 카테고리의 다른 글
| [CH06_2]클래스 내부 구성 요소 (0) | 2022.01.31 |
|---|---|
| [CH06_1]클래스 기본 문법 (0) | 2022.01.31 |
| [CH05_1]참조 자료형 : 배열(Array) (0) | 2022.01.31 |
| [CH04_02]제어문 : 반복문 (0) | 2022.01.30 |
| [CH04_1]조건문 실습 예제_책 (0) | 2022.01.30 |
- Total
- Today
- Yesterday
- 미디어 태그
- html layout
- text formatting
- html input type
- html pre
- html atrribute
- Java
- 입력양식
- ScriptTag
- 기본선택자
- html a tag
- border-spacing
- initialized
- selcetor
- typeof
- input type 종류
- 변수
- improt
- html
- BAEKJOON
- css
- empty-cell
- scanner
- 스크립태그
- A%B
- CascadingStyleSheet
- JavaScript
- caption-side
- 외부구성요소
- html base tag
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |