22.04.19
연산자
사칙연산
+(더하기), -(빼기), 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(건너뛰다)
▶ 다른 글에서 보강
Author And Source
이 문제에 관하여(22.04.19), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@enfyswon07/22.04.19저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)