본문 바로가기

JAVA

231130 Java

기존 학습 내용 복습

 

JDK : Java Development Kit

 

JRE : Java Runtime Enviroment

 

JDK 와 JRE 의 관계

JDK 는 자바를 개발할 수 있는 키트, JRE 는 자바를 실행할 수 있는 도구

 

JVM : Java Virtual Machine

 

컴파일 : 사람의 언어로 만든 소스 코드를 기계어로 번역하는 과정

 

javac Hello.java 를 컴파일하면 생기는 파일은 ?

 - Hello.class

 

자바 파일을 컴파일하여 생성된 파일은 ?

 - 클래스 파일

 

운영체제에서 독립적으로 바이트코드가 실행될 수 있는 이유는 ?

 - 운영체제에 맞게 설계된 JVM 덕분에

 

경로 Path 를 설정하는 이유는 ?

 - 소스 파일을 컴파일 하거나 실행하려고 할 때 원하는 버전의 자바로 실행할 수 있도록

 

bin 은 무엇의 약자인가

 - binary

 

bin 디렉토리 안에는 무엇이 있나

 - 자바를 실행하기 위한 exe 파일들이 있음

 

dll 확장자는 무엇인가

 - Dynamic Linking Libary

 

LTS 는 무엇의 약자인가

 - Long Term Support

 

변수 타입

 

숫자 정수형 : byte, short, int, long // byte ( 1 byte ), short ( 2 byte ), int ( 4 byte ), long ( 8 byte )

숫자 실수형 : float, double

 

문자형 : char, String

 

참거짓 : boolean

 


 

유효범위 ( Scope )

자바는 중괄호 안에 선언된 변수는 밖으로 벗어날 수 없다

 

전역 변수 - 클래스 변수

지역 변수 - 로컬 변수

 

지역 변수 오류 예시

public static void main(String[] args) {
        int v1 = 15;
        
        if ( v1 > 10){
        	int v2;
            v2 = v1 - 10;
            System.out.println("v2 의 값 : " + v2);
        }
        
        int v3 = v1 + v2 + 5; // v2 변수는 if 문 안에서 선언되어 컴파일 오류 발생
        System.out.println(v3);
        
    }

 

16 진수 출력 해보기

public static void main(String[] args) {
        int var4 = 0xB3;
        System.out.println("var4 : " + var4); // 10진수 값인 179 출력
    }

 

long 변수 선언해보기

long var5 = 454452342444; // 숫자의 기본 변수형은 Integer 로 long 선언 시 long 변수임을 알려줘야 함

long var5 = 454452342444L; // 숫자 뒤에 l 또는 L 을 붙여 long 형임을 인식 시켜줘야 함, 주로 대문자 입력

 

char 형

char 는 숫자를 유니코드로 변환하여 저장하기 때문에 숫자를 저장하여도 숫자에 맞는 문자를 출력

public static void main(String[] args) {
        char var1 = 'A';
        char var2 = 65;
        char var3 = 97;
        System.out.println(var1); // A 출력
        System.out.println(var2); // A 출력
        System.out.println(var3); // a 출력, 알파벳 대문자와 소문자는 유니코드 32 차이
    }

 

이스케이프 문자

String var5 = "홍길동\n전우치"; // 홍길동과 전우치 사이에 줄바꿈 실행
String var6 = "홍길동\t전우치\t이순신"; // 홍길동, 전우치, 이순신 사이에 tab 간격만큼 벌어짐
String var7 = "저는 지금 \"자바\"를 배우고 있습니다" // 저는 지금 "자바"를 배우고 있습니다 출력

 

실수형 변수

float var1 = 3.14F; // 실수형은 double 이 기본이기 때문에 숫자 뒤에 F 를 붙여
// 컴파일러가 float 형임을 알려줘야 함
double var2 = 3.14;

 

소숫점 등록하기

double var3 = 314e-2; // 314 에 10 의 -2 제곱을 곱한다는 의미
double var4 = 314e2; // 314 에 10 의 2 제곱을 곱한다는 의미

System.out.println(var3); // 3.14 출력
System.out.println(var4); // 31400.0 출력

 

자동 형 변환

byte < short < int < long < float < double

byte a = 1;
int b = a;

System.out.println(b); // 정상적으로 1 출력

 

수동 형 변환, 캐스팅 ( casting )

int a = 10;
byte b = (byte) a; // 역순은 자동으로 형 변환이 어려워 a 의 값을 (byte) 로 수동 형 변환을 해야 함

System.out.println(b); // 10 출력

 

byte 끼리의 연산, 자바에서의 연산은 자동으로 int 형으로 변환하여 연산 진행

int 보다 상위 연산자 끼리의 연산은 상관 없음

byte a = 10;
byte b = 20;

byte result = a + b; // 컴파일 오류 발생

byte result = (byte) (a + b); 혹은
int result = a + b; 로 작성해야 오류가 발생하지 않음

 

실수의 자동 형 변환

float c = 1.23F;
float d = 1.23F;
double e = 1.23;

double result1 = c + d; // float 끼리의 연산도 자동으로 double 변환

System.out.println(result1); // 2.4600000381469727 출력

double result2 = d + e; // float 과 double 연산도 자동 형 변환

System.out.println(result2); // 2.4600000190734863 출력

 

정수의 나눗셈

public static void main(String[] args) {
        int a = 1;
        int b = 2;

        double result = a / b; // a / b 는 int 연산이라 소숫점이 존재하지 않아 소수 값이 버려짐
        System.out.println(result); // 0.0 출력
    }

 

연산의 데이터 타입 결정하기

public static void main(String[] args) {
        int i = 1;
        double d = 2;
        
        double result1 = a + b; // int 보다 데이터 타입이 더 큰 double 으로 결정
        System.out.println(result1); // 3.0 출력
    }

 

데이터 타입 변환하는 방법

public static void main(String[] args) {
        double result = (double) a / b;
        double result = (double) a / b;
        double result = a / (double) b;
        double result = a * 1.0 / b;
        } 
  위 방법 중 첫 번째 방법이 가장 많이 쓰임

 

문자열 선언하기

public static void main(String[] args) {
        String a = "안녕하세요";
        String b = "Hello";
        int c = 4;
        System.out.println(a + b + c + c); // 안녕하세요Hello44 출력, 자동 형 변환됨
        System.out.println(c + c + a + b); // 8안녕하세요Hello 출력
    }

 

문자열을 정수형이나 실수형으로 변환하기

public static void main(String[] args) {
        int e = Integer.parseInt("3");
        System.out.println(e + e); // 6 출력

        double f = Double.parseDouble("0.3");
        System.out.println(f + f); // 0.6 출력
    }

 

모니터로 변수값 출력하기

System.out.println 해석하기

System. - 시스템이 가지고 있는
out. - 출력 장치로
println(); - 괄호 안의 내용을 출력하고 행을 바꿔라

 

Scanner 변수 사용하기

public static void main(String[] args){
        Scanner scanner = new Scanner(System.in); // scanner 변수 선언
        String b = scanner.nextLine(); // Enter 전까지 입력된 줄을 b 문자열에 저장
        System.out.println(b);
        int i = scanner.nextInt(); // 입력된 정수 값을 int 형 i 에 저장
        System.out.println(i);
    }

 

문자열 비교하기

문자열 간의 비교는 "==" 가 아닌 equals() 함수를 이용해야한다

public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String e = scanner.nextLine();
        String d = "Hello";

        System.out.println(e==d); // Hello 입력 시 false 출력
        System.out.println(e.equals(d)); // Hello 입력 시 true 출력
    }

 

증감식 작성하기

public static void main(String[] args) {
        int a;
        a = 1;
        System.out.println(a); 
        a += 1; // a = a + 1; 과 동일
        System.out.println(a); // 2 출력
        a++; // a 값에 1 을 더함
        System.out.println(a); // 3 출력
    }

 

증감식 예시

public static void main(String[] args) {
        // 증감식
        int a = 1;
        a += 1; // a = a + 1; 과 동일
        a++; // a 의 값에 1 을 더함
        ++a; // a 의 값에 1 을 더함
        int b = a++; // b 에 a 값을 대입시킨 후 a 값 증가
        System.out.println(b); // 4
        System.out.println(a); // 5
        b = ++a; // a 값을 증가시킨 후 해당 값을 b 에 대입
        System.out.println(b); // 6
        System.out.println(a); // 6
    }

 

비교 연산자의 종류

+, -, *, /, % : 사칙연산 및 나머지 계산
+, - : 양수와 음수 부호
+ : 문자열 연결
=, +=, -=, *=, /=, %= : 우변의 값을 좌변의 변수에 대입
==, !=, >, <, >=, <=, instanceof : 값의 비교
!, &, |, &&, || : 논리 부정, 논리곱, 논리합
(조건) ? true 값 : false 값 // 삼항 연산자

 

삼항 연산자와 if문

public static void main(String[] args) {
        int a = 88;
        if (a > 90) {
            System.out.println("A급");
        } else if (a > 80){
            System.out.println("B급"); // B급 출력
        } else {
            System.out.println("C급");
        }
        System.out.println((a>90) ? "A급" : "B급"); // 조건이 참이면 앞의 값 실행, 거짓이면 뒤의 값 실행
    }

 

랜덤 주사위 굴려보기

public static void main(String[] args) {
        double number = Math.random(); // Math.random() 은 0.0 ~ 1.0 사이 랜덤 값을 출력
        int number2 = (int) (Math.random() * 6) + 1; // 0.0..1 ~ 0.99..9 값에 6 을 곱한 후 int 형으로 변환하여 소숫점 없앰
        System.out.println(number2);
    }

 

score 값에 따른 값 출력해보기

public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("점수를 입력하세요 : "); // 점수 정수형으로 입력
        int score = scanner.nextInt(); // 입력된 정수를 score 변수에 대입

        if (score >= 80){
            System.out.println("합격"); // score 가 80 이상이면 합격 출력
        } else {
            System.out.println("불합격");
        }
    }

 

주사위 만들기와 주사위 값에 따라 다른 문장이 나오는 switch case 문 만들기

public static void main(String[] args) {
        int number2 = (int) (Math.random() * 6) + 1;

        switch (number2){
            case 1:
                System.out.println("1입니다"); // number1 값이 1 이면 출력
                break; // break 는 switch 문을 바로 벗어나게 해줌
            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;
        }

 

for 문을 이용하여 1 ~ 100 의 값 모두 더해보기

public static void main(String[] args) {
        int sum = 0;
        for (int i = 1; i <= 100; i++) { // i 가 100 보다 크면 반복문 종료
            sum += i; // i 의 값을 sum 에 더하기
        }
        System.out.println(sum); // 5050 출력
   }

 

while 문 이용하여 1 ~ 100 값 모두 더해보기

public static void main(String[] args) {
    int i = 1;
    int sum = 0; // i 와 sum 을 먼저 선언
    while (i <= 100){ // 조건이 true 면 반복문 실행
        sum += i;
        i++; // i 의 값 1 증가
    }
    System.out.println(sum); // 5050 출력
}

 

짝수만 출력하는 for 문 만들어보기

for (int j = 1; j <=10; j++) {
            if (j % 2 == 0){
                System.out.println(j);
            } else {
                continue; // continue 를 만나면 반복문 이후 반복문 건너뛰기
            }
        }

'JAVA' 카테고리의 다른 글

231205 Java  (0) 2023.12.05
231204 Java  (2) 2023.12.04
231201 Java  (0) 2023.12.01
Java 설치하기  (1) 2023.11.29
231129 Java  (0) 2023.11.29