22.04.19

58648 단어 JavaJava

연산자

사칙연산
+(더하기), -(빼기), x(곱하기), /(나누기, 몫만 출력), %(나머지)

package ch03;

public class Ch03Ex01 {

	public static void main(String[] args) {
		int firstNum = 123, secondNum = 4;
		System.out.println(firstNum + " + " + secondNum + " = " + (firstNum + secondNum));
		System.out.println(firstNum + " - " + secondNum + " = " + (firstNum - secondNum));
		System.out.println(firstNum + " * " + secondNum + " = " + (firstNum * secondNum));
		System.out.println(firstNum + " / " + secondNum + " = " + (firstNum / secondNum));
		System.out.println(firstNum + " % " + secondNum + " = " + (firstNum % secondNum));
	}
}

출력 결과
123 + 4 = 127
123 - 4 = 119
123 * 4 = 492
123 / 4 = 30
123 % 4 = 3

관계 연산자(비교 연산자) > true, false 출력
<, >, <=, >=, ==(같다), !=(다르다)

package ch03;

public class Ch03Ex02 {
	public static void main(String[] args) {
		System.out.println("10 > 100 = " + (10 > 100));
		System.out.println("10 < 100 = " + (10 < 100));
		System.out.println("10 >= 100 = " + (10 >= 100));
		System.out.println("10 <= 100 = " + (10 <= 100));
		System.out.println("10 == 100 = " + (10 == 100));
		System.out.println("10 != 100 = " + (10 != 100));
	}
}

출력 결과
10 > 100 = false
10 < 100 = true
10 >= 100 = false
10 <= 100 = true
10 == 100 = false
10 != 100 = true

논리 연산자 > true, false 출력
&(and, 모두 참일 때 참), |(or, 둘 중 하나가 참이면 참)

논리 연산의 Short Circuit Logic
&(and) : 앞(좌)의 값이 이미 거짓이면, 뒤(우)의 값과 상관없이 이미 거짓(false) > 따라서 뒤를 검사할 필요 X > 표기법 - &&
|(or) : 앞(좌)의 값이 이미 참이면, 뒤(우)의 값과 상관없이 이미 참(true) > 따라서 뒤를 검사할 필요 X > 표기법 - ||

package ch03;

public class Ch03Ex03 {
	public static void main(String[] args) {
		//and(&) Example
		System.out.println("& Example");
		System.out.println("true & true = " + (true & true));
		System.out.println("true & false = " + (true & false));
		System.out.println("false & true = " + (false & true));
		System.out.println("false & false = " + (false & false));
		
		//or(|) Example
		System.out.println("| Example");
		System.out.println("true | true = " + (true | true));
		System.out.println("true | false = " + (true | false));
		System.out.println("false | true = " + (false | true));
		System.out.println("false | false = " + (false | false));
		
		//&& Example
		System.out.println("&& Example");
		System.out.println("1 > 10 & 10 < 100 = " + ((1 > 10) & (10 < 100)));
		//1 > 10 검사(false), 10 < 100 검사(true) => 결과 false
		System.out.println("1 > 10 && 10 < 100 = " + ((1 > 10) && (10 < 100)));
		//1 > 10 검사(false) => 결과 false (Short Circuit Logic)
		
		//|| Example
		System.out.println("|| Example");
		System.out.println("1 < 10 | 10 > 100 = " + ((1 < 10) | (10 > 100)));
		//1 < 10 검사(true), 10 > 100 검사(false) => 결과 true
		System.out.println("1 < 10 || 10 > 100 = " + ((1 < 10) || (10 > 100)));
		//1 < 10 검사(true) = > 결과 true (Short Circuit Logic)
	}
}

출력 결과
& Example
true & true = true
true & false = false
false & true = false
false & false = false
| Example
true | true = true
true | false = true
false | true = true
false | false = false
&& Example
1 > 10 & 10 < 100 = false
1 > 10 && 10 < 100 = false
|| Example
1 < 10 | 10 > 100 = true
1 < 10 || 10 > 100 = true

증감 연산자
자기 자신의 값을 하나 올리거나(++), 내리는(--) 역할
증감 연산자의 전위(앞에 위치) - 값을 증감하고 나머지를 수행
증감 연산자의 후위(뒤에 위치) - 나머지를 수행하고 값을 증감

package ch03;

public class Ch03Ex04 {
	public static void main(String[] args) {
		int iVar1 = 8;
		iVar1++;
		System.out.println("iVar1++ 1회 : " + iVar1);
		
		int iVar2 = 8;
		iVar2--;
		System.out.println("iVar2-- 1회 : " + iVar2);
		
		int iVar3 = 8;
		int result1 = ++iVar3 * 3;
		System.out.println("result1 = ++iVar3 * 3 = " + result1);
		//8을 ++한 후 * 3 > 9 * 3 = 27
		
		int iVar4 = 8;
		int result2 = iVar4++ * 3;
		System.out.println("result2 = iVar4++ * 3 = " + result2);
		System.out.println("result2 계산 이후 iVar4 : " + iVar4);
		//8 * 3 = 24 > 8++
	}
}

출력 결과
iVar1++ 1회 : 9
iVar2-- 1회 : 7
result1 = ++iVar3 3 = 27
result2 = iVar4++
3 = 24
result2 계산 이후 iVar4 : 9

삼항 연산자
?, : 으로 구성
(1항, 질문 - 반드시 참, 거짓을 판별하는 문장) ? (2항, 참인 경우의 값) : (3항, 거짓인 경우의 값)

package ch03;

public class Ch03Ex06 {
	public static void main(String[] args) {
		System.out.println(1 > 10 ? true : false);
		System.out.println(10 < 100 ? true : false);
		
		int iVar1 = 5;
		System.out.println(iVar1 >= 5 ? "올림" : "내림");
		iVar1 = 4;
		System.out.println(iVar1 >= 5 ? "올림" : "내림");
	}
}

출력 결과
false
true
올림
내림

이외 연산자
! : 논리 부정, NOT의 의미 (★)
부호 연산자(+, -) : 양수 및 음수 표현
~ : 1의 보수, -3 -2 -1 '기준점' 0 1 2 기준점으로부터 각 수에 대응되는 수 (-3 <> 2, -2 <> 1, -1 <> 0)
◎ 2의 보수 : 1의 보수 + 1, 0을 기준으로 각 수에 대응되는 수 (1 <> -1, 2 <> -2)

package ch03;

public class Ch03Ex07 {
	public static void main(String[] args) {
		// ! Example
		System.out.println("! Example");
		System.out.println(!true);
		System.out.println(!false);
		System.out.println(!!true);	//이중 부정 = 참
		
		// +, 1 Example
		System.out.println("+, - Example");
		System.out.println(10);		//양수
		System.out.println(-10);	//음수
		System.out.println(-(-10));	//음수 * 음수 = 양수
		
		// ~ Example
		System.out.println("~ Example");
		System.out.println(~0);	//-1
		System.out.println(~1);	//-2
	}
}

출력 결과
! Example
false
true
true
+, - Example
10
-10
10
~ Example
-1
-2

비트 연산
& : AND, 참 & 참일 때만 참. 나머지는 거짓
| - OR, 거짓 | 거짓일 때만 거짓. 나머지는 참
^ - XOR, 좌우값이 다르면 참, 같으면 거짓

 비트 연산 예
 64 32 16  8  4  2  1
  0  1  0  1  0  1  0 : 42
  0  1  1  1  1  0  0 : 60
 --------------------
  0  1  0  1  0  0  0 : 40(AND 연산)
  0  1  1  1  1  1  0 : 62(OR 연산)
  0  0  1  0  1  1  0 : 22(XOR 연산)
package ch03;

public class Ch03Ex08 {
	public static void main(String[] args) {
		System.out.println(42 & 60);
		System.out.println(42 | 60);
		System.out.println(42 ^ 60);
	}
}

출력 결과
40
62
22

shift 연산자
일종의 비트 연산자
사용 이유 : 작은 메모리 활용. ex) 반도체
right shift(>>) : 새로운 자리는 0으로 채움
unsigned right shift(>>>) : 새로운 자리는 부호 비트로 채움
left shift(<<) : 새로운 자리는 0으로 채움

 shift 연산 예
 부호 64 32 16  8  4  2  1
   0  0  0  0  0  1  0  0 : 4
 -------------------------
   0  0  0  0  0  0  0  1 : 4 >> 2
   0  0  0  1  0  0  0  0 : 4 << 2
   
 부호 64 32 16  8  4  2  1
   1  0  0  0  0  1  0  0 : -4
 -------------------------
   1  0  0  0  0  0  0  1 : -4 >> 2
   1  0  0  1  0  0  0  0 : -4 << 2
  

대입 연산자, 복합 대입 연산자
= : 대입 연산자
+= : 변수 = 변수 + A
-= : 변수 = 변수 - A
*= : 변수 = 변수 x A
/= : 변수 = 변수 / A
%= : 변수 = 변수 & A

외에 논리 연산자(&, |, ^), shift 연산자(>>, >>>, <<)도 사용 가능

package ch03;

public class Ch03Ex10 {
	public static void main(String[] args) {
		int iVar = 100;
		iVar += 7;		//iVar = iVar + 7
		System.out.println("iVar += 7 : " + iVar);
		iVar -= 7;		//iVar = iVar - 7
		System.out.println("iVar -= 7 : " + iVar);
		iVar *= 7;		//iVar = iVar * 7
		System.out.println("iVar *= 7 : " + iVar);
		iVar /= 7;		//iVar = iVar / 7
		System.out.println("iVar /= 7 : " + iVar);
		iVar %= 7;		//iVar = iVar % 7
		System.out.println("iVar %= 7 : " + iVar);
		iVar &= 7;		//iVar = iVar & 7
		System.out.println("iVar &= 7 : " + iVar);
		iVar |= 7;		//iVar = iVar | 7
		System.out.println("iVar |= 7 : " + iVar);
		iVar ^= 7;		//iVar = iVar ^ 7
		System.out.println("iVar ^= 7 : " + iVar);		
	}
}

출력 결과
iVar += 7 : 107
iVar -= 7 : 100
iVar *= 7 : 700
iVar /= 7 : 100
iVar %= 7 : 2
iVar &= 7 : 2
iVar |= 7 : 7
iVar ^= 7 : 0


Scanner

jdk가 제공하는 입력기 (java.util.Scanner)
키보드를 입력하면 입력 버퍼에 중간 저장 > Scanner를 통해 중간 저장된 값을 읽어 온다.

scanner.nextInt() : 정수 가져오기
scanner.nextDouble() : 실수 가져오기
scanner.next() : 단어 가져오기(공백 이후의 입력은 저장 X)
scanner.nextLine() : 문장 가져오기
◎ nextLine()의 경우, enter값도 인식, 저장하기 때문에

package ch03;

import java.util.Scanner;

public class Ch03Ex12 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		System.out.print("Input Integer : ");
		int iVar = sc.nextInt();
		System.out.println("Input result : " + iVar);
		
		System.out.print("Input Double : ");
		double dVar = sc.nextDouble();
		System.out.println("Input result : " + dVar);
		
		
		System.out.print("Input Word : ");
		String str1 = sc.next();	//공백 이후 입력은 저장 X
		System.out.println("Input result : " + str1);
		
		sc.nextLine();		//엔터값 지움
		System.out.print("Input Sentence : ");
		String str2 = sc.nextLine();
		System.out.println("Input result : " + str2);
		
		sc.close();		//입력 후 반드시 close
	}
}

출력 결과
Input Integer : 26
Input result : 26
Input Double : 1513.516
Input result : 1513.516
Input Word : Word
Input result : Word
Input Sentence : Hello World
Input result : Hello World


제어문

분기문(경우를 나누는 문법) + 반복문

분기문(branch statement)
if, if ~ else, if ~ else if ~ else, switch ~ case
조건에 따라 프로그램의 흐름을 나누는 문법

if(조건문) {수행 코드} : 조건문이 참(true)인 경우, 수행 코드를 실행. 거짓(false)인 경우, 실행하지 않음.

if(조건문) {수행 코드 1} else {수행 코드 2} : 조건문이 참(true)인 경우, 수행 코드 1을 실행. 거짓(false)일 경우, 수행 코드 2를 실행.

package ch03;

import java.util.Scanner;

public class Ch03Ex16 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int fNum = (int) (Math.random() * 10);
		System.out.println("First Number : " + fNum);
		System.out.println("두 번째 수는 첫 번째 수 보다 _____");
		System.out.println("1. 낮다  2. 높다");
		System.out.print("입력 : ");
		int uNum = sc.nextInt();
		
		int sNum = (int) (Math.random() * 10);
		System.out.println("Second Number : " + sNum);
		
		if (uNum == 1) {
			if (fNum > sNum) {
				System.out.println("승리");
			} else {
				System.out.println("패배");
			}
		} else {
			if (fNum > sNum) {
				System.out.println("패배");
			} else {
				System.out.println("승리");
			}
		}	
	}
}

출력 결과
First Number : 7
두 번째 수는 첫 번째 수 보다 _
1. 낮다 2. 높다
입력 : 1
Second Number : 2
승리

▶if ~ else if ~ else, swith ~ case는 다른 글에서 보강

반복문
for, while
break(중단), continue(건너뛰다)
▶ 다른 글에서 보강


좋은 웹페이지 즐겨찾기