Programming/JAVA

2.자바의 변수와 기본형/참조형

초록깨비 2021. 10. 7. 17:20
728x90

변수

       변수란? 하나의 값을 저장 할 수 있는 메모리 공간

  

 변수의 선언

        변수 타입   변수이름 ;    세미콜론 잊지 말기!!

        int  age ;   정수  

        age = 25 ;    변수 age에 25를 저장

  

 변수의 초기화

     int x = 0, y = 5 ;

 

 변수의 종류

    1) 클래스변수

    2) 인스턴스변수

    3) 지역변수 : 지역변수는 읽기전에 꼭 초기화 해야함(자동 초기화 되지 않음, 안하면 컴파일시 에러 발생

        int year = 0;

       year = age + 2000 ;

    

  값의 타입

     1) 정수 - int, byte(-128~127), short, long

     2) 실수 – float, double

     3) 문자 – char, string

     4) 논리 – boolean(true/false)

 

 변수, 상수, 리터럴

        1) 상수 선언

            final int MAX = 100 ;   MAX는 상수

            MAX = 200 ;   에러 발생, 상수는 한번 만 값을 저장 가능한 변수임

        2) 리터럴(literal) : 그 자체로 값을 의미 하는 것 = 기존의 상수

 

        3) 리터럴의 접두사와 접미사(접미사는 대소문자 구분x) 

종류 리터럴 접미사
논리형 TRUE/FALSE 없음
정수형 124, 0b0101, 077, oxFF, 100L(LONG 타입) L
실수형 3.14, 3.0e8, 1.4f f(float), d(double) d는 생략
문자형 ‘A’, ‘1’,’ \n’(개행문자) 없음
문자열  “ABC” ,”123”, ’A”, ”true” 없음

 

문자형은 작은따옴표로

문자열은 큰따옴표로

   “A”는 큰따옴표로 표시했으므로 문자열임, 문자형 X

 

int i = 100;   10진수

int oct = 0100 ; 8진수

int hex = 0x100;  16진수      int는 20억까지

long I = 10_000_000_000L ;    100억  L을 안 붙이면 에러남 _ 는 알아보기 쉽게 하기 위해

long I = 100 ;

float f = 3.14f ;  f는 생략 불가능

double d = 3.14d;   d는 생략 가능

1e3 : e는 10의 3제곱  = 1000.0d 과 동일

 

 

변수와 리터럴의 타입 불일치 

   1) 변수 > 리터럴일 경우 OK

       int i = ‘A’ ;     // int > char

       long l = 123;  // double > int

       double d = 3.14f    // double > float

   

   2) 변수 < 리터럴인 경우 에러

       int i = 30_0000_0000 ; // 30억  int의 범위는 +-20억 벗어남

       long l = 3.14f    // long < float

       float f = 3.14 ;   // float < double

       byte, short 변수에 int 리터럴 저장 가능

           단, 변수의 타입의 범위 이내여야 함

             byte b = 100 ;   // byte의범의(-128 ~ 127)에 속함

             byte b = 128 ;   // 에러, byte의 범위를 벗어남

 

문자와 문자열

   char ch = ‘A’ ;     싱글따옴표

   string s = “ABC” ;  큰따옴표

   STRING : 자바에서 제공하는 CLASS

   string s2 = new String(“AB”); 이렇게 써야 하나 자주 쓰므로 생략

   char ch = ‘’ ;   에러

   string s = “” ;    empty string

   string s1 = “A” + “B” ;   // “AB” 와 동일

   “” + 7  : 문자열과 숫자의 결합시 숫자가 문자열로 변환  => “7” 이 됨

 

문자열 결합의 왼쪽에서 오른쪽으로 진행

    “” + 7 + 7 => “7” + 7 => “7” + “7” => “77”

    7 + 7 + “” => 14 + “” => “14”

 

    문자열 + any type => 문자열

    any type + 문자열 => 문자열

 

기본형과 참조형

     1) 기본형 : boolean, char, byte, short, int, long, float, double

                   실제 값을 저장

     2) 참조형 : 기본형을 제외한 나머지(string, system 등)

                    메모리 주소를 저장(4 or 8 byte)   

                   

                    4byte : 약 40억  6byte : 40억 * 40억 = 1600경 byte 저장

                    Date today ;   // 참조형 변수

                    today = new Date() ;   // today에 객체의 주소를 저장

                    참조 변수는 객체의 주소를 저장

 

기본형의 종류와 크기

   1) 논리형 – boolean(1 byte) : true/false 조건식과 논리적 계산에 사용

   2) 문자형 – char(s byte) : 변수당 하나의 문자만을 저장

   3) 정수형 – int(4 byte 20억), byte, short, long(8 byte 800경)(아주큰 정수)

            byte(1 byte) : 이진 데이터 다루는 데 사용

            short(2 byte) : c언어와의 호환을 위해 추가(잘 안쓰임)

   4) 실수형 – folat(4 byte), double(8 byte)

 

형식화된 출력 – printf()

    println()의 단점 – 출력 형식 지정 불가, 10진수로만 출력된다

    system.out.println(10.9/3) ;     // 3.3333333335

    printf()로 출력 형식 지정 가능

       system.out.printf(“%.2f”, 10.0/3) ;   // 소숫점 둘째자리 = 3.33

       system.out.printf(“%d”, 0x1A) ;     // d : 10진수  = 26

       system.out.printf(“%X”, 0x1A) ;      // X : 16진수 = 1A

   

    %b : boolean 형식으로 출력

    %d : 10진 정수의 형식으로 출력

    %o : 8진 정수의 형식으로 출력

    %x, %X : 16진수 정수의 형식으로 출력

    %f : 부동 소숫점의 형식으로 출력

    %e, %E : 지수 표현식의 형식으로 출력

    %c : 문자로 출력

    %s : 문자열로 출력

 

    java api -> formater로 다른 지시자 찾아보기

    system.out.printf(“age : %d year : %d\n”, 14, 2021);   자동 줄바꿈x 으로 개행문자 넣어준다

    toBinaryString(15) : 정수를 이진 문자열로 변경, 자주 쓰지 않음 -> 1111  2진수

 

   float f = 123.4567890f ;

   system.out.printf(“%f”, f);   // 123.456787     소수점 아래 6자리(87은 의미없는 숫자, 정밀도:7 )

   system.out.printf(“%e, f);   // 1.234568e+0.2   지수형식  +02는 10의 제곱

   system.out.printf(“%g, 123.456789) ;    // 123.45 간략한 형식(7자리)

   system.out.printf(“%g, 0.0000001) ;     // 1.00000e-8  간략한 형식

 

728x90