CH 9. 문자열과 메소드
문자열 메소드의 종류
- String.charAt(인덱스)
- String.length()
- String.startsWith(”문자열”)
- String.endsWith(”문자열”)
- String.indexOf(”문자열”)
- String.lastIndexOf(”문자열”) // 가장 마지막에 나오는 ‘첫글자’의 위치 반환
- // 못 찾으면 -1 반환
- String.replace(”찾을 문자열”, “덮어씌울 문자열”)
- String.substring(시작 인텍스, 마지막 인덱스+1) // (0, 4)라면 인덱스 0~3까지 반환
- String.split(”구분자 문자열”)
- String.toUpperCase()
- String.toLowerCase()
- String.trim() // 앞뒤 공백 제거
- str1.compareto(str2) // str1 - str2 의 결과를 반환. 예를 들면,
- “Java Programming”
-
- “Java IT CookBook”
- ⇒ (P = 아스키 80) - (I = 아스키 73)
- ⇒ 7 반환
- String.contains(”문자열”)
- 내용과 주소가 모두 같아야 하는 비교 ==
- 내용만 같으면 참인 비교 str1.equals(str2)
지역변수와 전역변수
지역변수(local)
: 현재 메소드 내부에서만 정의되고 사용되는 변수
전역변수(global)
: 메소드 밖에서 정의되는 변수. = 필드 변수 = 클래스/인스턴스 변수
값의 전달과 주소의 전달
이 인자가 네 것이냐, 저 인자가 네 것이냐?
예이,
static void func2(char x, char y) {
→ 전 기본 데이터 형식을 파라미터로 갖는 “값 전달” 메소드입니다요~
static void func2(Character x, Character y) {
→ 전 클래스 객체(=기본 데이터 형식이 아닌 모든 것)를 파라미터로 갖는 “주소 전달” 전용 메소드입니다요~
값의 전달, call by value
: 인자의 값을 복사해서 메소드의 자체 지역변수에 할당하는 것.
주소의 전달, call by reference
: 클래스 객체를 인자로 전달하는 것.
클래스 객체를 전달할 경우 (클래스 객체는 어떤 하나의 값이 아니므로) 그 주소가 전달되게 되므로 주소(=참조) 전달이 되는 것이다. 그래서 메소드 내에서 그 클래스 객체를 부르고 그 안의 필드 변수를 조작하면, 메소드 밖에서 조작하는 것과 같이 조작할 수 있게 된다.
- [ ] ⇒ 쉽게 말해 필드 변수는 무조건 전역 변수니까, 메소드 안에서라도 전역변수 값을 변경하면 그 전역변수를 메소드 밖에서 호출해도 당연히 바뀌어 있는 것이다. 란 논리가 가능할까? 다시 말해, 메소드 안에서 전역변수를 수정할 수 있을까?
- [ ] static으로 된 클래스 변수, 클래스 메소드는 “클래스 변수와 메소드이기 때문에’ 자기 자신 클래스 안에서 불릴 수 있는 걸까, static이 아니어도 불릴 수 있는 걸까?
기본 데이터 형식 | 래퍼 클래스 |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
https://www.notion.so/CH-9-f92df275145f4e4385d56d6d1d752137
https://brainy-shop-8e4.notion.site/CH-9-f92df275145f4e4385d56d6d1d752137
CH 9. 문자열과 메소드
문자열 메소드의 종류
brainy-shop-8e4.notion.site