Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

랩터

4/4 본문

공부/JAVA

4/4

raptorhs 2024. 4. 4. 10:06

 

 

내계정에 연동-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 연산자(!)는 truefalse를 반대로 바꾸는 연산자입니다.

// 아래의 비교 연산 결과는 모두 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