ABOUT ME

-

Today
-
Yesterday
-
Total
-

Post Calendar

«   2024/09   »
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
  • Java Study [2022-07-27] - Java 기초
    백엔드 2022. 7. 29. 23:25

    📌 Java Study

    🔸 2022-07-27 수요일

    [Java 기초]

    1. 특징

    • 객체 지향 프로그램으로 유지보수와 확장성 용이
    • 안정적
    • 풍부한 라이브러리 제공, 오픈소스 연동

     

    2. 개발환경 구축

    • 자바(Oracle)
    • 이클립스(SE, JRE)

     

    3. 이클립스 사용

    • 프로젝트 생성 후 소스에 패키지 생성
    • 패키지 = 소스의 묶음, 대체로 패키지 명은 소문자
    • 클래스 명은 파스칼 케이스, 멤버 변수와 메서드 명은 카멜 케이스
    • main 함수는 로컬에서 실행해서 결과를 필요로 할 뿐, 서버 프로그램일 시 없을 수도 있음

     

    • 출력 문법
    System.out.println("Hello, Java");

     

    • bin 폴더 안에 실행 파일 생성됨
      (Huni_JAVA/First/bin/hello)
    • Build Auto 설정 시 저장하면 클래스 파일에 반영됨
    • 저장 후 Run(구동)하면 하단 Console에 출력 결과 확인

     

    4. 자료 표현(변수)

    • 비트 : 컴퓨터 자료 표현 최소 단위 0 또는 1
    • 2진수, 8진수, 10진수, 16진수 표현 변환 및 표현 확인
    • 음수 표현 : 2의 보수로 표현
    • 2의 보수란, A값과 B값을 더했을 때 이 값이 2진수로 0
    예시) 1의 보수 => 0이 주어지면 1, 1이 주어지면 0
    00001010(2) = 10, 1의 보수는 11110101(2)
    1의 보수에 1을 더하면 11110110(2) 즉, 2의 보수
    00001010(2)와 11110110(을) 더하면 10 + (-10) = 0

     

    • 정리하면, 2의 보수를 만드는 방법은 주어진 값에 1의 보수를 만든 후 그 값에 1을 더하는 것
    • 변수 선언 시 변수에 맞는 자료형 사용
    • 코드 작성 시 int age 에서 변수명 age이클립스 노란색으로 표시되는 이유 = 자바 파일에서 해당 변수가 사용되지 않았음을 의미

     

    • age가 30이라는 의미가 아니라, 30이란 정수 값이 age 변수에 대입
        int age;
    
        age = 30;

     

    • 선언 동시에 값 대입도 가능
        int age = 30;
        int count;
    
        count = 1;

     

    • 변수 선언 => 해당 자료형의 크기 만큼 메모리를 사용하겠다는 것
    • 변수 명은 영문자나 숫자 사용, 단 숫자로 시작 불가
      (특수문자 : _, $만 사용 가능, 예약어 사용 불가, 쓰임에 맞는 이름으로 명명하는 것이 가독성에 좋음)

     

    5. 자료형(정수)

    • 기본형 : 자바 언어에서 기본으로 제공하는 자료형
    • 메모리가 정해져 있음(정수형, 문자형, 실수형, 논리형)

     

    • 참조형 : 클래스 자료형
    • JDK에서 제공되는 클래스와 프로그래머가 정의하는 클래스
    • 클래스에 따라 사용하는 크기가 다름(String, Student)

     

    <기본 자료형>

    • 정수형
    • byte(1byte) - short(2byte) - int(4byte) - long(8byte)
    • 문자형 : char(2byte)
    • 실수형 : float(4byte) - double(8byte)
    • 논리형 : boolean(1byte)

     

    • 32bit 경우, -2^31 ~ 2^31 -1 까지 표현 가능
    • byte 크기 = 1, 수의 범위 : -2^7 ~ 2^7 -1
    • short 크기 = 2, 수의 범위 : -2^15 ~ 2^15 -1
    • int 크기 = 4, 수의 범위 : -2^31 ~ 2^31 -1
    • long 크기 = 8, 수의 범위 : -2^63 ~ 2^63 -1

     

        byte bs = 128;
    
        // 입력 시 오류(int 형 변환 요구)
        long lVal = 12345678900;
    
        // 입력 시 range를 벗어나 오류 발생
        // 자바는 기본적으로 숫자는 4byte에 집어 넣는데,
        // 값이 너무 크니 8byte 처리하기 위해 값 뒤에 L대입
    
        long lVal = 12345678900L;

     

    6. 자료형(문자)

    • 내부적으로는 비트의 조합으로 표현
    • 인코딩 : 각 문자에 따른 특정한 코드(숫자) 값 부여
    • 디코딩 : 코드(숫자) 값을 원래의 문자로 변환
    • 아스키(ASCII) : 1 byte로 영문자, 숫자, 특수문자 등을 표현
    • 유니코드(Unicode) : 한글과 같은 복잡한 언어를 표현하기 위한 표준 인코딩 UTF-8, UTF-16 이 대표적
    • 문자를 변수에 저장 => 문자에 해당하는 코드 값이 저장
        char ch = 'A';
    
        System.out.println(ch);  // A
        System.out.println((int)ch); // 65
        int iCh = 66;
    
        System.out.println(iCh);  // 66
        System.out.println((char)iCh);  // B
        char hangul = '\uAC00';
        System.out.println(hangul);  // 가

     

    • 음수 값은 들어가지 못함(불가)

     

    7. 자료형(실수, 논리)

    • 실수는 double 자료형이 기본
    • float 사용할 때는 f, F 식별자 사용
    • 부동 소수점 방식 : 실수를 지수부와 가수부로 표현
      (지수와 가수로 표현되는 부동 소수점은 0을 표현하지 못함, 따라서 약간의 오차 발생)
    • 논리 자료형 : boolean으로 선언
    • 논리값 true(참), false(거짓) 표현
        double dNum = 3.14;
        float fNum = 3.14F;  // 'F' 식별자 사용
    
        System.out.println(dNum);  // 3.14
        System.out.println(fNum);  // 3.14

     

    • 부동 소수점의 오차 오류 예시
        double dNum = 1;
            for(int i = 0; i < 10000; i++) {
                dNum = dNum + 0.1;
            }
    
        System.out.println(dNum);
    
        // 1001.000000000159
        // 1001 이 아니라 약간의 오차가 발생

     

    • boolean 표현
        boolean isMarried = false;
    
        System.out.println(isMarried); // false

     

    • 자료형 없이 변수 사용하기(지역 변수에 대입되는 값을 보고 컴파일러가 추론)
        var i = 10;
    
        System.out.println(i); // 10

     

    8. 자료형(상수와 리터럴, 형 변환)

    • 상수 : 변하지 않는 수
    • 리터럴 : 프로그램에서 사용하는 모든 숫자, 값, 논리 값
      (10, 3.14, 'A', true)
    • 모든 리터럴은 상수 풀(pool)에 저장되어 있음
    • 상수 풀에 저장될 때 정수는 int, 실수는 double로 저장됨

     

    • 형 변환 : 서로 다른 자료형의 값이 대입되는 경우 형 변환 발생
    • 묵시적 형 변환 : 작은 수에서 큰 수로 덜 정밀한 수에서 더 정밀한 수로 대입 되는 경우
    • 명시적 형 변환 : 변환되는 자료 형을 명시, 자료의 손실이 발생할 수 있음
        double dNum;
        dNum = fNum + iNum;
    
        // 두 번의 형 변환 => iNum정수가 fNum실수로 형 변환(1)
        // fNum플롯이 double로 형 변환(2)

     

    • 명시적 형 변환 예시
    • 단점 : 데이터 유실 발생 가능
        int i = 1000;
        byte bNum = (byte)i;
    
        System.out.println(bNum);  // -24

     

        double dNum1 = 1.2;
        float fNum = 0.9F;
    
        int iNum1 = (int)dNum1 + (int)fNum;
        int iNum2 = (int)(dNum1 + fNum);
    
        System.out.println(iNum1);  // 1
        System.out.println(iNum2);  // 2
    • (int)dNum1이 형 변환을 먼저 하는데 실수가 정수로 형 변환이 되면, 1.2 소수점 이하가 TRUNCATE
    • 따라서, (int)dNum1 이 1, (int)fNum은 0이 됨
    • (int)(dNum1 + fNum) 에서는 먼저 1.2와 0.9를 더해, 소수점이 빠진 2가 출력
    • 2진수, 8진수, 16진수에서 10 표현
        int num = 10;
        int bNum = 0B1010;
        int oNum = 012;
        int xNum = 0XA;
    
        System.out.println(num);   // 10
        System.out.println(bNum);  // 10
        System.out.println(oNum);  // 10
        System.out.println(xNum);  // 10

     

    🔖 Eclipse 실습

    day1


    댓글

Designed by Tistory.