본문 바로가기
프로그래밍 언어/Java

변수와 자료형

by 진진리 2023. 9. 13.
728x90
  • 변수: 변하는 수.

단 하나의 값을 저장할 수 있는 메모리 공간(1Byte로 구성)

메모리 공간은 각각의 메모리 주소를 가짐

 

  • 변수의 선언과 초기화
class Variable1_2 {
    public static void main(String[] args) {
        boolean flag = false;
        char grade = 'A';
        byte val = 127;
        short sval = 128;
        int num = 32768;
        long price = 2_147_483_648L;
        float tax = 3.14f;
        double score = 3.14159265358979;
    }
}

 

  • 변수 생성 규칙
    • 대소문자가 구분되며 길이에 제한이 없음
    • 예약어(ex->true) 사용 불가
    • 숫자로 시작 불가
    • 특수문자 _ 와 $ 만 허용

 

  • 변수의 종류: 클래스, 인스턴스, 지역 변수
class Variable1_4 {
    static int classVal = 100; // 클래스 변수
    int instanceVal = 200; // 인스턴스 변수

    public static void main(String[] args) {
        int num; // 지역 변수
//        System.out.println("int = " + num); // Error 발생
        num = 300;
        System.out.println("int = " + num); // 100

        // 인스턴스 변수
//        System.out.println("instanceVal = " + instanceVal); // Error 발생
        Variable1_4 instance = new Variable1_4 (); // 인스턴스 변수 사용을 위해 객체 생성
        System.out.println("instanceVal = " + instance.instanceVal); // 100

        // 클래스 변수
        System.out.println("classVal = " + classVal);
        // 같은 클래스 내부는 바로 접근 가능
        System.out.println("Main.classVal = " + Variable1_4.classVal);
        // 클래스 변수 : 클래스명.클래스변수명 으로 접근 or
    }
}

 


  • 기본 자료형: 자바 라이브러리에서 기본으로 제공하며, 사용할 메모리의 양이 정해져 있음

  • n비트일 때의 표현 범위
    • 부호 없는 정수: 0 ~ 2^n-1
    • 부호 있는 정수: -2^(n-1) ~ 2^(n-1)-1
  • 실수 자료형일 때는? 부동 소수점 방식 

가수 부분과 지수 부분을 나누어서 나타냄: +-가수(M) x 밑수(2)^지수(E)

정규화: 밑수가 2인 상황에서 가수는 2 이하가 되어야 함. 모든 실수는 정규화를 할 때 1.m x 2^n과 같이 표현 가능

정밀도: 소수점 몇자리까지 오차없이 표현할 수 있는지

ex. float의 가수가 23인데 정규화를 통해 24자리까지 표현 가능 -> 2^24이므로 정밀도는 7자리

 

 

  • 정수형 오버플로우: 해당 변수타입의 범위를 넘어가면 값을 순환

  • 타입간의 변환 방법
    • 숫자를 문자로: 숫자 + '0' -> 문자
    • 문자를 숫자로: 문자 - '0' -> 숫자
    • 숫자를 문자열로: 숫자 + "" -> 문자열
      • "" + 7 + 7 = "77"
      • 7 + 7 + "" = "14"
    • 문자를 문자열로: 문자 + "" -> 문자열
    • 문자열을 숫자로:
      • Integer.parseInt("문자열")
      • Double.parseDouble("문자열")
    • 문자열을 문자로: "문자열".charAt(0)

  • 상수와 리터럴
    • 상수: 한 번만 값이 저장 가능한 변수
      • 선언 방법: final 자료형 변수명;
    • 리터럴: 그 자체로 값을 의미하는 것. 기존의 상수와 같은 의미
class Variable2_2 {
    public static void main(String[] args) {
        int score = 100; // 변수
        final int finalScore = 1000; //상수
    }
}

- 리터럴의 접두사와 접미사

long은 접미사 L, float은 f, double은 d(생략 가능)

접두사, 접미사는 대소문자를 구별하지 않음

진수를 나타내는 접두사: 0b(2), 0(8), 0x(16)

변수 < 리터럴: 리터럴이 변수의 타입 범위 이내라면 OK


  • 참조 자료형
    • 기본형을 제외한 나머지 타입 ex) String, System
    • 참조형 변수는 null 또는 메모리 주소를 저장
    • 타입에 관계없이 변수의 크기가 항상 4byte
class Variable3_5 {
    public static void main(String[] args) {
        // Date import 필요!
        Date date; // 참조형 변수 date 를 선언
        date = new Date(); // date 에 객체의 주소를 저장 , new 는 객체를 생성하는 명령어

        System.out.println(date); // Wed Jan 11 20:54:45 KST 2023
    }
}

  • 형 변환
    • 묵시적 형 변환: 바이트 크기가 작은 자료형에서 큰 자료형으로 대입하는 경우
    • 명시적 형 변환: 바이트 크기가 큰 자료형에서 작은 자료형으로 대입하는 경우
      • byte bNum = (byte)iNum  // 괄호를 써서 바꿀 형을 명시해야 함
      • 자료 손실이 발생할 수 있음

'프로그래밍 언어 > Java' 카테고리의 다른 글

객체지향  (0) 2023.09.13
배열  (0) 2023.09.13
조건문과 반복문  (0) 2023.09.13
연산자  (0) 2023.09.13
자바 시작하기  (0) 2023.09.13