Operator | Description |
---|---|
+ | 덧셈 연산(String Concatenation에도 사용) |
- | 빼기 연산 |
* | 곱하기 연산 |
/ | 나누기 연산 |
% | 나머지 연산 |
할당과 연산을 합칠 수도 있다. x += 1;
, x += x + 1;
단항 연산자
operator | Description |
---|---|
+ | 양수를 나타낸다 |
- | 음수를 나타낸다 |
++ | 증가 연산자 (1을 더함) |
-- | 증감 연산자 (1을 뺌) |
! | 논리적으로 반대로 변환한다. |
++res
와res++
의 차이란 ?
단순히 증감을 위함이라면 상관없지만, prefix는 구문이 실행되기 전에 값이 더해지고 postfix는 구문이 실행되고 더해진다.
출처 : https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op1.html
자바 프로그래밍 언어는 비트단위의 연산을 제공한다.
~
는 비트 패턴을 반전시킨다. 모든 정수 유형에 적용가능하며 "0"을 "1"로 만들고 모든 "1"을 "0"으로 만든다.
"00000000" -> "11111111"
<<
는 비트 패턴을 왼쪽으로 이동, >>
는 패턴을 오른쪽으로 이동한다.
<<
빈곳엔 0을 추가>>
빈곳엔 0을 추가하고 오른쪽 부분은 삭제&
AND 연산을 수행
^
NOR 연산을 수행
|
OR 연산을 수행
출처 : https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html
동등, 관계 연산은 대소를 결정하거나 같거나 다름을 결정한다.
==
와 =
은 엄연히 다르다.
operator | discription |
---|---|
== | equal to |
!= | not equal to |
> | greater than |
>= | greater than or equal to |
< | less than |
<= | less than or equal to |
출처 : https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html
조건 연산자는 AND와 OR 연산이 있다.
AND &&
OR ||
if(x > 1 && x < 10)
// x가 1보다 크고 10보다 작을 때
if(x < 1 && x > 10)
// x가 1보다 작거나 10보다 클 때
출처 : https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html
public final class Instanceof
extends Operator
implements BinaryOperator
Instanceof operator를 실행한다.
파라미터로 들어온 Object가 class type이 같은 인스턴스인지에 대한 Boolean을 반환한다.
객체가 주어진 유형인지 테스트하는데 사용되는 이진 연산, 유형 비교 연산자라고도 한다.
알 수 없는 개체를 캐스팅 하기 전에 항상 instanceof 검사를 사용해야한다. 이렇게하면 ClassCastExeption
을 방지하는데 도움이 된다.
(object) instanceof (type)
instanceof 연산자는 is-a 관계에 따라 작동한다.
is-a 관계의 개념은 상속 또는 인터페이스 구현을 기반으로한다.
주어진 객체와 같은 유형의 인스턴스 -> true
주어진 객체가 하위 클래스 인스턴스인 경우 -> true
인터페이스가 들어왔는데 객체가 인스턴스를 구현하고 있으면 -> true
서로 관계가 없다면 사용할 수 없다.
값을 할당하는 간단한 연산자는 =
오른쪽에 있는 값을 왼쪽에 할당한다.
int number = 100;
String error = "Error";
Point p = new Point (1,2);
객체 역시 할당할 수 있다.
출처 : https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op1.html
parameter -> expression
(param1, param2) -> expression
{}
사용할 수 있으며, 코드 블록에 return 문이 있어야 값을 반환할 수 있다.public class Main {
public static void main(String [] args){
List<String> mentor = new ArrayList<Integer>();
mentor.add("Lee");
mentor.add("Bae");
mentor.add("Jung");
mentors.foreach( (str) -> {System.out.println(str);});
}
}
// 변수 유형이 메서드가 하나만 있는 인터페이스인 경우엔 람다 표현식을 변수에 저장할 수 있다.
// Consumer<String> method = (str) -> {System.out.println(str);}
result = condition ? value1 : value2
컨디션이 참이면 value1을 result에 저장하고 거짓이면 value2를 result에 저장함
if-then-else 구문 대신에 삼항연산자를 쓰면 가독성이 더해진다고 함.(개인적으로는 가독성 해친다고 생각함)
구문이 좀더 컴팩트해지고 할당같은 부작용을 피할 수 있다.
출처 : https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html
Operators | Associativity |
---|---|
() [] -> . | left to right |
! ~ ++ -- + - * & (type) sizeof stringof offsetof xlate | right to left |
* / % | left to right |
+ - | left to right |
<< >> | left to right |
< <= > >= | left to right |
== != | left to right |
& | left to right |
^ | left to right |
` | ` |
&& | left to right |
^^ | left to right |
` | |
?: | right to left |
`= += -= *= /= %= &= ^= | = <<= >>=` |
, | left to right |
if-then이나 if-then-else 구문과는 다르게 switch 구문은 여러개의 실행 구문을 가질 수 있다.
byte, short, char, int 원시형 데이터 타입으로 작동되며 enum도 가능하다.
String 클래스, 그리고 몇가지 wrapper 클래스 Character, Byte, Short, Integer도 가능하다.
public static void main(String [] args){
Scanner scanner = new Scanner(System.in);
int n = sc.nextInt();
String res = "";
swith(n){
case 1: res = "one";
break;
case 2: res = "two";
break;
case 3: res = "three";
break;
case 4: res = "four";
break;
case 5: res = "five";
break;
case 6: res = "six";
break;
case 7: res = "seven";
break;
case 8: res = "eight";
break;
case 9: res = "nine";
break;
default: res = "error";
}
System.out.println(res);
}
한 개 이상의 case와 default lable을 가질 수 있고, if-then-else 구문으로도 나타낼 수 있다.
가독성을 기반으로 switch 구문과 if-then-else 구문 중 선택할 수 있다.
if문은 값의 범위 또는 조건에 의해 테스트할 수 있고, 반면에 switch는 single Integer나, Enum, String 에 따라 조건을 주고 싶을 때 사용하면 된다.
break; 문으로 switch 구문을 닫을 수 있고, 제어 흐름이 계속된다. 때문에 break문은 필요하며 만약 없다면 swtich block이 모든 statements를 순차적으로 실행하게 된다.
출처 : https://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html