랩터
4/4 본문
내계정에 연동-fork
코드 다운 <>code에서 zip file 다운로드
-한글 안깨지게 하는 코드
-쉬프트 두번 누르고 edit vm누르고 젤 첫번째꺼에서 2번째줄 해당 코드 그대로 작성
연산자(Operator)
연산자란, 하나의 값 또는 여러 개의 값을 피연산자로 하여 새로운 값을 만들어내는 기호를 의미합니다. 자바에서 연산자의 종류는 많습니다. 하지만, 모든 연산자를 지금 한 번에 배울 필요는 없습니다.
산술 연산자
나눗셈 연산자를 사용할 때, 좌항과 우항이 모두 int형이면 그 결과도 int형이기 때문에 소수점 이하의 값은 버려지고, 오직 몫만 결과로 반환됩니다.
int num1 = 9 / 0; // 에러
double num2 = 9.0 / 0; // Infinity
int num3 = 9 % 0; // 에러
double num4 = 9.0 % 0; // 에러
double num1 = 9 / 2; // 4.0
int num2 = 9 / 2; // 4
double num3 = 9.0 / 2; // 4.5
double num4 = (double) 9/2; //4.5
좌항이나 우항 중 하나라도 실수 타입의 값이 존재한다면, 실수 타입이 아닌 값도 실수 타입으로 자동으로 형변환되어 계산되며, 결과적으로 실수 간의 나눗셈 연산이 되어 소수점이 버려지지 않은 온전한 값이 결과값으로 반환됩니다.
증감 연산자
//후위 증감 연산자:num1의 값을 사용한 다음,num1의 값을 1증가시킴.
num1++; // num1 = num1 + 1;과 같습니다.
//전위 증감 연산자: 증감한뒤 , num1의 값을 적
++num1; // num1 = num1 + 1;과 같습니다.
num2--; // num2 = num2 - 1;과 같습니다.
--num2; // num2 = num2 - 1;과 같습니다.
int num1 = 1;
int prefix = ++num1;
int num2 = 1;
int postfix = num2++;
- num1 & prefix : num1에 전위형 증감연산자 ++를 사용했으므로, num1의 값이 1만큼 먼저 증가한 다음 그 결과값이 prefix에 할당됩니다.
- 따라서 num1의 값은 2, prefix의 값도 2가 됩니다.
- num2 & postfix : num2에 후위형 증감연산자 ++를 사용했으므로, num2의 값이 먼저 postfix에 할당된 다음에 num2의 값이 1 증가합니다.
- 따라서 num2의 값은 2, postfix의 값은 1이 됩니다.
복합 대입 연산자
num1 += 2;
num2 -= 2;
해당 코드는
num1 = num1 + 2;
num2 = num2 - 2;
와 같습니다.
1이 아니라 2 혹은 3씩 증가시키거나 감소시키고 싶을 때는 증감 연산자를 사용할 수 없습니다
.
// num1~5의 값을 모두 10이라고 한다면,
num1 += 3; // num1 -> 13
num2 -= 3; // num2 -> 7
num3 *= 3; // num3 -> 30
num4 /= 3; // num4 -> 3
num5 %= 3; // num5 -> 1
비교 연산자
비교 연산자는 boolean 타입으로 평가될 수 있는 조건식에 사용되며, 크게 대소 비교(>, <, <=, >=) 연산자와 등가 비교(==, !=) 연산자로 분류됩니다.
대소 비교 연산자
5 <= 5 등호가 뒤에 와야함,앞에오면 오류
비교 연산자를 사용할 때 주의할 점은, 이항 비교만 가능하다는 것입니다
대소 비교 연산자 결과
5 > 3 | true |
5 <= 5 | true |
3 > 2 | true |
2 >= 3 | false |
등가 비교 연산자
등가 비교 연산자는 값이 동등하면 true를, 그렇지 않으면 false를 반환합니다.
등가 비교 연산자 결과
5 == 3 | false |
5 == 5 | true |
3 != 2 | true |
3 != 3 | false |
문자열은 등가비교 연산자쓰면 주소값끼리 비교하게 됩니다.
문자열은 equals쓰자. ==쓰면 노란줄 나오게
논리 연산자
논리 연산자는 AND 연산자 &&, OR 연산자 ||, NOT 연산자 !를 포함하며, 공통으로 boolean 타입을 반환합니다.
논리 연산자의 연산 결과는 다음과 같습니다.
- AND 연산자(&&): 피연산자 두 개가 모두 true일 때 true를 반환하며, 피연산자 두 개 중 하나라도 true가 아니면 false를 반환합니다.
- OR 연산자(||): 피연산자 두 개 중 단 하나라도 true면 true를 반환하며, 피연산자가 모두 false인 경우에만 false를 반환합니다.
- NOT 연산자(!)는 true와 false를 반대로 바꾸는 연산자입니다.
// 아래의 비교 연산 결과는 모두 true입니다.
!true == false
!false == true
!!true == true
연산자 우선순위
우선순위 연산자 내용
1 | (), [] | 괄호 / 대괄호 |
2 | !, ~, ++, -- | 부정/ 증감 연산자 |
3 | *, /, % | 곱셈 / 나눗셈 연산자 |
4 | <, <=, >, >= | 대소 비교 연산자 |
5 | && | AND 연산자 |
6 | || | OR 연산자 |
7 | ? : | 조건 연산자 |
8 | =, +=, -=, /=, %= | 대입/할당 연산자 |
?: 조건 연산자 true면 앞에께 출력 false면 뒤에꺼가 출력
콘솔 입출력(I/O)
이번 챕터에서는 문자열을 출력하고 입력받을 수 있는 메서드들에 대해서 학습합니다.
학습 목표
- 다음의 콘솔 출력 메서드들의 차이를 이해하고, 이를 활용할 수 있다.
- System.out.print()
- System.out.println()
- System.out.printf()
/////사실 이 print콘솔을 안쓰는게 좋다 - 비용문
- Scanner를 활용하여 문자열 데이터를 입력받을 수 있다.
지시자 출력 포맷
%b | 불리언 |
%d | 10진수 |
%o | 8진수 |
%x, %X | 16진수 |
%c | 문자 |
%s | 문자열 |
%n | 줄 바꿈 |
System.out.printf("%s%n", "Hello JAVA"); // 줄 바꿈이 됩니다.
System.out.printf("%s%n", "Kim" + "Coding");
System.out.printf("%d%n", 3+6);
System.out.printf("지금은 %s입니다", 2022 + "year"); // 자동 타입 변환이 일어납니다.
System.out.printf("나는 %c%s입니다", '김', "코딩"); //여러 개의 인자를 넣을 수 있습니다.
import java.util.Scanner;
// click the <icon src="AllIcons.Actions.Execute"/> icon in the gutter.
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); // Scanner 클래스의 인스턴스를 생성합니다.
int inputValue = scanner.nextInt(); // 입력한 내용이 inputValue에 저장됩니다.
System.out.println(inputValue); // 입력한 정수가 출력됩니다.
}
}
해당 코드의 경우 정수형 입력이 가능
문자열 입력하면 에러 발생
import java.util.Scanner;
// click the <icon src="AllIcons.Actions.Execute"/> icon in the gutter.
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); // Scanner 클래스의 인스턴스를 생성합니다.
String inputValue = scanner.nextLine(); // 입력한 내용이 inputValue에 저장됩니다.
System.out.println(inputValue); // 입력한 문자열이 출력됩니다.
}
}
문자열 입력
scanner에는 문자열을 입력받는 nextLine()뿐만 아니라, 정수형을 입력받을 수 있는 nextInt(), 실수형을 입력받을 수 있는 nextFloat()등의 메서드들도 존재합니다.
제어문(Control Flow Statements) - 조건문
조건문과 반복문을 통틀어 제어문이라고 합니다.
일반적으로 코드의 흐름은 위에서 아래로 향합니다. 즉, 위에서부터 아래로 순차적으로 실행됩니다. 하지만, 제어문을 사용하면 코드의 흐름을 개발자가 원하는 방향으로 바꿀 수 있습니다. 제어문은 if문, switch문을 사용하는 조건문과 for문, while문, do while문을 사용하는 반복문으로 분류됩니다.
- 제어문
- 조건문 : if문, switch문
- 반복문 : for문, while문, do while문
if...else문
if(조건식1) {
//조건식1이 참이라면, 실행되는 블록입니다.
}
else if (조건식2) {
//조건식1이 참이 아니면서 조건식2가 참일 때, 실행되는 블록입니다.
}
else {
//조건식1과 2가 모두 참이 아닐 때, 실행되는 블록입니다.
//else문은 생략 가능합니다.
}
절차지향적이기때문에 위에서부터 하나라도 실행되면 뒤에것들은 전부다 패스됩니다.
if(72>age>19) // 에러
if(72>age && age>19) //이렇게 써야함
if문 예제
import java.util.Scanner;
public class Main {
static Scanner myInput = new Scanner(System.in);
public static void main(String[] args) {
String dice = myInput.nextLine(); //주사위 번호 입력값을 받아옵니다.
if (dice.equals("1")) { // 입력한 주사위 번호가 1이면 다음 블록을 실행
System.out.println("1번"); // 콘솔에 "1번"을 출력
}
else if (dice.equals("2")) {
System.out.println("2번");
}
else if (dice.equals("3")) {
System.out.println("3번");
}
else if (dice.equals("4")) {
System.out.println("4번");
}
else if (dice.equals("5")) {
System.out.println("5번");
}
else if (dice.equals("6")) {
System.out.println("6번");
}
else {
System.out.println("없는 숫자! " + dice);
}
}
}
switch문 예제
-switch문 장점:직관적임
else와 같은 역할:default
import java.util.Scanner;
public class Main {
static Scanner myInput = new Scanner(System.in);
public static void main(String[] args) {
String dice = myInput.nextLine(); //주사위 번호 입력
switch (dice) {
case "1":
System.out.println("1번");
break; //다음 case를 실행하지 않고, switch문 탈출! ,break가 없다면 쭉 다 실행
case "2":
System.out.println("2번");
break;
case "3":
System.out.println("3번");
break;
case "4":
System.out.println("4번");
break;
case "5":
System.out.println("5번");
break;
case "6":
System.out.println("6번");
break;
default: //switch문의 괄호 안 값과 같은 값이 없으면, 여기서 실행문 실행
System.out.println("없는 숫자! " + dice);
break;
}
}
}
'공부 > JAVA' 카테고리의 다른 글
4/11 객체지향이론, 기본개념 (0) | 2024.04.11 |
---|---|
4/8 배열 (0) | 2024.04.08 |
[반복문]연습문제 (0) | 2024.04.05 |
[Java] 반복문 (0) | 2024.04.05 |
4/3 (0) | 2024.04.03 |