Languages/JAVA

JAVA 실습(1)

인정이애옹 2024. 4. 12. 20:08

Ex01

 

package exam01;

import org.w3c.dom.ls.LSOutput;

public class Ex01 {
    public static void main(String[] args) {
        int num1; // 변수 선언
        num1 = 10; // 초기화 : 최초로 값을 대입하는 것 -> 초기화

        int num2 = 10; // 선언과 동시에 초기화

        num1 = 15;

        System.out.println(num1); // 15
        System.out.println(num2); // 10

        int a = 100; // 변수명을 명확하게 정해야한다. 유의미한 단어 형태로 적기
        int numberOfStudent = 10; // 카멜 표기법 : 단어 사이마다 첫 글자룰 대문자로 적기 / 첫 단어는 소문자로!
        int 학생수 = 20; // 한국어 대신 영어로 적기
    }
}

 

Ex02

 

package exam01;

public class Ex02 {
    public static void main(String[] args) {
        int num1 = 100000;
        // byte num2 = num1; 담을 값의 크기가 byte보다 커서 오류 발생

        double num3 = 1000000000.1234;
        // float num4 = num3; 담을 값의 크기가 float 보다 커서 오류 발생
    }
}

Ex03

package exam01;

public class Ex03 {
    public static void main(String[] args) {
        char ch1 = 'A'; // 컴퓨터가 A를 인식 못한다. 컴퓨터가 A를 이진수로 바꿔서 숫자로 인식한다. 아스키코드!
        System.out.println(ch1); // A
        System.out.println(ch1 + 1); //66
        System.out.println(ch1 > 'B'); //false

        char ch2 = '가';
        System.out.println(ch2); // 가
        System.out.println(ch2+ 1); // 44033
        System.out.println('나' > '가'); //true
    }
}

Ex04

package exam01;

public class Ex04 {
    public static void main(String[] args) {
        char ch1 = 65;

        System.out.println(ch1);

        //char ch2 = -65;
    }
}

Ex05

package exam01;

public class Ex05 {
    public static void main(String[] args) {
        int num1 = 10;

        num1 = 20;

        final int num2 = 30; // 상수 / final이 있으면 변경 불가 변수 옆에 있으면 변수 변경 불가
        //num2 = 40;  Cannot assign a value to final variable 'num2'

        final int   num3;
        num3 = 30; // 최초 한번만 상수는 대입 가능
        //num3 = 40;

        final int Num4;










        //System.out.println(Num4);
    }
}

Ex06

package exam01;

public class Ex06 {
    public static void main(String[] args) {
        int num1 = 10; // 10 - 재료가 되는 수 : 리터럴 상수
        int num2 = 10;
        char ch1 = 'A'; // 'A' - 재료가 되는 수 : 리터럴 상수
    }
}

Ex07

package exam01;

public class Ex07 {
    public static void main(String[] args) {
        //int num1 = 10000000000000; int의 크기보다 넘어서는 숫자라서 오류난다.
        //long num1 = 10000000000000; long의 크기가 10000000000000가 들어가는 크기지만 오류난다.
        // int(4byte) -> 처음에 int를 던졌기 때문에 오류가 난다.
        /*
        자바는 일하기 싫어한다. 개발자가 많이 쓰는 숫자인 int를 많이 쓴다. int -> 가장 효율적인 자료형이다.
        자바는 효율성을 추구하기 때문에 숫자 들어오면 int부터 쓴다 안 맞으면 그때서야 바꿔준다.
        그래서 처음부터 long 범위로 인식하고 int 던지지 않게 하는 것을 l이나 L을 붙여주면 된다.!!
         */
        long num1 = 10000000000000L; // L or l : 처음부터 long으로 인식하게 해준다.

        byte num2 = 100; // 자바에서 정수 보이면 일단 int를 던지고 안 맞으면 byte로 바꿔준다.

        long num3 = 10_000_000_000_000L; // long 값일 때는 숫자가 크기 때문에 _로 숫자 끊어도 된다.

        // 실수 일때는 가장 먼저 double(8byte)로 인식한다!
        // float num4 = 100.123; 오류난다 / 자바에서 실수 보이면 일단 double(8byte)로 들어간다.
        float num4 = 100.123F; // F or f : 처음부터 float(4byte)으로 인식한다.
    }
}

Ex08

package exam01;

public class Ex08 {
    public static void main(String[] args) {
        byte num1 = 100; // int -> byte

        int num2 = num1; // byte -> int 작은 자료형에서 큰 자료형으로 갈 때는 공간이 충분해서 가능하다. 자료형이 바뀐다 : 형변환

        long num3 = num2; // int -> long 자료형이 자동으로 바뀐다. : 자동 형변환(묵시적 형변환)
    }
}

Ex09

package exam01;

public class Ex09 {
    public static void main(String[] args) {
        long num1 = 1000000000L;
        double num2 = num1; // 정수 -> 실수 : 자동 형변환(묵시적 형변환) - 8byte
        float num3 = num1;  // 실수는 모든 정수를 포함 가능하다. 실수 > 정수 : 실수가 정수보다 크다
        /*
        byte -> short -> int -> long -> float -> double : 자동 형변환
                 char ->
         */
        double num4 = 0.0;
        for (int i = 0; i < 1000; i++) {

            num4 += 0.1;
           }

        System.out.println(num4);  // 결과 : 99.9999999999986 -> 실수는 오차가 날 수 있다.
    }
}

Ex10

package exam01;

public class Ex10 {
    public static void main(String[] args) {
        int num1 = 10000000;
        //byte num2 = num1; 큰 컵에 있는 물을 작은 컵에 있는 물에 담을 수 있지만 다 못 담는다.
        // -> 다 못 담아서 데이터가 변질된다.(데이터가 유실된다.) 함부로 안 바꿔준다.
        // 자바가 물어본다. 바꾸겠다고 알려주면 자료가 부족하더라도 담아준다. 그러나 변질된 데이터(유실된 데이터)로 담아준다.
        //
        byte num2 =(byte)num1; // 명시적 형변환 : 그럼에도 불구하고 유실된 데이터가 되더라도 바꾸겠다고 자바에게 알려주는 것
        System.out.println(num2); // 결과 : -128 / 유실된 데이터로 저장되었다.

        int num3 = 100;
        byte num4 = (byte)num3;

        System.out.println(num4); // 결과 : 100
    }
}

Ex11

package exam01;

public class Ex11 {
    public static void main(String[] args) {
        double num1 = 10.123;
        //long num2 = num1; // JAVA : 소수점이 날아가도 괜찮겠냐 ? ME : 응, 해줘(명시적 형변환)
        long num2 = (long)num1; // 결과 : 10
        System.out.println(num2);
    }
}

Ex12

package exam01;

public class Ex12 {
    public static void main(String[] args) {
        int num1 = 13;
        double num2 = 3.6;

        // 곱셈 결과를 정수로 표현 -> 4/17일 시험!!

        // int num3 = num1 * (int)num2; //3.6 -> 3   13 *3=39 나온다.
        int num3 = (int)(num1 * num2);
        System.out.println(num3);

    }
}

Ex13

package exam01;

public class Ex13 {
    public static void main(String[] args) {
        int num1 = 10;
        double num2 = 2.5;

        //num1 * num2; 연산은 무조건 같은 자료형끼리만 가능 / 연산 할 때 int num1 -> double로 바뀐다.
        // num1이 double로 바껴서 double, double끼리 연산이 되는 것이다.
        double num3 = num1 * num2; //
    }
}

 

주석은 자바스크립트와 동일하다!

psvm + enter키 ->
public static void main(String[] args) {
        
    }

sout + enter키 ->
System.out.println();

자료형
기본 자료형
정수형
byte (1byte)
short (2byte)
int (4byte) 
long (8byte)
실수형
float (4byte)
double (8byte) 
논리형
boolean (1byte) -> true, false
: 판별식 - 조건문, 반복문에서 자주 사용
문자형
char (2byte ~ 3byte)
'문자'

char ch = 'A';  -> 작은 따옴표로 감싸기
아스키코드 : 문자표
유니코드(2~3 byte): 문자표
양의 정수


참조 자료형 : 자원의 주소만 가지고 있는 변수를 선언하는 자료형



실수 : 소수점이 있는 수 
정수.소수점
0~1미만

실수 범위 > 정수 범위 // 실수 범위가 정수 범위보다 크다. 숫자 범위가 훨씬 넓다.

작은 자료형 -> 큰 자료형 
정수 -> 실수 // 실수가 정수보다 크기 때문에 숫자 표현 범위가 높다. 더 정밀한 숫자이다. 
실수는 항상 정수를 포함 할 수 있다.

byte -> short -> int -> long -> float -> double
char->

연산 중에서도 자동 형변환이 발생한다.
작은 자료형 -> 큰 자료형 : 작은 자료형이 큰 자료형으로 바뀐다.
정수 -> 실수 : 정수가 실수로 바뀐다.