String 클래스
- 원래 char[ ] = { A, A, A } -> 인덱스 0, 1, length-1
다른 인덱스들은 왼쪽으로 옮겨서 문자열처럼 보이게 함
String은 생성자를 사용해서 객체를 만들 필요 없이 기초 데이터를 사용할 때처럼 바로 초기화해서 사용 가능
String 클래스의 주요 메서드 | |
charAt() | 특정 인덱스의 글자를 리턴. 한 글자 자르기 char형 반환인데 + 사용하여 String에 붙일 수 있음 |
indexOf() | 특정 문자열의 시작 인덱스 값을 반환 찾는 문자의 위치를 반환 (앞에서부터) 찾는 문자가 없다면 -1 을 리턴 |
lastIndexOf() | 찾는 문자의 위치를 반환 (뒤에서부터) |
length() | 문자열의 길이 |
replace() | 특정 문자열을 변경 str.replace (찾을 문자, 변경할 문자) // 전부 다, str(원본 문자는 그대로 유지) ex) 공백 지우기 가능 (" ", "") |
substring() | 인덱스를 기준으로 그 앞의 문자열을 잘라줌. 만약 매개값으로 인덱스를 2개 주면 처음 매개값 이상 두 번째 매개값 미만의 문자열을 제외하고 나머지를 삭제 |
toUpperCase() | 전부 대문자로 치환 |
toLowerCase() | 전부 소문자로 치환 |
trim() | 문자열의 앞, 뒤 공백을 제거 |
equals() | 문자열의 값을 비교 |
valueOf() | 기본 데이터 타입의 값들을 문자열로 변환 ( 숫자, 실수 등 -> 문자 변경 ) |
split() | 특정 문자열 기준으로 잘라서 배열에 리턴 분해: 문자열을 쪼개서 배열로 담아줄 수 있음 |
ctrl + space로 확인하면 :Int, :String, :Char... => Int로 저장 가능, String으로 저장 가능, Char로 저장 가능
문자열 자르기
subString - 자르고 싶은 부분만 자르기
String
인덱스 0, 1, 2, 3 (3) 숫자쓰면 인덱스 미만 절삭
split - 특정 문자 기준으로 잘라서 배열에 담기
String[ ] 배열
"-" 기준으로 자름
" " 공백 기준으로 자름
toCharArray - 하나씩 뜯어서 다 Char로 배열에 담기
type별로
"A" →X 숫자
↓ ↗
Char 'A' 바꾸기
StringManipulation - 문자열 다루기
1. 변수명.length()
길이 확인
2. 변수명.charAt(인덱스 값)
문자열 한글자 자르기 = 넣은 인덱스 값만 나옴
char c = alp.charAt(0);
int b = a.charAt(0); -- 두개처럼 바꿔줄때도 사용?
3. 변수명.indexOf("찾는 문자")
변수명.lastIndexOf("찾는 문자")
문자열의 위치 확인 - 찾는 문자의 위치 반환
4. 변수명.replace("바꿀 문자","바뀐 문자")
문자열 변경, 공백 제거(" ", "")
원본 문자는 그대로 유지
5. 변수명.toUpperCase(), 변수명.toLowerCase()
대소문자 변경
원본 문자는 그대로 유지
6. 변수명.trim()
공백 제거 (4번 replace는 모든 공백 제거 가능)
7. String.vlaueOf(기본 타입)
기본 타입을 문자로 변경
8. 문자열 자르기
변수명.subString(인덱스 or 인덱스, 인덱스(이상~미만)) - 인덱스 기준으로 자름
변수명.split("-") - 특정 문자 기준으로 잘라서 배열에 담음
변수명.toCharArray - 하나씩 뜯어서 다 char로 배열에 담음
Quiz
StudentManager - 선생님 풀이
- 문제 해석
- 길이가 100인 문자열 배열 nameList, 문자열 배열 genderList, 숫자 배열 ageList 생성
- 현재 고객수를 나타내는 count변수 생성, 기본값은 0부터 시작
- Index 조정할 변수 선언 -1부터 시작 = 메뉴 인덱스 위치
사람 넣은 인덱스가 0부터 시작임 - While 무한반복문 안에서 메뉴 선택할 수 있는 스캐너 생성
- switch ~ case 조건문 안에서 1~7번까지 숫자 선택했을 때 문제가 맞는 결과가 나오게 출력
(switch 뒤에 나오는 값은 반드시 상수(정수,문자)를 사용해야 하고, 매칭된 값이 있는 case로 한방에 들어가서 실행하고, break로 빠져나옴)
- Case 1
- 입력 받아서 => scanner 사용
- 각각 배열에 저장 -> 위의 배열 이름[ ] = 스캔한 변수명
- Count = 0부터니까 한사람 저장할때마다 1씩 증가, 숫자 세기 -> count++;
인덱스는 0번부터 추가
- Case 2
- if 조건문
인덱스가 0이하면 출력문 출력 -> index <= 0; , 이전 고객정보가 없습니다 출력 - else 인덱스 --; 하나씩 줄면서 고객정보 출력 -> 배열이름[index] 출력
- if 조건문
- Case 3
- if 조건문
다음 고객정보를 출력할 수 없는 조건과 index를 이전으로 이동하고 다음고객정보를 출력하는 방법
index와 count의 관계는 최대가 index = count-1임, i - else 인덱스 ++; 하나씩 늘어나면서 고객정보 출력 -> 배열이름[index] 출력
- if 조건문
- Case 4
- 현재 위치의 고객정보 출력 -> 현재 위치 인덱스 찾기
무조건 index >= 0, 사람수 count보다는 하나 작음
사람수 1명이 index[0];부터 저장되니까 - else 그거 아니면 현재 고객정보가 없습니다 출력
- 현재 위치의 고객정보 출력 -> 현재 위치 인덱스 찾기
- Case 5
- Case 4의 현재 위치의 고객정보 출력
- 현재 정보를 출력
- scan 값을 현재 정보 인덱스에 넣기, 왼 -> 오
- else 그거 아니면 수정할 데이터가 없습니다 출력
- Case 6
- Case 4의 현재 위치의 고객정보 출력
- 배열에서는 삭제의 개념이 없으므로 현재 인덱스 뒤의 내용을 앞으로 하나씩 땡겨서 덮어줌
- For 반복문
int i = index(현재 위치 인덱스), i < count-1 인덱스는 사람수-1 보다 작음
뒤의 인덱스 i+1이 앞의 인덱스 i에 저장됨, 왼 -> 오 - 고객수 감소 count--;
- else 그거 아니면 삭제할 데이터가 존재하지 않습니다 출력
- Case 7
- scan 넣을 수 없게 닫기
- 무한루프를 한번에 완전히 탈출하려면 이름 = close 생성해서 close break로 탈출
- default - case에 맞지 않는 값을 입력하면
- 메뉴를 잘못 입력했습니다
Quiz20 - 문자열 다루기 심화
- 문자열 ABC -> 한글자씩 char 저장
- 스캐너로 입력받아 String 문자열 str변수 생성
- str 변수의 길이 크기의 문자'형' 배열을
Char[] arr -> 문자'형' arr에 배열에 넣기 - for반복문을 돌리면서 str문자열을 charAt (인덱스 하나씩 나눔)으로 하나씩 나눠서 새로 만든 문자'형' arr배열에 넣기
- 확인은 Arrays.toString(arr)
- -----------------------------------------------
- str.toCharArray() 사용해서 하나씩 뽑아서 새로운 문자'형' arr2 배열에 바로 넣어줌
- 아래 두줄은 모지... for반복문?
- -
- 문자열 찾아서 몇 개 포함되어 있는지 출력
- 처음 문자열 하나 입력 받음 => scanner 사용
- 두번째 문자열 입력 받음 (무작위로)
- char c라는 새로운 변수에 charAt으로 첫번째 인덱스(0)에 스캔받은 alp 넣기기
- 두번째 문자열도 반복문을 돌리면서 charAt으로 하나씩 뽑아서 넣어주기
- 만약 맨 처음 입력한 char c = String alp와 두번째 문자열의 인덱스 값이 같으면 숫자를 하나씩 센다(변수 count 생성)
오늘 하루
기억에 남는 부분
- 문자열 자르기에서 split과 toCharArray만 잘라서 배열에 담음
- 문자열을 자를때 그냥 자르기만 해서 반환하는지 배열에 담는 것인지 확인 필수
어려운 부분
- String 클래스의 문자열 자르기 잘 안외워짐
- 문자열 자르기 & 배열 관련 헷갈림
문제 해결 부분
- studentmanager에서 while구문 사용해서 시작하므로 그 안에 while 안 넣어도 됨
'프로그래밍 언어 > Java' 카테고리의 다른 글
[Java] 객체 배열(Array of Objects), 메서드 실행, 피보나치 수열 (0) | 2022.10.05 |
---|---|
[Java] method(메서드) (0) | 2022.10.04 |
[Java] Array insert, update, delete (배열의 삽입, 수정, 삭제) (0) | 2022.09.29 |
[Java] 탈출문(break, continue, return), 무한루프 while(for), array (0) | 2022.09.28 |
[Java] for, 중복 for, 향상된 for(배열 담기) (0) | 2022.09.27 |