❗ Arithmetic Operator 산술 연산자 => 이항 연산자 |
* 연산 방법, 우선순위가 일반 수학 산술과 동일하다 * + : 덧셈 * - : 뺄셈 * * : 곱셈 * / : 나눗셈 * % : 모듈러(Modular) => 나눗셈에서 나머지를 구함 * 특이케이스 System.out.println(5/0); // error ArithmeticException : /by zero 정수를 0으로 나눌 수 없음 |
int num1 = 10;
int num2 = 3;
System.out.println("num 1 : " + num1 + "num 2 : " + num2); // 10, 3
System.out.println("num1 + num2 : " + num1 + num2); // 결과값은? 103
System.out.println("num1 + num2 : " + (num1 + num2)); // 결과값은? 13
// (num1 + num2) 괄호로 묶어줘야 13이라는 결과값이 나옴!
// 만약에 묶지 않고 출력하면 String(문자열)로 인식하기 때문에 "10" + "3" = "103"이 출력
System.out.println("num1 - num2 : " + (num1 - num2));
// 뺄셈의 경우 괄호로 묶지 않으면
// 문자열과 num1을 하나로 묶어서 새로운 문자열을 만들기 때문에 오류 발생
System.out.println("num1 * num2 : " + num1 * num2);
System.out.println("num1 / num2 : " + num1 / num2);
// *, /, % 우선순위가 +, -보다 높기 때문에 묶지 않아도 먼저 연산이 됨
// 단, 가독성을 위해 괄호를 사용할 것을 권장함
[실습] 사탕 나눠주기 프로그램 |
메소드명 : methodCandy() 입력받을 값 : 1. 인원 수 2. 사탕 갯수 1인당 가질 수 있는 사탕의 갯수 : 사탕 갯수 / 인원수 출력 형식 1인당 가질 수 있는 사탕의 갯수 : n개 남는 사탕의 갯수 : n개 |
public void methodCandy() {
Scanner scanner = new Scanner(System.in);
System.out.println("인원수를 입력해주세요");
int person = scanner.nextInt(); // 인원수
System.out.println("사탕 갯수를 입력해주세요");
int candy = scanner.nextInt(); // 사탕 갯수
System.out.println("1인당 가질 수 있는 사탕의 갯수 : " + (candy / person));
System.out.println("남는 사탕의 갯수 : " + (candy % person));
}

❗ Indecrease Operator 증감 연산자 |
* 증감연산자 : 단항연산자로서 한번에 1씩 증가하거나 감소하는 연산을 한다. * => 먼저 증감을 할건지, 나중에 증감을 할건지 연산자의 위치에 따라 달라진다. * [표현법] * ++ : 값을 1씩만 증가시키는 연산자 * -- : 값을 1씩만 감소시키는 연산자 * 연산자의 위치 * 전위연산 : ++값, --값 => 먼저 값을 증감하고 그 값을 처리한다. * 후위연산 : 값++, 값-- => 값을 먼저 처리하고 나서 증가하거나 감소한다. |
int a = 10;
int b = a++; // b에 a값 10을 대입한 후 a++ = 11
System.out.println(a); //11
System.out.println(b); //10
// b라는 변수에 a값을 먼저 대입하고 (선 처리 부분)
// a라는 값을 증가시킨다 (후 연산)
int c = 20;
int d = c--;
System.out.println(c); //19
System.out.println(d); //20
// d라는 변수에 c값을 먼저 대입하고
// c값을 감소시킨다
//후위연산자
int num1 = 20;
int result = num1++*3;
System.out.println(num1);// 21
System.out.println(result); //60
//전위연산자
int num2 = 20;
int result2 = ++num2*3;
System.out.println(num2); //21
System.out.println(result2); //63
❗ Compound Assignment Operator 복합 대입 연산자 : "=" 대입연산자 |
* 다른 산술 연산자랑 대입연산자가 결합한 것 => 자기 자신과 해당 산술연산 후에 그 결과를 자기자신한테 덮어씌우는 것 +=, -=, /=, %= ex) int a = 1; a = a + 3; 기존에 a 값에 3을 더하고 그 결과 값을 a에 다시 대입하겠다. => a += 3; |
int num = 12;
System.out.println(num); // 12
//num을 3 증가시키기
num = num + 3;
System.out.println("3을 증가시킨 num : " + num); // 15
//num을 3 증가시키기
num += 3;
System.out.println("3을 증가시킨 num : " + num); // 18
//num을 3 감소시키기
num -= 3;
System.out.println("3을 감소시킨 num : " + num); //15
//num을 3배 증가시키기
num *= 3;
System.out.println("3배 증가시킨 num : " + num); //45
//num을 2배 감소시키기
num /= 2;
System.out.println("3배 감소시킨 num : " + num); //22
//num을 2로 나눈 나머지를 num에 대입
num %= 2;
System.out.println("3을 감소시킨 num :" + num); //0
❗ Logical Negation Operator 논리 부정 연산자 |
* true, false을 반대로 바꿔주는 연산자 * [표현법] !논리값 ex) !true = false |
❗ Comparison Operator 비교 연산자 ☆☆☆☆☆ |
* 비교연산자 (관계연산자) * 두 개의 값을 가지고 비교, 이항연산자 * 비교연산을 한 결과 => 참일 경우 true, 거짓일 경우 false * 특정 조건을 제시할 수 있는 ★조건문★에서 쓰일 예정 * 종류 * 1. 크고 작음을 비교 (의문문) * a < b : a는 b보다 작습니까? * a > b : a는 b보다 큽니까? * a <= b : a는 b보다 작거나 같습니까? * a >= b : a는 b보다 크거나 같습니까? * * 2. 일치함을 비교 : 동등비교 * a == b : a와 b는 일치합니까? * a != b : a와 b는 일치하지 않습니까? * * => 피연산자는 숫자, 결과값은 논리값 |
❗ Logical Operator 논리 연산자 |
* 두 개의 논리값을 연산하는 연산자 * [표현법] 논리값 논리연산자 논리값 => 결과값도 논리값 * 종류 * 1. AND 연산자 : 논리값 && 논리값 * 좌항과 우항의 값이 모두 true 여야만 최종 결과가 true * 2. OR 연산자 : 논리값 || 논리값 * 좌항 또는 우항의 값 중 하나로 true 이면 최종 결과가 true * && : 두 개의 조건이 모두 true일 때 결과가 true * ture && true => true * true && false => false * false && true => false * false && false => false * || : 두 개의 조건 중 하나라도 true 이면 결과가 true * ture || true => true * true || false => true * false || true => true * false || false => false * |
public void method1() {
// 사용자가 입력한 정수값이 양수 "이면서(이고)" 짝수인지 확인해보자
Scanner sc = new Scanner(System.in);
System.out.println("정수를 입력해 주세요 : ");
int num = sc.nextInt();
boolean result1 = num > 0;
boolean result2 = num % 2 == 0;
//boolean result = (num > 0) && (num % 2 == 0);
System.out.println("사용자가 입력한 정수가 양수이면서 짝수입니까? : " + (result1 && result2));
sc.close();
}
public void method2() {
// 입력한 정수값이 1 이상 100 이하인지 확인해보자
Scanner sc = new Scanner(System.in);
System.out.println("정수를 입력해 주세요 : ");
int num = sc.nextInt();
boolean result = ((100 >= num) && (num >= 1));
System.out.println("정수값이 1 이상 100 이하입니까?\n" + result);
sc.close();
}
// OR
public void method3() {
// 사용자가 입력한 값이 A 또는 a인지 확인해보자
Scanner sc = new Scanner(System.in);
System.out.println("알파벳 한 글자만 입력해주세요.");
char ch = sc.next().charAt(0);
// ch = 문자, sc.next() = 문자열
// charAt(index) = 문자열을 char형으로 반환
// 배열 맛보기
// 문자열 : 순서 있는 문자의 모임!
// index : 순서 ** 0부터 시작
// 비교연산자의 경우 피연산자 == 숫자
// 문자의 경우 비교연산이 가능한가 ? 가능하다!! => 왜? int로 자동형변환이 되기 때문에(int)
boolean result = (ch == 'A') || (ch =='a');
// || : ~~이거나, 또는
System.out.println("사용자가 입력한 알파벳이 A 또는 a입니까? :\n" + result);
}
public void method4() {
int num = 10;
boolean result = false && (num > 0);
// Deadcode : 뒤의 비교연산 구문이 실행되지 않음
// 실행오류는 나지 않지만 굳이 결과값은 false일텐데 왜 써?
System.out.println("result : " + result);
❗ Ternary Operator 삼항 연산자 |
* 피연산자가 3개 => 값 3개와 연산자 1개로 이루어짐 (조건식 형식으로 쓰임) * 조건식 : 결과값에 따라서 연산을 처리하는 방식 * 결과값이 참일 경우 식 1을 처리하고, * 결과값이 거짓일 경우 식2를 처리한다. * [표현식] * 조건식 ? 조건이 true일 경우 결과값 : 조건이 false일 경우 결과값 |
public void method1() {
// 사용자가 입력한 값이 양수인지 아닌지 판별 후 그에 맞는 결과 출력
Scanner sc = new Scanner(System.in);
System.out.println("정수를 입력해주세요 : ");
int num = sc.nextInt();
String result = (num > 0) ? "양수" : ((num == 0) ? "0" : "양수 아님");
// String result = (num > 0) ? "양수" : "양수 아님";
//조건식 ? 조건이 true일 경우 결과값 : 조건이 false일 경우 결과값
System.out.println(num + "은(는) " + result);
sc.close();
}
public void method2() {
// 짝수, 홀수 판별
Scanner sc = new Scanner(System.in);
System.out.println("정수를 입력해주세요.");
int num = sc.nextInt();
String result = (num % 2 == 0) ? "짝수" : "홀수";
System.out.println(num + "은(는) " + result + " 입니다.");
sc.close();
}
public void method3() { // 실습
// 영문자 하나를 입력받아서 대문자인지 아닌지 판별
Scanner sc = new Scanner(System.in);
System.out.println("영문자 하나만 입력해주세요");
char ch = sc.next().charAt(0);
// 'a' ~ ch ~ 'z'
String result = ('a' <= ch && ch <= 'z') ? "대문자가 아닙니다" : "대문자 입니다";
System.out.println(result);
sc.close();
}
'국비 > Java' 카테고리의 다른 글
[04-1] Java - 조건문(if, else, else-if, switch) (0) | 2022.04.12 |
---|---|
[03-3] 과제 (0) | 2022.04.11 |
[03-1] Java - type casting, promotion 형변환 (0) | 2022.04.11 |
[02-3] Java 출력메소드(println, print, printf), 스캐너 Scanner (0) | 2022.04.08 |
[02-2] Java - 식별자(Identifier), 변수(Variable) (0) | 2022.04.08 |