●연산자
산술 - 사(오)칙연산자 : +,-,/,*,%
관계연산자-비교연산자 : >,<,>=,<=,==,!=
논리연산자 : &&(And), ||(Or), !(Not)
●피연산자로 쓰인 변수와 연산의 결과를 저장할 변수가 같은 연산
1
2
3
4
5
6
|
public class Operator01 {
public static void main(String[] args) {
int n = 50;
n = n + 10;
System.out.println("n = n + 10 -> n : " + n);
|
cs |
1. 현재 n값(50)과 두번째 피연산자인 10이 CPU로 전달되어 덧셈됩니다.
2. 연산결과가 다시 돌아와서 다시 n 변수에 저장됩니다
연산에 참여했던 n값 50은 사라지고, 연산의 결과인 60이 n변수에 남습니다.
간략하게 다음과 같이도 사용합니다. n+=10;
3.다른 사칙연산 활용의 예
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
public class Operator01 {
public static void main(String[] args) {
int n = 50;
n = n + 10;
n=n-10; //n-=10;
System.out.println("n = n-10 -> n : " + n);
n=n*10; //n*=10;
System.out.println("n = n*10 -> n : " + n);
double d = 50.0;
System.out.println("d의 최초값 : " + d);
d = d/10.0; //d/=10;
System.out.println("d = d/10 -> d : " + d);
n=n%7; //n%=7;
System.out.println("n = n%7 -> n : " + n);
|
cs |
●특정 변수의 값을 1 증가하거나, 감소시킬 수 있는 연산자
n = n + 1 , n += 1 , n++
n = n - 1 , n -= 1 , n--
위와 같은 단항연산일때는 ++나 --를 앞 또는 뒤에 어느곳에 붙여도
똑같이 연산됩니다.
●++,-- 연산기호가 앞 또는 뒤에 있을때 차이가 나는 경우는 다른연산에 섞여 있을때이다.
1
2
3
4
5
6
7
|
public class Operator01 {
public static void main(String[] args) {
int n = 10;
int k = n++;
System.out.println("k : " + k); //10 출력
System.out.println("n : " + n); //11출력
|
cs |
<++,--연산이 뒤쪽에 있는 경우 : 현재값으로 속해있는 연산에 참여후, 1증가>
1
2
3
4
5
6
7
|
public class Operator01 {
public static void main(String[] args) {
int n = 10;
k = ++n;
System.out.println("k : " + k); //11 출력
System.out.println("n : " + n); //11출력
|
cs |
<++,--연산이 앞쪽에 있는 경우 : 1증가 후 , 다른 연산에 참여 >
●관계연산자(비교연산자)
좌항기준 >(초과), <(미만), >=(이상≥), <=(이하≤), ==(같다), !=(같지않다)
좌항과 우항의 크기를 비교하여 true/false 값이 결과가 되는 연산
관계식이 올바른 경우 true, 관계식이 틀린 경우 false가 연산의 결과가 됩니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
public class Operator01 {
public static void main(String[] args) {
int n1 = 10;
int n2 = 5;
boolean result;
//n1은 n2보다 크다 - 맞으면 true, 틀리면 false
result = n1 < n2;
System.out.printf("%d < %d -> %b\n", n1,n2,result);
result = n1 >= n2;
System.out.printf("%d >= %d -> %b\n", n1,n2,result);
result = n1 <= n2;
System.out.printf("%d <= %d -> %b\n", n1,n2,result);
result = n1 == n2;
System.out.printf("%d == %d -> %b\n", n1,n2,result);
result = n1 != n2;
System.out.printf("%d != %d -> %b\n", n1,n2,result);
|
cs |
●문자(char) 데이터의 바교 : 각 데이터가 갖는 아스키 코드 값으로 비교
1
2
3
4
5
6
7
8
9
|
public class Operator01 {
public static void main(String[] args) {
char c1='A', c2 = 'B';
result = c1 > c2;
System.out.printf("%c > %c -> %b\n",c1, c2, result);
result = c1 < c2;
System.out.printf("%c < %c -> %b\n",c1, c2, result);
|
cs |

●String 데이터의 비교
String을 대상으로 할 수 있는 비교연산은 ==와 != 둘 밖에 없으며 에러없이 가능은 하지만 이도 사용은 하지 않습니다.
String 자료간의 비교는 별도로 만들어져 있는 도구를 이용합니다.
//String 의 크다 작다를 판단해주는 compareTo()
// String 의 같다 다르다를 판단해주는 equals()
-compareTo()
1
2
3
4
5
6
7
|
public static void main(String[] args) {
String s1 = "1234", s2 = "987";
int r = s1.compareTo(s2);
System.out.printf("%s > %s => %d\n", s1, s2, r);
r = s2.compareTo(s1);
System.out.printf("%s > %s => %d\n", s2, s1, r);
|
cs |
앞글자(s1)에서 뒷글자(s2)의 아스키 코드 값을 뺄셈한 결과를 얻는다.
이 경우에는 s1보다 s2가 더 큼
따라서 첫번째 출력값은 -8 , 두번째 출력값은 8이다.
--->boolean으로 true/false값 출력하기
1
2
3
4
5
6
7
|
public static void main(String[] args) {
String s1 = "1234", s2 = "987";
int r = s1.compareTo(s2);
System.out.printf("%s > %s =>%b\n", s1, s2, r>0);
System.out.printf("%s > %s =>%b\n", s2, s1, r<0);
|
cs |
s1에서 s2를 뺀 값은 음수이므로, 첫번째 값은 r > 0이라고 했으므로 false, 두번째 값은 r<0이라고 했으므로 true이다
정확한 출력값은 아래와 같다.
-equals()
1
2
3
4
5
6
7
8
|
public static void main(String[] args) {
String s1 = "1234", s2 = "987";
boolean b = s1.equals(s2); // 둘이 같으면 true, 다르면 false
System.out.printf("%s == %s => %b\n", s1, s2, b);
b = s1.equals("1234");
System.out.printf("%s == %s => %b\n", s1, "1234", b);
|
cs |
첫번째 값은 false, 두번째 값은 true
'JAVA > 수업 복습' 카테고리의 다른 글
자바 공부기록 09 - 캐스팅연산 & 자료의 형변환 (0) | 2022.04.05 |
---|---|
자바 공부 기록08 - 연산자 (2) (0) | 2022.04.04 |
자바 공부기록 06 - 변수의 데이터타입, 선언, 대입 (0) | 2022.04.01 |
자바 공부기록 05 - Scanner sc = new Scanner(System.in); (0) | 2022.03.31 |
자바 공부기록04 - variable 변수 (0) | 2022.03.31 |