본문 바로가기

프로그래밍/Java

Java_연산자(2)

① Math.round()로 반올림하기

- Math.round()는 소수점 첫째 자리에서 반올림한 결과를 정수로 반환한다.

-소수점 첫째 자리가 아니라 다른 자리에서 반올림을 하려면 10의 n제곱으로 적절히 곱하고 나누어야 한다.

class Ex3_11 {
	public static void main(String args[]){
    	double pi=3.141592;
        double shortPi=Math.round(pi*1000)/1000.0;
        System.out.println(shortPi);
    }
}

결과
3.142

- Math. round(pi*1000)/1000.0

→ Math.round(3.141592*1000)/1000.0

→ Math.round(3141.592)/1000.0

→ 3142/1000.0(double이 생략됨.)

→ 3.142

 

② 나머지 연산자(%)

class Ex3_12{
	public static void main(String args[]) {
    	int x=10;
        int y=8;
        
        System.out.printf("%d을 %d로 나누면, %n", x, y);
        System.out.printf("몫은 %d이고, 나머지는 %d입니다.%n", x/y, x%y);
    }
}

결과
10을 8로 나누면,
몫은 1이고, 나머지는 2입니다.

- 나머지 연산자의 피연산자는 정수만 허용하고 부호는 무시된다.

 

③ 비교 연산자 

- 대소비교 연산자 (<, >, <=, >=)

- 등가비교 연산자 (==, !=)

 

④ 문자열의 비교

- 두 문자열의 내용이 같은지 비교할 때는 equals()라는 메서드를 사용한다.

두 문자열이 같으면 true를 다르면 false를 반환한다.

class Ex3_14{
	public static void main(String[] args){
    	String str1="abc";
        String str2=new String("abc");
        
        System.out.printf("\"abc\"==\"abc\" ? %b%n", "abc"=="abc");
        System.out.printf("str1==\"abc\" ? %b%n", str1=="abc");
        System.out.printf("str2==\"abc\" ? %b%n", str2=="abc");
        System.out.printf("str1.equals(\"abc\") ? %b%n", str1.equals("abc"));
        System.out.printf("str2.equals(\"abc\") ? %b%n", str2.equals("abc"));
        System.out.printf("str2.equals(\"ABC\") ? %b%n", str2.equals("ABC"));
        System.out.printf("str2.equalsIgnoreCase(\"ABC\") ? %b%n, str2.equalsIgnoreCase("ABC"));
        }
  }

- str2와 "abc"의 내용이 같은데도 '=='로 비교하면 서로 다른 객체라 false값을 얻는다.

- equals()는 객체가 달라도 내용이 같으면 true를 반환한다. 그래서 문자열을 비교할 땐 항상 equals()를 사용해야 한다.

- 대소문자를 구별하지 않고 비교하고 싶으면 equalsIgnoreCase()를 사용하면 된다.

 

⑤ 논리 연산자 &&와 ||

- || (OR결합) : 피연산자 중 어느 한 쪽이 ture이면 true를 결과로 얻는다.

&& (AND결합) : 피연산자 양쪽 모두 ture이어야 true를 결과로 얻는다.

- '&&'가 '||'보다 우선순위가 높다. 괄호를 사용해서 우선순위를 명확히 해주는 것이 좋다.

 

⑥ 논리 부정 연산자 !

- 피연산자가 true이면 false를, false이면 true를 결과로 반환한다.

ch < 'a' || ch > 'z'  ↔  ! ('a' <= ch && ch <= 'z')로 표현하면 더 알기 쉽다. 

 

⑦조건 연산자

- 조건 연산자는 조건식, 식1, 식2 모두 세 개의 피연산자를 필요로 하는 삼항 연산자이다.

- 조건식 ? 식1(True) : 식2(False)

class Ex3_17{
	public static void main(String args[]){
    	int x, y;
        int absX, absY
        char signX, signY
        
        x=10;
        y=-5;
        
        absX= x>=0 ? x: -x;		//x의 값이 음수이면, 양수로 만든다.
        absY= y>=0 ? y: -y;
        signX= x>0 ? '+' : (x==0 ? ' ' : '-');	//조건 연산자를 중첩
        signY= y>0 ? '+' : (y==0 ? ' ' : '-');
        
        System.out.printf("x=%c%d%n", signX, absX);
        System.out.printf("y=%c%d%n", signY, absY);
    }
}

결과
x=+10
y=-5

 

⑧ 대입 연산자

- 대입연산자는 변수와 같은 저장공간에 값 또는 수식의 연산결과를 저장하는데 사용된다.

- lvalue(left vaule)와 rvalue(right value)

: lvalue는 반드시 변수처럼 값을 변경할 수 있는 것이어야 한다. 그래서 리터럴이나 상수는 lvalue가 될 수 없다.

 

⑨ 복합 대입 연산자

- 두 연산자는 반드시 공백 없이 붙어있어야 한다.

op= =
i += 3; i=i+3;
i *= 3;  i=i*3;
i *=10+j; i=i*(10+j);

 

'프로그래밍 > Java' 카테고리의 다른 글

Java_배열(1)  (2) 2022.10.05
Java_조건문과 반복문(2)  (0) 2022.09.29
Java_조건문과 반복문(1)  (0) 2022.09.22
Java_연산자(1)  (0) 2022.09.08
Java_변수  (0) 2022.09.01