본문 바로가기

JAVA

231205 Java

public class HelloWorld {
    public static void main(String[] args) { // 파라미터, 매개변수
        System.out.println("Hello World"); // println 메소드 호출 = 명령문
    }
}

 

프로그램 실행 시 파일명과 같은 클래스를 먼저 찾음

이후 메인 메소드를 찾아 진행하고

메인 메소드 내부 명령들을 실행 순서로 진행

 

전일 학습 내용 복기하기

public class HelloWorld {
    public static void main(String[] args) { // 파라미터, 매개변수
        System.out.println("Hello World"); // println 메소드 호출 = 명령문

        // 변수 선언 정수 기본 타입으로 number 라는 이름의 변수 만들기
        // 값은 리터럴 값을 저장
        int number = 10;
        System.out.println(number);

        /*
        기본 타입
        정수 : byte, short, int, long
        실수 : float, double
        문자 : char
        논리 : boolean
        
        프로모션 : 작은 타입이 큰 타입에 자동으로 변환되는 것
        캐스트 : 큰 타입을 작은 타입에 맞게 강제로 변환하는 것, (데이터 타입) 으로 작성, 값 절삭
         */
    }
}

 

과수원의 과일 생산량 확인해보기

public static void main(String[] args) {
        int apple = 5;
        int pear = 7;
        int orange = 5;
        int total = apple + pear + orange;

        float avg = (float) total / 24; // float 로 해보는 것으로 함
        // float avg = total / 24F;

        System.out.println("총 생산 갯수 : " + total);
        System.out.println("시간당 생산 갯수 : " + avg);
    }

 

0.1 을 10번 더하면 왜

1 이랑 다를까

 

0.1 을 변수에 선언 시 정확한 0.1 이 아닌 0.1 에 근접한 값으로 들어감 - 메모리의 한계

 

// 연산자 = 계산할 때 사용하는 기호, 연산 순서

/*
모든 프로그래밍에서는 데이터의 연산을 하기 위해 연산자를 사용
연산자는 자바 외 모든 언어에서 비슷하게 활용

주의할 점은 연산자의 기능과 순서
연산자의 종류가 많아 모두 외우기보단 자주 사용하며 익숙해지는게 좋음

1. 최우선 연산자
. - 닷, 점 : 클래스 또는 객체 소유의 변수, 메소드 호출 연산자
[] - 배열, 어레이
() - 괄호
2. 단항 연산자 - 등호(=)를 기준으로 한쪽에만 있는 기호
!(논리 부정, not), ~(비트 반전), +/-(부호 연산), ++/--(선행 증감)
캐스팅 (cast)
3. 산술 연산자
  +, -, /, *, %(나머지)
4. 쉬프트 연산자
  <<, >>, >>>
5. 관계 연산자
  >, <, >=, <=, ==, !=
6. 비트 연산자
  &, |, ^, !
7. 논리 연산자
  &&, ||
8. 삼항 연산자
  조건식 ? 참일 경우 : 거짓일 경우
9. 배정대입 연산자
  =, +=, -=, *=, /=, %=, ...
10. 후행증감 연산자
   ++/--
 */

 

최우선 연산자 - ., [], ()

String name = "홍길동";
char first = name.charAt(0); // 문자열 해당 번지수 글자 추출
System.out.println(first);
System.out.println(name.length());
Math.random();

 

단항 연산자의 선행 증감

// 선행 증감
int num = 1;
int num2 = ++num; // num 에 1 을 먼저 더한 후 num 을 num2 에 대입
// ++num : num = num + 1; 과 같다, num 값에 변화가 생김
System.out.println(num); // 2
System.out.println(num2); // 2

int num3 =  ++num + num2; // num 에 1 을 더한 후 num + num2 를 num3 에 대입
System.out.println(num); // 3
System.out.println(num2); // 2
System.out.println(num3); // 5

int num4 = --num + --num2 + --num3;
System.out.println(num); // 2
System.out.println(num2); // 1
System.out.println(num3); // 4
System.out.println(num4); // 7

num = 1; num2 = 1; num3= 1;

num2 = num--; // num 값을 먼저 num2 에 더한 후 num 값이 1 빠짐
System.out.println(num); // 0
System.out.println(num2); // 1

num4 = ++num - --num2 + num3--;
// int i = ++num - --num2;
System.out.println(num); // 1, 시작 값 num = 0
System.out.println(num2); // 0, 시작 값 num2 = 1
System.out.println(num3); // 0, 시작 값 num3 = 1
System.out.println(num4); // 2

 

10진법을 2진법으로 변환, 비트 변환

// 10진법을 2진법으로 변환
String result = Integer.toBinaryString(-2);
System.out.println(result);
// -7 : 11111111111111111111111111111001
//  7 : 00000000000000000000000000000111
// -1 : 11111111111111111111111111111111
// -2 : 11111111111111111111111111111110
// -3 : 11111111111111111111111111111101

// 비트 반전, 0 -> 1, 1 -> 0
System.out.println(Integer.toBinaryString(~-2));
// ~1 : 11111111111111111111111111111110
// -2 : 11111111111111111111111111111110
//~-2 : 00000000000000000000000000000001

 

산술 연산자

+, -, *, /, %(나머지)

num = 2;
num2 = 2;
num3 = num % num2;
System.out.println(num3); // 0
// 2 % 3 -> 2, 2 % 2 -> 0

 

쉬프트 연산자

4. 쉬프트 연산자
<<, >>, >>>

num = 10;
System.out.println(Integer.toBinaryString(num));
// 00000000000000000000000000001010
System.out.println(Integer.toBinaryString(num >> 2));
// 00000000000000000000000000000010, -> 방향으로 2칸 밀기
System.out.println(10 >> 2); // 2
System.out.println(Integer.toBinaryString(num >> 3));
// 00000000000000000000000000000001, -> 방향으로 3칸 밀기
System.out.println(Integer.toBinaryString(num << 2));
// 00000000000000000000000000101000, <- 방향으로 2칸 밀기
System.out.println(10 << 2); // 40
System.out.println(Integer.toBinaryString(-1 << 2));
// -1 >> 2  : 11111111111111111111111111111111, 음수는 채워지는 값도 1 로 채워짐
// -1 << 2  : 11111111111111111111111111111100, 값이 증가할 때에는 0 이 채워짐
// -1 <<< 2 : 00111111111111111111111111111111

 

비트 연산자

// 비트 연산자 &(and 논리곱), |(or, 논리합), ^ (XOR)
// & : 양쪽 모두 참일 경우 참
// | : 어느 한쪽이 참일 경우 참
// ^ : 한쪽이 참이고, 다른 한쪽이 거짓일 때 참, 참^참 = 거짓, 거짓^거짓 = 거짓
System.out.println(10 & 4);
// 10 & 2 : 1010 & 0010 -> 0010
// 10 & 3 : 1010 & 0011 -> 0010
// 10 & 4 : 1010 & 0100 -> 0000
System.out.println(-1 & -2);
// -1 & -2 : 1111 & 1110 -> 11...1110
System.out.println(11 | 7);
// 11 | 7 : 1011 | 0111 -> 1111
System.out.println(11 ^ 7);
// 11 ^ 7 : 1011 ^ 0111 -> 1100

 

논리 연산자

// 논리 연산자 &&, ||
System.out.println(1 + 1 == 2 && false); // false
true && true = true
true && false = false
false && true = false
false && false = false

System.out.println(1 > 0.5 || true); // true
true || true = true
true || false = true
false || true = true
false || false = false

 

삼항 연산자

// 삼항 연산자
num = 1;
if (num == 1){
    System.out.println("1 입니다.");
} else {
    System.out.println("1이 아닙니다.");
}
// 삼항 연산자로 변환
System.out.println(num == 1 ? "1 입니다." : "1이 아닙니다.");

 

배정 대입

// 배정 대입
int number = 10;
number += 1;
// number = number + 1;
number -= 1;
// number = number - 1;
number /= 2;
// number = number / 2;
number *= 3;
// number = number * 3;

 

제어문 = 조건문, 반복문

// 제어문 = 조건문, 반복문
/*
조건문 = if, switch
반복문 = for, while, do ~ while
 */
 
제어문이란 프로그램이 실행될 때 특정 조건, 반복을 수행 또는
멈추게 하기 위해 필요한 명령 구문

제어문은 조건에 따라 분기되는 조건문과
특정 구문을 반복하는 반복문으로 구성

 

if 조건문은 필요에 따라 구성할 수 있음
if 만 정의해도 되고, if ~ else if 로 구성 가능
if 와 else 로만 구성해도 문제 없음 ( 특별한 규칙이 없음 )
단, if 가 없는 else if, else 는 불가능
필요에 따라 각 구문 내부에 또 다시 조건을 중첩시킬 수 있음

 

if 문

조건문
if (조건식) { 
 조건식이 참일 때 실행할 문장 
}

if (조건식) {
 참일 때 
} else { 
 거짓일 때 
}

if (조건식1) {
 조건식1 이 참일 때 
} else if (조건식2) {
 조건식1 이 거짓 조건식2 가 참일 때 
} else {
 조건식 1,2 가 모두 거짓일 때
}

 

if 문 예시

int num = 5;
if (num > 5) {
  System.out.println("5 보다 큽니다.");
} else if (num < 5) {
  System.out.println("5 보다 작습니다.");
} else {
  System.out.println("5 입니다.");
}

 

짝수, 홀수 구하기

public static void main(String[] args) {
        int number = 12;
        if (number % 2 == 0) {
            System.out.println("짝수");
        } else {
            System.out.println("홀수");
        }
    }

 

스캐너 = 키보드로 들어오는 숫자, 문자를 받아 자바가 처리

// 스캐너 = 키보드로 들어오는 숫자, 문자를 받아 자바가 처리
Scanner sc = new Scanner(System.in);

 

주민등록번호 뒷자리 첫 숫자를 입력받아 성별 확인하기

// 스캐너 = 키보드로 들어오는 숫자, 문자를 받아 자바가 처리
Scanner sc = new Scanner(System.in);
System.out.println("주민등록번호 뒤 첫 숫자를 적어주세요.");
int input = sc.nextInt();
System.out.println("입력한 숫자 : " + input);
if (input % 2 == 0) {
  System.out.println("여자");
} else {
  System.out.println("남자");
}

 

Scanner 변수 사용 후 닫아 줄 필요가 있음

Scanner sc = new Scanner(System.in);
sc.close; // 닫아주기

 

서로 다른 두 수의 값 바꾸기

int num1 = 90;
int num2 = 5;

int change;

change = num1;
num1 = num2;
num2 = change;

System.out.println(num1); // 5
System.out.println(num2); // 90

 

num1 의 값이 num2 보다 클 경우에만 값 바꾸기

int num1 = 90;
int num2 = 5;

// 정렬하기
int temp;
if (num1 > num2) {
  temp = num1;
  num1 = num2;
  num2 = temp;
}
System.out.println(num1);
System.out.println(num2);

 

가위 바위 보 게임 만들기

public static void main(String[] args) {
        // 1 가위, 2 바위, 3 보
        Scanner sc = new Scanner(System.in);
        int com = (int) (Math.random() * 3) + 1;
        System.out.println("가위바위보 게임에 오신 것을 환영합니다.");
        System.out.println("1번은 가위, 2번은 바위, 3번은 보");
        System.out.println("원하는 값을 입력해주세요.");
        System.out.print("입력 : ");
        int input = sc.nextInt();

        if ((input== 1 && com == 3) || (input == 2 && com == 1) || (input == 3 && com == 2)) {
            System.out.println("이겼습니다.");
            System.out.println("com : " + com);
        } else if ((input == 1 && com == 2) || (input == 2 && com == 3) || (input == 3 && com == 1)) {
            System.out.println("졌습니다.");
            System.out.println("com : " + com);
        } else if (input == com) {
            System.out.println("비겼습니다.");
            System.out.println("com : " + com);
        }
        sc.close();
    }

 

가위바위보 간단하게 해보기

int win = input - com;

if (win == -2 || win == 1){
  System.out.println("승리");
  System.out.println("com : " + com);
} else if (win == 0){
  System.out.println("비김");
  System.out.println("com : " + com);
} else {
  System.out.println("짐");
  System.out.println("com : " + com);
}

 

입력된 글자 중 하나만 입력받는 명령어

System.in.read();

ASCII CODE 에 해당하는 숫자를 출력함
숫자 0 ~ 9 : ASCII CODE 48 ~ 57
알파벳 a : 97
알파벳 A : 65

원하는 숫자를 출력하기 위해서는 48 을 빼면 됨
int value = System.in.read() - 48;

'JAVA' 카테고리의 다른 글

231207 Java  (0) 2023.12.07
231206 Java  (2) 2023.12.06
231204 Java  (2) 2023.12.04
231201 Java  (0) 2023.12.01
231130 Java  (2) 2023.11.30