Cute Running Puppy
본문 바로가기
개발일기/Java

[Java] 연산자

by 징구짱 2023. 2. 16.
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