728x90
연산자의 종류
종류
|
연산자
|
설명
|
산술 연산자
|
+ - * / % << >>
|
사칙 연산과 나머지 연산(%)
|
비교 연산자
|
< > >= <= == !=
|
크고 작음과 같고 다름을 비교
|
논리 연산자
|
&& || ! & | ^ ~
|
'그리고(AND)' 와 '또는(OR)' 으로 조건을 연결
|
대입 연산자
|
=
|
우변의 값을 좌변에 저장
|
기타 연산자
|
(type) ?: instanceof
|
형변환 연산자, 삼항 연산자, instanceof연산자
|
연산자의 우선순위
우선순위 | 연산자 | 설명 | 결합방향 |
1
|
[]
|
첨자 연산자
|
왼쪽에서 오른쪽으로
|
|
.
|
멤버 연산자
|
왼쪽에서 오른쪽으로
|
2
|
++
|
후위 증가 연산자
|
왼쪽에서 오른쪽으로
|
|
--
|
후위 감소 연산자
|
왼쪽에서 오른쪽으로
|
3
|
!
|
논리 NOT 연산자
|
오른쪽에서 왼쪽으로
|
|
~
|
비트 NOT 연산자
|
오른쪽에서 왼쪽으로
|
|
+
|
양의 부호 (단항 연산자)
|
오른쪽에서 왼쪽으로
|
|
-
|
음의 부호 (단항 연산자)
|
오른쪽에서 왼쪽으로
|
|
++
|
전위 증가 연산자
|
오른쪽에서 왼쪽으로
|
|
--
|
전위 감소 연산자
|
오른쪽에서 왼쪽으로
|
|
(타입)
|
타입 캐스트 연산자
|
오른쪽에서 왼쪽으로
|
4
|
*
|
곱셈 연산자
|
왼쪽에서 오른쪽으로
|
|
/
|
나눗셈 연산자
|
왼쪽에서 오른쪽으로
|
|
%
|
나머지 연산자
|
왼쪽에서 오른쪽으로
|
5
|
+
|
덧셈 연산자 (이항 연산자)
|
왼쪽에서 오른쪽으로
|
|
-
|
뺄셈 연산자 (이항 연산자)
|
왼쪽에서 오른쪽으로
|
6
|
<<
|
비트 왼쪽 시프트 연산자
|
왼쪽에서 오른쪽으로
|
|
>>
|
부호 비트를 확장하면서 비트 오른쪽 시프트
|
왼쪽에서 오른쪽으로
|
|
>>>
|
부호 비트까지 모두 비트 오른쪽 시프트
|
왼쪽에서 오른쪽으로
|
7
|
<
|
관계 연산자(보다 작은)
|
왼쪽에서 오른쪽으로
|
|
<=
|
관계 연산자(보다 작거나 같은)
|
왼쪽에서 오른쪽으로
|
|
>
|
관계 연산자(보다 큰)
|
왼쪽에서 오른쪽으로
|
|
>=
|
관계 연산자(보다 크거나 같은)
|
왼쪽에서 오른쪽으로
|
|
instanceof
|
인스턴스의 실제 타입 반환
|
왼쪽에서 오른쪽으로
|
8
|
==
|
관계 연산자(와 같은)
|
왼쪽에서 오른쪽으로
|
|
!=
|
관계 연산자(와 같지 않은)
|
왼쪽에서 오른쪽으로
|
9
|
&
|
비트 AND 연산자
|
왼쪽에서 오른쪽으로
|
10
|
^
|
비트 XOR 연산자
|
왼쪽에서 오른쪽으로
|
11
|
|
|
비트 OR 연산자
|
왼쪽에서 오른쪽으로
|
12
|
&&
|
논리 AND 연산자
|
왼쪽에서 오른쪽으로
|
13
|
||
|
논리 OR 연산자
|
왼쪽에서 오른쪽으로
|
14
|
? :
|
삼항 조건 연산자
|
오른쪽에서 왼쪽으로
|
15
|
=
|
대입 연산자 및 복합 대입 연산자 (=, +=, -=, *=, /=, %=, <<=, >>=, >>>=, &=, ^=, |=)
|
오른쪽에서 왼쪽으로
|
형변환
변환 | 수식 | 결과 |
int -> char
|
(char)65
|
'A'
|
char -> int
|
(int)'A'
|
65
|
float -> int
|
(int)1.6f
|
1
|
int -> float
|
(float)10
|
10.0f
|
- 변수 또는 상수의 타입을 다른 타입으로 변환하는 것을 의미
- ' 큰 타입 → 작은타입 ' : 컴파일러에 의해 자동으로 형변환
- ' 작은타입 → 큰 타입 ' : Error 발생
int i = 3.14f; // Error! 3.14f 가 int 타입으로 변환될 때 소수점이 사라지면서 값이 달라짐
int i = (int)3.14f; // 값 손실이 발생하는 경우 수동으로 형변환
- 예외 경우
// byte의 범위 : -128 ~ 127
// 100을 byte b 에 집어 넣어도 값 손실 발생 안함
byte b = 100; // 자동 형변환
int num = 100;
byte b2 = num; // Error 발생 변수는 값을 확신할 수 없기 때문에 Error 발생
byte b2 = (byte) num; // byte 타입으로 수동 형변환
// 상수여도 값 손실이 일어나면 자동 형변환 불가능!
// byte b3 = 1000; // Error 발생, 범위를 넘어감
byte b3 = (byte) 1000; // 값 손실 발생, -24 가 저장됨
산술변환
연산 전에 피연산자의 타입을 일치시킴
- 두 피연산자의 타입을 같게 일치시킴 (보다 큰 타입으로 일치)
- " long + int " → " long + long " = " long "
- " float + int " → " float + float " = " float "
- " double + float " → " double + double " = "double"
- 피연산자의 타입이 int 보다 작은 타입 이면 int 로 변환됨 (오버플로우가 쉽게 발생하지 않도록 변환시켜줌)
- " byte + short " → " int + int " = int
- " char + short " → " int + int " = int
Math 클래스
Math는 수학과 관련된 메서드를 가지고 있는 클래스
- round() : 실수를 소수점 첫 째자리에서 반올림한 정수를 반환
- ceil() : 올림값을 double 형으로 반환
- floor() : 내림값을 double 형으로 반환
- abs() : int, double 기본형 모두 사용 가능하며 절대값을 반환
- pow() : 제곱근을 double 형으로 반환
임의의 정수 만들기
Math.random() : 0.0 과 1.0 사이의 임의의 double 값을 반환
0.0 <= Math.random() < 1.0
1 부터 5 사이의 random 한 정수 값 구하기
0.0 <= Math.random() < 1.0
0.0 <= Math.random() * 5 < 5.0
(int)0.0 <= (int)(Math.random() * 5) < (int)5.0
1 <= (int)(Math.random() * 5) + 1 < 6
문자열의 비교
- equals : 비교하고자 하는 두 피연산자의 값 자체를 비교.
- == : 비교하고자 하는 두 피연산자의 주소값을 비교
문자열 비교에는 == 대신 equals()를 사용
String s1 = "사랑";
String s2 = "사랑";
System.out.println(s1 == s2);// true
System.out.println("s1.equals(s2) = " + s1.equals(s2)); // true
// 하지만!
String s3 = new String("사랑");
System.out.println(s1 == s3); // false
System.out.println("s1.equals(s3) = " + s1.equals(s3)); // true
728x90
'개발일기 > Java' 카테고리의 다른 글
InteliJ 자동 import방법 (0) | 2023.02.24 |
---|---|
[Java] 배열 (0) | 2023.02.16 |
[Java] 변수 (0) | 2023.02.16 |
자바 이해하기 (0) | 2023.02.15 |
자바 버전 변경하기 (0) | 2023.02.14 |