① 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 |