StringBuilder
StringBuffer 클래스와 기능이 완전히 동일하지만 한가지 차이점이 있다.
StringBuffer는 동기화가 되어있지만 StringBuilder는 동기화가 되어있지 않다
말인 즉슨, StringBuffer는 멀티쓰레드의 사용 시 안전하다는 의미이다 (thread-safe).
쓰레드는 single thread와 multi thread가 있는데 single thread는 한가지 작업만 할 수 있고 multi는 여러개의 작업을 허용한다.
예시로 카카오톡으로 파일을 보낼 경우에는 single thread는 채팅을 할 수 없지만 multi는 이 작업을 동시에 가능하게 만든다.
multi thread의 단점은 서로 메모리를 공유하기 때문에 서로의 작업을 간섭할 수 있는데 StringBuffer는 이 메모리 간섭에 안전하게 보호되어 있다. 이 안전한 메모리 보호를 '동기화되어있다' 라고 한다.
결론: 따라서 멀티쓰레드를 사용할 때 StringBuffer를 쓰고 싱글쓰레드를 사용 시 StringBuilder를 사용한다
목적: 성능 향상, 나중에 멀티쓰레드로 프로그램을 변경할 시 자료형만 변경해주면 해결
Math 클래스 & 메서드
대표적인 static 클래스이기 때문에 따로 자료형을 선언하지 않아도 메서드 호출이 가능하다.
메서드의 종류
- Math.abs : 절대값 반환
- Math.random : 랜덤 실수형 숫자 반환
- Math.ceil : 반올림 시 주어진 값을 올림하여 반환, 즉 반올림 값이 0.5 미만이여도 큰 숫자로 올림하여 반환
- Math.floor : 주어진 값을 버림하여 반환, 즉 0.5 이상의 값이 있어도 버림하여 작은 숫자로 반환한다.
- Math.max : 둘 중에 큰 값을 반환
- Math.min : 둘 중에 작은 값을 반환
- Math.rint :
반올림을 할 때 앞의 int값(정수값)이 짝수이면 버림하여 작은 숫자로 반환하고 홀수이면 올림하여 큰 숫자로 반환한다.
roundeven과 메서드의 기능이 같다
출력문:
0.5 반올림 전과 후 0.0
1.5 반올림 전과 후 2.0
2.5 반올림 전과 후 2.0
3.5 반올림 전과 후 4.0
4.5 반올림 전과 후 4.0
for(double d = 0.5; d<=4.5; d++) {
double r = Math.rint(d);
System.out.println(d + " 반올림 전과 후 " + r);
}
'Java > 자바의정석 기초편' 카테고리의 다른 글
자바의 정석 10장 (26일차) - 형식화 클래스 (SimpleDateFormat, DecimalFormat) (0) | 2022.02.17 |
---|---|
자바의 정석 10장 (26일차) - Calendar 클래스 (0) | 2022.02.17 |
자바의 정석 9장 (25일차) - StringBuffer 생성자 & 메서드 (0) | 2022.02.16 |
자바의 정석 9장 (25일차) - String 메서드 2 (0) | 2022.02.16 |
자바의 정석 9장 (24일차) - String 메서드 (0) | 2022.02.15 |