반응형
01. 연산자
- 연산자란 계산할 때 사용하는 기호 (ex. + - / *)
- 모든 프로그램에서 데이터의 계산을 위해 연산자를 사용
02. 연산자의 연산 순서
01) 최우선 연산자
- . (점) 클래스 또는 객체 소유의 변수, 메서드 등을 호출
- [] 배열
- () 괄호
02) 단항 연산자
- ! 논리 부정
- ~ 비트 반전
- + / - 부호 연산
- ++ / -- 선행증감 (어디 붙느냐에 따라 순서가 달라짐)
[ 예시 ]
int num = 1;
int num2 = ++num;
// 2 1 ; 계산순서
//num = 2, num2 = 2
int num3 = ++num + ++num2;
// 3 1 2 1 ; 계산순서
//num = 3, num2 = 3, num3 = 6
num3 = --num + ++num2;
// 3 1 2 1 ; 계산순서
//num = 2, num2 = 4, num3 = 6
// 비트 반전 ~ -> 0을 1로, 1을 0으로 변경
System.out.println(Integer.toBinaryString(2)); //00000000000000000000000000000010 (0을 생략)
System.out.println(Integer.toBinaryString(~2));//11111111111111111111111111111101 (비트반전)
System.out.println(~2);//-3
System.out.println(Integer.toBinaryString(-5)); //11111111111111111111111111111011
System.out.println(Integer.toBinaryString(~-5));//00000000000000000000000000000100
System.out.println(Integer.toBinaryString(~-5));//4
03) 산술 연산자
- + (덧셈) - (뺄셈) / (나눗셈) * (곱셈) % (모듈러 : 나머지 값)
[ 예시 ]
System.out.println(2 % 2);//0 나눈 후 나머지 값
System.out.println(3 % 2);//1
System.out.println(4 % 2);//0
System.out.println(1 % 4);//1 나눌 숫자가 작으면 그대로 반환
System.out.println(2 % 4);//2
System.out.println(3 % 4);//3
System.out.println(4 % 4);//0
System.out.println(5 % 4);//1
[ 활용 ] 주민번호를 보고 여자인지 남자인지 판별하기
int ssnCode = 2;
int result = ssnCode % 2;
if(result == 0) {
System.out.println("당신은 여자입니다.");
} else {
System.out.println("당신은 남자입니다.");
}
04) 쉬프트 연산자
- << >> >>> : 이진법의 자릿수 이동
05) 관계 연산자
- < > <= >= ==(같다) !=(같지 않다)
boolean check = false;
check = 1 + 2 != 4;
// 3 1 2 ; 계산순서
System.out.println(check);//true
check = 1 == 2;
// 2 1 ; 계산순서
System.out.println(check);//false
06) 비트 연산자
- &(and) : 이진법으로 변환했을 때, 둘 다 1일 때 1, 그 외에는 다 0
- |(or) : 이진법으로 변환했을 때, 하나라도 1이 있으면 1, 둘 다 0일 땐 0
- ^(xor) : 이진법으로 변환했을 때, 값이 다르면 1, 같으면 0
System.out.println(10 & 11);//10
System.out.println(10 | 11);//11
System.out.println(10 ^ 11);//1
int number = 2;
int num2 = 11;
int num3 = number ^ num2;
System.out.println(num3);//9
07) 논리 연산자
- && (and) 둘 다 참일 때 참
- || (or) 둘 중 하나라도 참이면 참
System.out.println( 1 + 2 == 4 && 1 + 3 == 4 );//false
// false && true
System.out.println( true && !false );//true
// true && true
System.out.println( !true && false );//false
// false && false
System.out.println( true || false );//true
System.out.println( false || false );//false
System.out.println( !false || true );//true
System.out.println( false || false );//false
08) 삼항 연산자
- 조건식 ? 참일 때 : 거짓일 때; (조건은 하나씩만 실행할 수 있음)
number = 1;
System.out.println(number == 1 ? "1입니다" : "2입니다");//1입니다
//number == 1은 참
boolean = check;
check = number > 1 || number == 1 ? true : false ;
// false || true = true
System.out.println(check);//true
09) 배정대입(대입기호)
- = += -= %= /= 등
int num = 0;
num += 1;
//+=은 +1해서 대입하다 (num += 1 == num + 1 == ++num == num++)
num -= 1; //num값에서 -1
num %= 2;//모듈러 : 나머지 값
int num2 += --number;
//에러나는 이유 : num2는 선언만 되어있음 (초기화x)
10) 후행증감
- ++ / -- 후행증감 (뒤에 붙었을 때)
[ 예시 ]
int number = 1;
int number1 = number--;
// 1 2; 계산순서
//number = 0, number1 = 1
int number1 = number-- + --number;
// 3 4 2 1
//number = -2, number1 = -1
int num = 2, num2 = 4, num3 = 6;
num3 = num-- - num2--;
// 2 3 1 3; 계산순서
//num = 1, num2 = 3, num3 = -2
num3 = num-- + num2--;
// 2 3 1 3 ; 계산순서
//num = 0, num2 = 2, num3 = 4
num3 = num-- + --num2;
// 3 4 2 1 ; 계산순서
//num = -1, num2 = 1, num3 = 1
03. 자바의 제어문
- 조건문 : 조건에 따라 분기되는 문장
(ex. if, switch) - 반복문 : 특정 명령어를 반복적으로 수행하는 문장
(ex. for, while, do~while)
1) IF문
- 조건식이 들어갈 수 있는 것들 :결과가 참 또는 거짓이 되는 문장
(ex. boolean, 부등호, 1 == 2, 1 + 2 == 4 등)
[ 기본 형식 ]
if(조건식){
조건식이 참일 때 실행할 명령;
}
if(조건식){
조건식이 참일 때 실행할 명령;
} else {
조건식이 거짓일 때 실행할 명령;
}
if(조건식){
조건식이 참일 때 실행할 명령;
} else if {
조건식이 참일 때 실행할 명령;
} else {
조건식이 거짓일 때 실행할 명령;
}
[ 활용 1 ]
boolean ch = !true;
int number = 10;
if ( number > 5 && ch) {//조건이 참일 때 실행
System.out.println("ch가 참입니다.");
} else {//조건이 거짓일 때 실행
System.out.println("ch가 거짓입니다.");
}//ch가 거짓입니다.
int number1 = 5;
if (number1 == 5) {//조건식1 (조건이 많이 걸릴 것을 위에 위치하는 게 좋음)
System.out.println("조건식1이 참입니다.");//참일 때만 실행
} else if (number1 == 4) {//조건식2 else if는 무제한으로 늘어날 수 있음
System.out.println("조건식2가 참입니다.");//참일 때만 실행
} else if (number1 == 3) {//조건식3
System.out.println("조건식3가 참입니다.");//참일 때만 실행
} else {
System.out.println("조건식1, 2, 3 모두 거짓.");//조건식 모두 거짓일 때 실행
}//조건식1이 참입니다.
int number2 = 1;
if (number2 == 5) {//조건식1 (조건이 많이 걸릴 것을 위에 위치하는 게 좋음)
System.out.println("조건식1이 참입니다.");//참일 때만 실행
} else if (number2 == 4) {//조건식2 else if는 무제한으로 늘어날 수 있음
System.out.println("조건식2가 참입니다.");//참일 때만 실행
} else if (number2 == 3) {//조건식3
System.out.println("조건식3가 참입니다.");//참일 때만 실행
}//화면엔 아무것도 안 뜸 (다 거짓이라서)
[ 활용 2 ] 사용자가 입력한 숫자가 무엇인지 판별하기
System.out.println("0~9 중 하나만 입력하세요.");
System.out.print("입력 : ");
int input = System.in.read() - 48;
//입력대기(사용자가 입력할 때까지 기다립니다) 한 글자만 가져옴
// read() 메서드는 int 형태로 문자의 아스키 코드 값을 반환
// 아스키 코드에서 숫자 '0'은 48에 해당하므로, '0'을 뺌으로써 문자를 해당하는 숫자 값으로 변환
System.out.print("당신이 입력한 숫자는 " + input + ",");
if ( input % 2 == 0 ) {// 나머지 값이 0일 경우
System.out.println(" 짝수입니다.");
} else {
System.out.println(" 홀수입니다");}
[ 활용 3 ]
System.out.print("숫자를 입력하세요\n입력 : ");
//\n 줄바꿈 \t tab키
Scanner sc = new Scanner(System.in);
int input = sc.nextInt();
// .은 소유변수 nextInt는 메서드명
if (input > 5) {
System.out.println("5보다 큽니다.");
} else if (input == 0) {
System.out.println("0입니다.");
} else if (input == 1) {
System.out.println("1입니다.");
} else if (input == 2) {
System.out.println("2입니다.");
} else if (input == 3) {
System.out.println("3입니다.");
} else if (input == 4) {
System.out.println("4입니다.");
} else if (input == 5) {
System.out.println("5입니다.");
}
2) FOR문
- 특정 명령을 반복적으로 실행해야 할 때 사용
[ 기본 ]
for(변수 초기화; 변수 조건문; 변수 증감식){
// int i=0 i < 10 (참,거짓)
변수 조건문이 참일 때 실행할 반복문;
}
[ 활용 ]
for (int i = 0; i < 5; i++) {
//i가 0일 때, 5보다 작을 때까지, i+1하기
System.out.println(i + " ");//i값 출력
}// 0 1 2 3 4
for (int i = 10; i >= 0; i--) {
//i가 10일 때, 0보다 크거나 같을 때까지, i-1하기
System.out.println(i + " ");
}// 10 9 8 7 6 5 4 3 2 1 0
for (int i=2 ; i <= 10 ; i++) {
//i가 2일 때, 10보다 작거나 같을 때까지, i+1하기
if (i % 2 == 0)//i가 2로 나누었을 때 0일 경우 = 짝수
System.out.print(i + " ");
}// 2 4 6 8 10
for (int i=1 ; i < 6 ; i++) {
//i가 1일 때, 6보다 작을 때까지, i+1하기
System.out.print(i*2 + " ");//i*2 출력
}2 4 6 8 10
for (int i=2; i <=10 ; i+=2) {
//i가 2일 때, 10보다 작거나 같을 때까지, i+2하기
System.out.print(i + " ");
}//2 4 6 8 10
참고자료
신용권, '혼자 공부하는 자바'
반응형
댓글