Notice
Recent Posts
Recent Comments
«   2024/11   »
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
Archives
Today
Total
관리 메뉴

충분히 쌓여가는

StringBuilder, Math 클래스 본문

Java/JAVA2

StringBuilder, Math 클래스

빌드이너프 2023. 6. 28. 13:28

StringBuilder(StringBuilder ≒ StringBuffer)

StringBuilder는 동기화되어 있지 않다

StringBuffer는 동기화되어 있다[멀티 쓰레드에 안전하다(thread-safe)]

멀티 쓰레드 프로그램이 아닌 경우(싱글 쓰레드), 동기화는 불필요한 성능저하 => StringBuffer 대신 StringBuilder을 사용하면 성능이 향상된다

더보기

싱글 쓰레드: 한 번에 하나의 작업

멀티 쓰레드: 동시에 여러 작업

 

메서드들은 그대로 놔두고 클래스 이름만 바꿔주면 된다

 


Math 클래스

수학관련 static 메서드의 집합(instance variable이 없기 때문에 객체 만들 필요가 없다)

public static final double E = 2.7182818284590452354;
public static final double PI = 3.14159265358979323846;

 

round()로 원하는 소수점 아래 세 번째 자리에서 반올림하기

1. 원래 값에 100을 곱한다

90.7552 * 100 => 9075.52

 

2. 위의 결과에 Math.round()를 사용한다

Math.round(9075.52) => 9076

 

3. 위의 결과를 다시 100.0으로 나눈다

9076 / 100.0 => 90.76

 

 

Math 클래스의 메서드

메서드 / 설명 예제 / 결과
static double abs(double a)
static float abs(float f)
static int abs(int f)
static long abs(long f)
int i = Math.abs(-10);
double d = Math.abs(-10.0);
주어진 값의 절대값을 반환한다 i = 10
d = 10.0
   
static double ceil(double a) double d = Math.ceil(10.1);
double d2 = Math.ceil(-10.1);
double d3 = Math.ceil(10.000015);
주어진 값을 올림하여 반환한다 d = 11.0
d2 = -10.0
d3 = 11.0
   
static double floor(double a) double d = Math.floor(10.8);
double d2 = Math.floor(-10.8);
주어진 값을 버림하여 반환한다 d = 10.0
d2 = -11.0
   
static double max(double a, double b)
static float max(float a, float b)
static int max(int a, int b)
static long max(long a, long b)
double d = Math.max(9.5, 9.50001);
int i = Math.max(0, -1)
주어진 두 값을 비교하여 큰 쪽을 반환한다 d = 9.50001
i = 0
   
static double min(double a, double b)
static float min(float a, float b)
static int min(int a, int b)
static long min(long a, long b)
double d = Math.min(9.5, 9.50001);
int i = Math.min(0, -1)
주어진 두 값을 비교하여 작은 쪽을 반환한다 d = 9.5
i = -1
   
static double random() double d = Math.random();
int i = (int)(Math.random()*10) + 1;
0.0 ~ 1.0 범위의 임의의 double 값을 반환한다
(1.0은 범위에 포함되지 않는다)
0.0 <= d < 1.0
1 <= i < 11
   
static double rint(double a) double d = Math.rint(1.2);
double d2 = Math.rint(2.6);
double d3 = Math.rint(3.5);
double d4 = Math.rint(4.5);
주어진 double 값과 가장 가까운 정수값을 double 형으로 반환한다
단, 두 정수의 정가운데 았는 값(1.5, 2.5., 3.5 등)은 짝수를 반환한다
d = 1.0
d2 = 3.0
d3 = 4.0
d4 = 4.0
   
static long round(double a)
static long round(float a)
long l = Math.round(1.2);
long l2 = Math.round(2.6);
long l3 = Math.round(3.5);
long l4 = Math.round(4.5);
double d = 90.7552;
double d2 = Math.round(d*100)/100.0;
소수점 첫째자리에서 반올림한 정수값(long)을 반환한다
두 정수의 정가운데있는 값은 항상 큰 정수를 반환한다
l = 1
l2 = 3
l3 = 4
l4 = 5
d = 90.7552
d2 = 90.76

 

round, int 비교

public class roundTest {
    public static void main(String[] args) {
        for (double d = 0.0; d < 2.0; d+= 0.1) {
            double d1 = Math.round(d);
            double d2 = Math.rint(d);

            System.out.printf("%4.1f %4.1f %4.1f%n", d, d1, d2);
        }
    }
}

 0.0  0.0  0.0
 0.1  0.0  0.0
 0.2  0.0  0.0
 0.3  0.0  0.0
 0.4  0.0  0.0
 0.5  1.0  0.0 // 다름
 0.6  1.0  1.0
 0.7  1.0  1.0
 0.8  1.0  1.0
 0.9  1.0  1.0
 1.0  1.0  1.0
 1.1  1.0  1.0
 1.2  1.0  1.0
 1.3  1.0  1.0
 1.4  1.0  1.0
 1.5  2.0  2.0
 1.6  2.0  2.0
 1.7  2.0  2.0
 1.8  2.0  2.0
 1.9  2.0  2.0

 

public class roundTest {
    public static void main(String[] args) {
        double sum = 0;
        double sum1 = 0;
        double sum2 = 0;


        for (double d = 1.5; d <= 10.5; d++) {
            double d1 = Math.round(d);
            double d2 = Math.rint(d);

            System.out.printf("%4.1f %4.1f %4.1f%n", d, d1, d2);

            sum += d;
            sum1 += d1;
            sum2 += d2;
        }
        System.out.println("---------------");
        System.out.printf("%4.1f %4.1f %4.1f%n", sum, sum1, sum2);

    }
}


 1.5  2.0  2.0
 2.5  3.0  2.0 // 다름
 3.5  4.0  4.0
 4.5  5.0  4.0 // 다름
 5.5  6.0  6.0
 6.5  7.0  6.0 // 다름
 7.5  8.0  8.0
 8.5  9.0  8.0 // 다름
 9.5 10.0 10.0
 10.5 11.0 10.0 // 다름
---------------
49.5 54.0 50.0

'Java > JAVA2' 카테고리의 다른 글

오토박싱 & 언박싱  (0) 2023.06.29
래퍼(wrapper) 클래스, Number 클래스  (0) 2023.06.29
StringBuffer 클래스의 메서드  (0) 2023.06.28
StringBuffer 클래스  (0) 2023.06.27
StringJoiner, 문자열과 기본형 반환  (0) 2023.06.26