*비교연산자
true/false 산출.
동등비교 연산자는 모든타입에 사용 가능.
크기 비교 연산자는 boolean 외 모든 기본타입에 사용가능.
*논리 연산자 : boolean 타입만 사용 가능.
|| : or
- a || b 일 때, 둘 중 하나만 true여도 결과는 true
&& : and
- a && b 일 때, a와 b 모두 true여야 결과가 true
! : not. boolean의 값을 역전시킨다.
- !(3<5)는 false, !(3>5)는 true
^ : 비트 연산을 할 때 1이 홀수개이면 1, 짝수개이면 0. 자기자신과 짝수번 연산하면 0, 홀수번 연산하면 자기자신.
5^6
(10진수) (2진수)
5 = 101
6 = 110
------------------xor
3 = 011
A와 B가 다를 때 참을 리턴사는 연산자이다. (암호화할 때 사용가능.)
*대입연산자 : 등호 오른쪽을 항상 먼저 계산한다.
a = b b의 값을 a에 대입
a += b a = a + b와 동일
a -+ b a = a - b
a *= b a = a * b
a /= b a = a / b
a %= b a = a % b
a &= b a = a & b
a ^= b a = a ^ b
a |= b a = a | b
a <<= b a = a << b
a >>= b a = a >> b
a >>> b a = a >>> b
int num1 = 100;
System.out.println(num1); //100
num1 = num1 + 200; //num1 += 200 와 동일
System.out.println(num1); //300
num1 += 200
System.out.println(num1); //500
*증감 연산자 : 증가와 감소
-연산자가 피연산자 뒤에 붙는 경우
int a, b =4;
a = b++ +10;
결과 : a=14, b=5 //b를 먼저 사용 한 후에 1증가.
-연산자가 피연산자 앞에 붙는 경우
int a, b = 4;
a = ++b +10;
결과 : a = 15, b = 5 //b를 먼저 1증가 한 후에 사용.
-예제
public class UnaryOperator {
public static void main(String[] args) {
int opr = 0;
opr += 3; //opr = opr +3;
System.out.println(opr++); //3
System.out.println(opr); //4
System.out.println(++opr); //5
System.out.println(opr); //5
System.out.println(opr--); //5
System.out.println(opr); //4
System.out.println(--opr); //3
System.out.println(opr); //3
}
}
int a,b = 4;
a = b++ +10;
System.out.printf("a는 %d, b는 %d", a , b);
//결과 : a는 14, b는 5
*조건연산자 ?
세 개의 피연산자로 구성된 삼항(ternary) 연산자. 물음표 앞에는 참인지 거짓인지 판별할 수 있는 애가 온다.
if-else을 간결하게 표현할 수 있다.
int x = 5;
int y = y;
int s;
if(x>y) s = 1;
else s = -1; //실행문장이 단일인 경우 {} 생략 가능.
-------------------
in s = (x>y)? 1 : -1;
int x = 10, y = 3;
int s = (x>y)? 1 : -1;
System.out.println(s); //결과는 1
String result = (x%2)? "짝수" : "홀수";
System.out.println(result); //짝수 홀수 구분해서 출력.
*조건문(conditional statement)
특정 조건일 때 코드를 실행하는 문법. (if, else, else if 등의 명령키워드를 사용.)
ex) if잠금 해제 패턴이 5회 틀리면 1시간 동안 대기상태로.
- 단순 조건문 : if 다음의 괄호안에 조건식 입력. 실행문장이 단일 문장이면 { , } 생략가능.
true인 경우, if문을 벗어나 다음 문장 실행.
false인 경우, if 다음 문장이 실행되지 않고 if문을 빠져나옴.
-예제
시험 점수를 사용자에게 입력받아 80점 이상이면 합격을 판별하는 프로그램 만들기.
Scanner sc = new Scanner(System.in);
System.out.println("점수를 입력하시오.");
int score = sc.nextInt();
if (score>=80) {
System.out.println("합격입니다.");
}
- if-else문
if(조건식) {
실행문장1
}
else {
실행문장2
}
조건식이 true면 실행문장1 실행 후 if-else문을 벗어남.
false면 실행문장2 실행 후 if-else문을 벗어남.
-예제
입력된 수가 3의 배수인지 판별하는 프로그램 작성하기.
int score = sc.nextInt();
if ((score%3) == 0) {
System.out.println("3의 배수입니다.");
}
else {
System.out.println("3의 배수가 아닙니다.");
}
//또는
System.out.println((score%3)==0? "3의 배수입니다." : "3의 배수가 아닙니다.");
- 다중 if문
실행문장이 다시 if문 또는 if-else문을 포함. 조건문이 너무 많은 경우, switch문 사용권장.
if (score>=90) {
System.out.println("학점은 A입니다.");
}
else if(score>=80) {
System.out.println("학점은 B입니다.");
}
else if(score>=70) {
System.out.println("학점은 C입니다.");
}
else if(score>=60) {
System.out.println("학점은 D입니다.");
}
else if (score>=50) {
System.out.println("학점은 E입니다.");
}
else {
System.out.println("학점은 F입니다.");
}
-예제
로그인 프로그램 : 변수는 직접 저장하고, 아이디와 패스워드가 틀리면 각각 적당한 메세지 출력. id는 dubu 비번은 0528
String id = "dubu";
String pw = "0528";
Scanner in = new Scanner(System.in);
System.out.println("id와 비밀번호를 입력하시오.");
String keyId = in.next();
String keyPw = in.next();
if (id.equals(keyId)) {
if (pw.equals(keyPw)) {
System.out.println("로그인에 성공했습니다.");
}
else {
System.out.println("비밀번호를 확인하세요.");
}
}
else {
System.out.println("회원 정보를 확인하세요.");
}
**문자열을 비교할 때는 equals() 메소드를 써야한다. (==는 참조값을 비교하는 것.)
위 문제를 &&연산자를 사용해 풀어보면.
if (id.equals(keyId) && (pw.contentEquals(keyPw))) {
System.out.println("로그인에 성공했습니다.");
}
else if (id.equals(keyId)) {
System.out.println("비밀번호를 확인하세요.");
}
else {
System.out.println("회원 정보를 확인하세요.");
}
-switch 문
식과 case문의 값을 비교하여 일치하면 해당 case문의 실행문장 수행. 일치하는 것이 없으면 default문 실행.
break를 만나면 switch문을 벗어난다.
-예제
학점이 A,B인 학생에게는 "참 잘했음", 학점이 C,D인 학생에게는 "좀 더 노력해", 학점이 F인 학생에게는 "다음 학기에 다시 만나요"를 출력하는 프로그램 작성하기.
Scanner gr = new Scanner(System.in);
System.out.println("학점을 입력하시오.");
char grade = gr.next().charAt(0); //값을 char(한자리)로 만들어 주는 것.
switch (grade) {
case 'A' :
case 'B' :
System.out.println("참 잘했음.");
break;
case 'C' :
case 'D' :
System.out.println("좀 더 노력해.");
break;
case 'F' :
System.out.println("다음 학기에 다시 만나요.");
break;
}
charAt(0) 가장 첫글자를 불러온다. index는 항상 0부터 첫자리. char는 큰따옴표(")가 아니라 작은따옴표(')
-예제2
음료수 자판기 : 메뉴 1번은 coke, 2번은 sprite, 3번은 redbull인 자판기. 번호를 입력받아 해당 메뉴를 출력하기.
Scanner bm = new Scanner(System.in);
System.out.println("메뉴번호를 입력하시오.");
int menu = bm.nextInt();
switch (menu) {
case 1 :
System.out.println("coke");
break;
case 2 :
System.out.println("sprite");
break;
case 3 :
System.out.println("redbull");
break;
default :
System.out.println("wrong choice");
}
bm.close();
*반복문
- for 문 : for(초기식 ; 조건식 ; 증감식) { 반복실행문(들); }
초기식 : for문이 실행 한 후 오직 한번만 실행되는 초기화 작업.
콤마(,) 로 구분하여 여러 문장 가능. 초기화 할 일이 없으면 비워 둘 수 있다.
조건식 : 논리형 변수나 논리 연산만 가능. 비어있으면 true로 간주한다.
true면 반복, false면 반복 종료. = 조건식이 참일 동안 반복한다.
증감식 : 반복 작업 문장들의 실행 후 처리작업. 콤마(,) 로 구분하여 여러 문장 가능.
증감식 후 다시 조건식으로 간다.
증감식을 안쓰면 무한히 반복되는 무한루프가 된다.
-예제
"Hello world" 100번 출력하기.
for(int count = 1; count<=100; count++){
System.out.println("Hello World");
}
1부터 5까지의 합을 구하시오.
int total = 0;
for(int i = 1; i<=5; i++) {
total += i;
}
System.out.printf("1부터 5 까지의 합은 %d입니다.",total);
구구단 5단 출력하기. 형식은 5 * n = 5n
for(int i = 1; i<=9; i++) {
System.out.printf("5 * %d = %d ",i,5*i);
}
-연습문제
1. 1 - 100까지의 정수의 합을 구하여 출력하시오.
2. 1 - 100까지 홀수들의 합을 구하여 출력하시오.
3. 1 - 100까지 짝수들의 합을 구하여 출력하시오.
//1번
int total = 0;
for(int i = 1; i<=100; i++) {
total += i;
}
System.out.println("1-100까지의 정수의 합은 " + total);
//2번
int total_odd = 0;
for(int i = 1; i<=99; i=i+2) {
total_odd += i;
}
System.out.println("1-100까지의 홀수의 합은 " + total_odd);
//3번
int total_even = 0;
for(int i = 2; i<=100; i +=2) {
total_even += i;
}
System.out.println("1-100까지의 짝수의 합은 " + total_even);
// for문 안의 int i는 for문이 시작하면서 생기고 for가 종료되면 사라지기 때문에 여러번 반복해서 사용 가능.
'공부 > Java' 카테고리의 다른 글
0511 연습문제, 예외문 (0) | 2020.05.12 |
---|---|
0508 분기문, 메소드, 문자열, 배열 (0) | 2020.05.10 |
0507 반복문, 연습문제 (0) | 2020.05.10 |
0501 (0) | 2020.05.02 |
0429 (0) | 2020.04.30 |