[Java] 자바 #6 연산자
- 프로그래밍 언어/Java
- 2019. 2. 2. 17:01
연산자, Operator
- 피연산자(Operand)를 대상으로 미리 정해진 연산(계산, 행동)을 한 후에 결과값을 반환하는 역할(기호로 표현)
ex) int sum = 1+2+3-1;
1. 산술연산자
- +, -, *, /, %(나머지, mod)
- 피연산자의 개수 2개 -> 이항연산자
- 정수에서 정수를 나눔 => 정수
- 실수에서 실수를 나눔 => 실수.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | class HelloWorld{ public static void main(String[] args){ int a = 10; int b = 3; System.out.println(10 / 3); //[3] System.out.println(10.0 / 3.0); //[3.33333333335] System.out.println((double) a / (double) b);//[3.33333333335] System.out.println(10.0 / 3); //[3.33333333335] int n1=2100000000,n2=2100000000; int n3=n1+n2; System.out.println(n3); //[-94967296] 범위초과 System.out.println((long)n1+n2);//[4200000000] } } | cs |
2. 비교연산자
- >,<,>=,<=,==(equal),!=(notequal)
- 피연산자들의 비교우위를 반환하는 연산자
- 이항연산자
- 연산의 결과를 항상 boolean으로 변환
- 피연산자 : 숫자임
- 피연산자들은 서로의 자료형이 동일해야 한다.(형변환 가능하면 달라도 된다)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | class HelloWorld{ public static void main(String[] args){ int c=10; int d=5; System.out.println(c>d);//true System.out.println(c<d);//false System.out.println(c>=d);//true System.out.println(c<=d);//false System.out.println(c==d);//false System.out.println(c!=d);//true //문자형(숫자) char c1 = 'B'; // 66 char c2 = 'C'; // 67 System.out.println(c1>c2);//false char c3='가'; System.out.println((int)'a'>=(int)c3); //false System.out.println((int)'z'<=(int)c3); //true System.out.println('a'>=c3); //false System.out.println('z'<=c3); //true } } | cs |
참조형 - String
- 문자열은 비교연산이 안된다.
- 단, ==와 !=은 사용이 가능하다.( 하지만 문자열 비교는 equals로 하도록 하자! )
- ==, != -> equals()메소드 제공
1 2 3 4 5 6 7 8 9 10 11 12 | class HelloWorld{ public static void main(String[] args) { String s1 = "홍길동"; String s2 = "홍길동"; String s3 = "홍"; s3 = s3 + "길동"; //System.out.println(s1>s2); Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The operator > is undefined for the argument type(s) java.lang.String, java.lang.String System.out.println(s1.equals(s2)); //true System.out.println(s3.equals(s2)); //true } } | cs |
3. 논리연산자
- &&(and), ||(OR), !(not)
- 피연산자를 가지고 특정 규칙에따라 정해진 결과값 반환
- &&(and), ||(OR) : 이항연산자
- !(not) : 단항연산자
- 피연산자는 반드시 boolean타입
- 연산의 결과로 boolean을 반환한다.
A && B
T T T
T F F
F T F
F F F
A || B
T T T
T F T
F T T
F F F
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 | class HelloWorld{ public static void main(String[] args) { boolean b1= true; boolean b2 = false; System.out.println(); System.out.println(b1 && b2); // T && F = F System.out.println(b1 || b2); // T || F = T System.out.println(!b1); // !T = F //논리연산의 피연산자 타입 -> boolean // -> 논리연산 + 비교연산 //요구사항 : 나이제한 19세이상 60세 미만. int age =25; //내나이가 25살인데.. System.out.println(age>=19 && age < 60); //쇼핑몰(red, blue, yellow, white) String color = "black";//주문색상 //내가 주문한 색상이 있는가?? System.out.println(color.equals("red")||color.equals("blue")|| color.equals("white")||color.equals("yellow"));//재고색상 //-> false } } | cs |
4. 대입(할당) 연산자
- " = " 기호 사용
- += ,-+, %=, *=, /=
- LValue(변수) = RValue (상수,변수)
- 이항연산자
- LValue와 RValue의 자료형이 반드시 동일 -> 형변환 때문...
- 모든 연산자를 통틀어 연산자 우선순위가 가장 낮다. (문장내에서 가장 마지막으로 실행)
- 연산자 결합 방향(순서)이 오른쪽 ->(에서) 왼쪽 실행
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 | class HelloWorld{ public static void main(String[] args) { // int _sum = 1+2+3; int p1=10,p2,p3; p2=p1; p3=p1; //+= int num =10; num+=1; // = num = num + 1 ; System.out.println(num);//11 //-= num-=1; // = num = num - 1 ; System.out.println(num);//10 num *= 2; // = num = num * 2 ; System.out.println(num); //20 num%=3; // num = num % 3; -> num을 3으로 나눈 나머지를 num에 대입 System.out.println(num); //2 } } | cs |
5. 증감연산자
- ++(증) , --(감)
- 단항 연산자
- 피연산자의 값을 +1, -1
- 연산의 결과가 피연산자(원본)에게 영향을 미친다.
- 연산자 우선순위가 가장 높다. : 전위배치(++num) -> *즉시 증가
- 연산자 우선순위가 가장 낮다. : 후위배치(num++) -> *라인 변경되고 나서 증가.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | class HelloWorld{ public static void main(String[] args) { int num =10; ++num; System.out.println(num); //11 boolean flag = false; flag = !flag; System.out.println(flag); //true num=10; --num; System.out.println(num);//9 int result = 0; num=10; result = 20 + num++; // 이 당시에 num++ 은 아직 num이 10일때 따라서 result = 30 //여기와서야 num은 11로 증가한다. System.out.println(result); //30 int o=10; System.out.println( --o - o-- ); // 9 - 9 = 0 //--o 에서 9로 하나 감소하고 o--일때는 아직 o의 값이 9 이므로 9-9가 되서 0이나옴 } } | cs |
6. 조건연산자
- A ? B : C -> A가 true -> B / false -> C 반환.
- 삼항연산자
- A : boolean
- B, C : 상수 or 변수 or 표현식 -> 값
- B와 C는 자료형이 동일해야 한다. **
- 조건연산자 (if문 역할 유사)
1 2 3 4 5 6 7 8 9 10 11 12 13 | class HelloWorld{ public static void main(String[] args) { int age = 25; String myGrade = age >=20 ? "어른" : "미성년자"; System.out.println(myGrade); age = 9; //이런식으로도 가능!! -> 하지만 가독성이 떨어져 보일 수 있음(필자기준) myGrade = age >=20 ? "어른" : age>=17 && age<=19 ? "고등학생" : age>=14 && age<=16 ? "중학생" : age >=8 && age <=13 ? "초등학생":"미취학아동"; System.out.println(myGrade); } } | cs |
'프로그래밍 언어 > Java' 카테고리의 다른 글
[Java] 자바 #8 BufferedReader (0) | 2019.02.03 |
---|---|
[Java] 자바 #7 에러 종류 (0) | 2019.02.02 |
[Java] 자바 #5 Casting(형변환) (0) | 2019.02.02 |
[Java] 자바 #4 콘솔 입출력 해보기 (0) | 2019.02.01 |
[Java] 자바 #3 Escape (0) | 2019.01.31 |