리터럴의 유효범위

TIL·2022년 12월 9일
0

Java (최은빈)

목록 보기
2/27

package me.day02.datatype;

import java.util.Scanner;

public class DataTypeExample {
    public static void main(String[] args) {

        // 변수 선언할 때 주어진 타입은 변수를 사용하는 도중 변경 불가

        // 리터럴의 유효범위
//        float f = 3.141592123; // 에러, 3.14 double 8바이트 -> float 4바이트
        float f = 3.141592123f; // float : 소수점 여섯번째 자리까지 출력, 데이터의 유효범위 (3.141592)
        double d = 3.141592123; // double : 여덟번째 자리까지 출력 (3.141592123)
//        short s = 100000; // 에러 (공간 부족)

        System.out.println("f = " + f);
        System.out.println("d = " + d);

        // 자료형의 유효범위 체크 (Integer, Long, Short)
        System.out.println(Integer.MAX_VALUE); // 2^31-1
        System.out.println(Integer.MIN_VALUE); // -2^32

        // Wrapper 클래스 (short, int 아니고 Integer, Short 인 이유)
        // 원시타입(기초자료형)의 정보들이 래퍼 클래스에 들어있음 -> 나중에 다시


        // 쓰레기값 (오버플로우, 언더플로우 = 유효범위 밖 -> 자바에서는 관련하여 예외 발생시키지 않음)
        byte var1 = 125; // -128 ~ 127 -> 128 표현 안되고 -128로 표현됨 (범위 안에서 로테이션 돈다)
        int var2 = 125;
        for (int i = 0; i < 5; i ++) {
            var1++; // var1 = var1 + 1
            var2++; // var2 = var2 + 1
            System.out.println("var1: " + var1 + "\t" + "var2: " + var2);
        }


        // 참조 타입 (heap에 저장, 사이즈 큰 데이터, 실행시켜봐야 데이터의 길이 알수 있음)
        // String, Scanner - 대문자
        // 해당 변수 안에는 주소값이 살고 있다 -> 객체에서 다시

        // 객체 타입의 초기화
        String str1 = new String("abc"); // 객체를 새로운 공간에 할당
        String str2 ="abc"; // string pool 에서 똑같은 주소 공유 (메모리 절약)
        String string =""; // 문자열
        Scanner sc = new Scanner(System.in);
    }
}



원시타입 리터럴의 유효범위

  • 바이트 고정, Stack에 저장됨
  • bit : 컴퓨터가 0 아니면 1을 넣을 수 있는 논리적 공간
  • 알고리즘 풀때 long, bigIntger
  • 파이썬, 자바스크립트 같은 스크립트 언어들은 대부분 참조타입으로 되어있고 원시타입이 없음. int 에 데이터 길게 들어갈 수 있음
  • 쓰레기값
    • 스택 오버/언더 플로우
    • 범위 안에서 로테이션 돈다

  • int (4byte = 32bit)
    • -> -2^31, 0, 2^31-1 표현 가능 (2^32개)
    • -2^31 <= < 2^31 -> 2^31 - (-2^31) = 2^31 + 2^31 = 2^31(1+1) = 2^32 개
    • 사이개수를 알기에 더 쉬우므로 첫번째꺼는 포함되고, 끝에는 포함되지 않는 경우가 많음
  • float
    • 소수점 여섯번째 자리가지 출력 (3.141592f)
  • double
    • 소수점 여덟번째 자리까지 출력
  • char
    • 'a'는 1바이트, "가"는 2바이트
  • boolean



참조 타입

  • heap에 저장됨, 사이즈 큰 데이터 (실행시켜 봐야 데이터의 길이 알 수 있다)
  • 해당 변수 안에는 주소값이 살고 있다

0개의 댓글

관련 채용 정보