1-1. 자동 형변환
정수 + 정수 -> 실수
3 + 0.0 ->3.0
문자 + 실수 -> 정수
정수, 실수, 문자 등 + 문자열 -> 문자열
1-2. 강제 형변환
(자료형) : 형변환연산자
(자료형)값
(duoble)10 -> 10.0
1-3. 형변환 활용
//자동 형변환
System.out.println(10/(3+0.0)); //정수형(3)과 실수형(0.0)을 연산하면 실수형으로 자동 형변환이 이루어진다
//아스키코드
//문자 하나마다 매칭되어 있는 정수값이 있다
//'A' : 65 / 'a' : 97 / '0' : 48
System.out.println('A'+5); //문자형(A)는 정수로 자동 형변환이 이루어진다
//"0"
System.out.println(0+""); //정수형(0)과 문자열("")을 연산하면 문자열로 자동 형변환이 이루어진다
//강제 형변환
System.out.println(10/(double)3);
System.out.println((char)('A'+5));
int data = 10;
System.out.println((double)data);
//형변환은 기본형끼리, 클래스형끼리 만 가능하다
//기본형과 클래스형을 형변환 하려면 파싱을 써야한다
//Integer.parseInt("정수로된문자열") -> 문자열을 정수로 변환
//Double.parseInt("실수로된문자열") -> 문자열을 실수로 변환
System.out.println(Integer.parseint("10")+5);
System.out.println(Double.parseint("10.24")+1);
//숫자형이 아닌 정수열을 바꿀수는 없다
//Integer.parseInt("Hello);
입력값을 바로 바꿔줄수있다
Scanner sc = new Scanner(System.in);
int num = Integer.parseInt(sc.next());
2-1. 우선순위
순위 | 연산자 |
---|---|
1 | 최우선 연산자 |
2 | 단항 연산자 |
3 | 산술 연산자 |
4 | 쉬프트 연산자 |
5 | 관계 연산자 |
6 | 논리 연산자 |
7 | 삼항 연산자 |
8 | 대입 연산자 |
2-2. 결합성
2-3. 최우선 연산자
()
2-4. 단항 연산자
! : 조건식의 연산결과가 true면 false로, false면 true로 변경
~
2-5. 산술 연산자
+ 더하기
- 빼기
* 곱하기
/ 나누기(몫) 10/2 == 5
% 나누기(나머지) 10%3 == 1
2-6. 비트 연산자
14 : 01110(2진법)
17 : 10001(2진법)
&(AND) : 논리곱 두 비트가 모두 1일때 1
14&17 -> 01110&10001 --> 00000 -> 0(10진법)
|(OR) : 논리합 둘 중 하나라도 1이면 1
14|17 -> 01110|10001 --> 11111 -> 31(10진법)
^(XOR) : 베타논리합 두 비트가 서로 다를 때 1
14^17 -> 01110^10001 --> 11111 -> 31(10진법)
~(NOT) : 논리부정, 비트뒤집기 1은 0으로, 0은 1로 바트를 바꿔준다
~14 -> ~01110 --> 10001 -> -15(10진법)
~a = -(a+1) //비트의 부호도 바꿔준다
2-7. 비트 이동(쉬프트 연산자)
a>>b : a를 b만큼 오른쪽으로 비트이동
14>1 -> 01110 >> 1 -> 00111 -> 7(10진법)
a<<b : a를 b만큼 왼쪽으로 비트이동
14<<1 -> 01110 << 1 -> 11100 -> 28(10진법)
10<<1 -> 1010 << 1 -> 00111 0> 20(10진법
2-8. 조건식
2-9. 관계 연산자
10>3
>, < : 초과, 미만
>=, <= : 이상, 이하
== : 같다
!= : 같지않다
2-10. 논리 연산자
A && B : 두 조건식의 연산결과가 둘다 true면 true
A || B : 두 조건식의 연산결과가 하나라도 true면 true
num == 1 || 2 (X)
num == 1 || num == 2 (o)
2-11. 단항 연산자
!A : 조건식의 연산결과가 true면 false로, false면 true로 변경
~
2-12. 삼항 연산자
(조건식) ? (참일때 오는 부분) : (거짓일때 오는 부분)
조건식 ? 값1 : 값2
2-13. 연산자 활용
System.out.println(14&17);
System.out.println(~14);
System.out.println(~17);
Scaner sc = new Scanner(System.in);
int num = 0;
System.out.println("정수 : ");
num = sc.nextInt
//참이나 거짓 부분에 또 조건식을 넣어줄 수 있다
String result = num > 0 ? "양수입니다." : "음수입니다.";
String result = num > 0 ? "양수입니다." : num == 0? "0입니다." : "음수입니다.";
//정수 입력받아서 1 이라면 문자열을 입력받고 출력 1이 아니라면 정수 입력받아서 +5해서 출력
System.out.println("입력 : );
int choice = sc.nextInt();
System.out.println(choice == 1? "문자열 : " : "정수 : ");
//삼항 연산자는 참일때, 거짓일때의 부분에 문장을 쓰려면 문장 통째로 값이여야 한다는 제한이 생긴다.
System.out.println(choice == 1? sc.next() : sc.next);