java 문법 구멍이 많아서 기초부터 다시 빠르게 짚고 넘어갈 겸 간단하게 정리해본다. 👩💻
💡 대부분의 내용을 점프 투 자바 에서 참고하여 정리하였습니다.
정수
int
int i = 30;
long
long l = 30L;
short
short s = 30;
byte
byte b = 30;
- int와 long을 주로 사용하고, short와 byte는 잘 사용하지 않는다.
- Long이 int보다 더 큰 범위이다. (더 많은 숫자를 담을 수 있음)
- long > int > short > byte
형변환
int i = (int) 30L; // long -> int 강제 형변환
long ll = 30; // int -> long 자동 형변환
실수
double
double dd = 30.0;
float
float ff = 30.0f; //30.0F도 가능
- double이 float보다 더 큰 범위이다.
불
boolean
boolean isMarried = true;
isMarried = false;
문자
char
char c = 'a';
char cc = '한';
영/한 상관 없이 한 글자만 사용
문자열
String
String str = "여러 글자";
문자열 내장 메서드
- equals
- 2개의 문자열을 비교
- 사용법
- 문자열1.equals(문자열2)
System.out.println("hello".equals("java")); // false 출력
- == 연산자는 2개의 자료형이 같은 객체인지를 판별할 때 사용하므로 원하는 결과값이 나오지 않을 수 있다. 두 문자열을 비교할 때는 반드시 equals 메소드를 사용하자.
- indexOf
- 특정 문자열이 시작되는 위치(index값)을 리턴
- 사용법
- 문자열1.indexOf(문자열2)
String str = "I love Java"; System.out.println(str.indexOf("Java")); // 7 출력 System.out.println(str.indexOf('o')); // 3 출력
- contains
- 특정 문자열의 포함 여부를 리턴
- 사용법
- 문자열1.contains(문자열2)
String str = "I love Java"; System.out.println(str.contains("Java")); // true 출력 System.out.println(str.contains("Python")); // false 출력
- charAt
- 특정 index의 문자를 리턴
- 사용법
- 문자열.charAt(인덱스)
String str = "I love Java"; System.out.println(str.charAt(3)); // o 출력
- replace, replaceAll
- 특정 문자열을 모두 찾아서 다른 문자열로 변경
- 사용법
- 문자열1.replace(target 문자열, replacement 문자열);
- 문자열1.replaceAll(target 문자열, replacement 문자열);
String str = "I love Java"; System.out.println(str.replaceAll("love", "hate")); // I hate Java 출력
- replace vs. replaceAll
- replaceAll은 인자값으로 정규 표현식을 사용할 수 있다. But, replace는 불가능
String str = "abcdefghijk"; System.out.println(str.replaceAll("[abchij]", "z")); //zzzdefgzzzk 출력 System.out.println(str.replace("a", "z").replace("b", "z").replace("c", "z").replace("h", "z").replace("i", "z").replace("j", "z")); //zzzdefgzzzk // 정규표현식을 활용해 원하는 문자열을 제외하고 치환 System.out.println(str.replaceAll("[^abchij]", z)) // abczzzzhilz 출력
- 연속되지 않는 여러 문자를 한번에 치환하기 원하는 경우에 replaceAll( )과 정규 표현식을 활용하면 쉽게 구현할 수 있다.
- 대상 문자열이 어떤 형태인지 모를 경우에는 replaceAll( )을 활용하는 것이 좋다.
- 주의할 점
- 연산 속도는 replace가 더 빠르므로 간단한 구문을 구현할 때는 replace를 사용하자.
- replaceAll에서는 “.”을 정규표현식으로 인지하여 모든 문자열로 해석한다.
-
String str ="aa..bbcc"; System.out.println(str.replace(".", "dd")); // aaddddbbcc 출력 System.out.println(str.replaceAll(".", "dd")); // dddddddddddddddd 출력
- substring
- 문자열에서 특정 문자열을 뽑아냄
- 사용법
- 문자열.substring(시작 인덱스, 끝 인덱스);
String str = "I love Java"; System.out.println(str.substring(2,6)); // love 출력
- 끝 인덱스의 문자는 포함이 안된다는 점에 주의하자!
- toUpperCase
- 문자열을 모두 대문자로 변경할 때 사용
- 사용법
- 문자열.toUpperCase();
String str = "I love Java"; System.out.println(str.toUpperCase()); // I LOVE JAVA 출력
- split
- 문자열을 특정 구분자로 나누어 배열로 리턴
- 사용법
- 문자열.split(구분자);
String str = "I love Java"; String[] res = str.split(" "); System.out.println(Arrays.toString(res)); // [I, love, Java] 출력
문자열 formating
- 숫자 대입
int i = 5;
System.out.println(String.format("I ate %d bananas", i));
// I ate 5 bananas 출력
- 문자열 대입
String str = "java";
System.out.println(String.format("I love %s", str)); // I love java 출력
- System.out.printf
- 포매팅된 문자열을 리턴
- String.format 메서드 없이도 포매팅된 문자열 출력 가능
System.out.printf("I eat %d apples.", 3); // I eat 3 apples. 출력
StringBuffer
- 문자열을 추가하거나 변경할 때 주로 사용
- String vs. StringBuffer
- String : 불변한 문자열 처리를 위한 클래스. 최초 생성한 객체에 추가 or 변경이 발생하는 경우 새로운 객체가 다시 생성되어 구성됨.
- StringBuffer : 가변한 문자열 처리를 위한 클래스. 새로운 문자열을 추가 or 변경하면 기존의 객체 상태가 변경되어 구성됨.
- StringBuffer는 String에 비해 메모리를 많이 차지하고, 속도도 느리다.
- → 문자열을 추가하거나 변경하는 작업이 많으면 StringBuffer를, 적으면 String을 사용하자!
StringBuffer 메서드
- append : 맨 끝에 문자열 추가
StringBuffer sb = new StringBuffer();
sb.append("I");
sb.append(" love");
sb.append(" Java");
System.out.println(sb); // I love Java 출력
- insert : 특정 위치에 원하는 문자열 삽입 (index 사용)
StringBuffer sb = new StringBuffer();
sb.append("I love Java");
sb.insert(2, "don't ");
System.out.println(sb); // I don't love Java 출력
- substring : 문자열에서 특정 문자열을 뽑아냄. String의 substring 메서드와 동일하게 동작.
'Java > 문법' 카테고리의 다른 글
[Java 문법 총정리] final (1) | 2024.01.27 |
---|---|
[Java 문법 총정리] 문자열 ↔ 숫자 형변환 / int ↔ char (0) | 2024.01.27 |
[Java 문법 총정리] 상수 집합 enum (1) | 2024.01.27 |
[Java 문법 총정리] Math 클래스, Random 클래스 (0) | 2024.01.27 |
[Java 문법 총정리] 배열, 리스트, 맵, 집합 (2) | 2024.01.24 |