HRD-net, 그린아트컴퓨터학원 자바초보(3일차, 데이터타입, 캐스팅 형변환)

    데이터 타입 : 정수형

    정수, byte :

    메모리 사용 크기 1 byte, 8bit

     

    8bit (이진수 8자리)가 1byte라는 것 잊지 마세요. (기초가 중요합니다.)

     

    저장되는 값의 범위 [-2 7승 ~ (2 7승 -1] [-128~127]까지의 범위입니다.

    -> 이는 8bit의 이진수를 십진수로 바꾸면, 확인 가능합니다.

     

    [-128~127] 까지라는 것만 기억!

     

    십진수 to 이진수 혹은 이진수 to 십진수는 아래의 URL에서 확인 가능

    ko.calcuworld.com/%EC%88%98%ED%95%99/2%EC%A7%84%EB%B2%95-%EA%B3%84%EC%82%B0%EA%B8%B0/

     

    수기로 검색하지 말고.

    계산기 돌려서 쓰자.

     

    바이트 가지고 할 수 있는 거 : -128 ~ 127까지의 범위.
    채점,
    사람의 나이(?)

     

     

    데이터 타입 : char

    byte는 1byte, char는 2byte 

     

    char는 문자 한 개입니다. 

    ava에서 문자는 모두 유니코드(Unicode)를 사용

    세계 각국의 문자들을 코드값으로 매핑한 국제 표준 규약입니다.

     

    영문 A, 한글 가. 모두 한 개의 코드값이 부여됩니다.

     

    www.unicode.org

    를 참조하시기 바랍니다.

     

    유니코드 변환 사이트가 있습니다.

    아래를 참고하시기 바랍니다.

     

    raisonde.tistory.com/entry/%ED%95%9C%EA%B8%80-%E2%86%94-%EC%9C%A0%EB%8B%88%EC%BD%94%EB%93%9C-%EA%B0%84%ED%8E%B8-%EB%B3%80%ED%99%98%EA%B8%B0

     

    -------------------------------------------------

    package com.hyjeong.datatype;

    public class CharTest {
    public static void main(String [] args) {
    char ch1 = 'A'; // 문자를 직접 저장
    char ch2 = 65; //10진수로 저장
    char ch3 = '\u0041'; //16진수로 저장

    char ch01 = 'ㄱ';
    char ch02 = 12593;
    char ch03 = '\u3131';

    System.out.println(ch1);
    System.out.println(ch2);
    System.out.println(ch3);

    System.out.println(ch01);
    System.out.println(ch02);
    System.out.println(ch03);

    int uniCode = ch01;
    System.out.println(uniCode);

    }

    }

    -------------------------------------------------

    데이터 타입 소스코드 실행 표시
    위의 코드를 실행시키면 나오는 화면

     

     

    A를 넣던, 65를 넣던, 16진수로 넣던 다 바꿔줌.

    알아서 컨버팅 해서 다 해준다.

    (자바가 편한 이유. 자바 하다가 c 하면 안 알려준다.

    자바는 개발자 위주로 굉장히 계량이 된 형태이다.)

     

    근데 저런 거 왜 쓰죠?

    ㄱ대신에 왜 12953 쓰는 이유는?

     

    인간(10진수) <> 교량(16진수) <> pc(2진수)

     

    우리가 'A'로 넣으면 PC에서는 16진수로 바꾸고

    이를 다시 2진수로 바꾼 다음에 확인을 하여

    인간이 알 수 있는 문자인 'A'를 보여줍니다.

     

    내부적으로 컴퓨터는 2진수를 사용하지만,

    이를 인간에게 2진수 그대로 보여주면, 인간이 알기가 어렵겠지요.

    그래서 인간이 문자, 10진수, 16진수로 넣어도 이를 인간에게

    인식 가능한 문자로 바꾸어서 보여주는 것이죠.

     

    그리고 중간에 16진수를 넣는 것은.

    16진수가 2진수와 10진수 사이의 교량 역할을 합니다.

     

    현재 우리가 사용하는 한글은 조합형이 아니라,

    아쉽게도 완성형입니다.

    한글은 유니코드(44032~55203)까지

    한글 11172자가 정의 저장되어 있습니다.

     

     

    나머지 정수형 데이터 타입은

    shot, int, long이 남았습니다.

    shot 타입은 2byte(16bit) 형인데,

    C언어와 호환을 위하여 사용되며, java에서는 잘 사용되지 않습니다.

     

    속도가 느려서 C언어에서도 잘 사용하지 않아요

     

    그래서 이 부분은 넘어가도록 하겠습니다.

     

     

    데이터 타입 : int

    int : 4byte(32bit)

    8bit 블록이 4개 있다고 생각하기

    (-2 31승 ~ (2 31승 -1)까지의 범위

     

    package com.hyjeong.datatype;

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

    int decimal = 100; // 10진수(decimal)

    int octal = 0144; // 8진수(octal) (어두에 0이 붙는다.)

    int hexa = 0x64; // 16진수(hexa) (어두에 0x가 붙는다.)

     

    System.out.println(decimal);

    System.out.println(octal);

    System.out.println(hexa); } }

     

    int 데이터 타입 실행화면
    int 데이터 타입 실행

     

    번외) 디셈버, 12월의 어미가 deci(10의~)인 이유

    디셈버가 12월인데  10 진수 앞의 데시 어미가  붙은 이유는.

    중간에 줄라이랑,어거스트가

    줄라이는, j가 묵음이라 율리우스를 칭하는 말.

    로마 황제 이름이 들어가서 두 개가 밀렸다. 

     

     

    데이터 타입 : long

    정수형의 마지막 타입

    이는 8byte로 (64bit) 

    -2 63승 ~(2 63승 -1) 

    은행권에서 아주 큰 수를 사용할 때 사용합니다.

    -------------------------------------

    package com.hyjeong.datatype;

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

    { long bigNumber = 100000000000; // 1천억..

    long bigNumber2 = 100000000000L;

    // 뒤에 'L', 'l' 대소문자 둘 중에 하나를 넣어 줍니다. 일반적으로 대문자를 넣어 사용합니다.

     

    System.out.println(bigNumber);

    System.out.println(bigNumber2);

    } }

    -------------------------------------

     

    이렇게 하면 

    { long bigNumber = 100000000000; // 1천억.. }

     

    이 줄에서 에러가 납니다. 

    뒤에 소문자 엘이나, 대문자 엘을 넣어주는데.

     

    밤 되면, 소문자 엘이 안 보입니다.

    옵셔널 하게 말고 에센셜 하게 그냥 대문자엘로 써줍니다. 

    가독성을 높이고 야근할 나를 위해서 대문자를 써줍니다.

     

     

    실수형 타입 :  float와 double

    float는 4byte

    double은 이의 2배인 8byte

     

    기본적으로 double형으로 인식하므로

    float형을 쓸 때엔

    어미에 대소문자 'f', 'F'를 넣어주셔야 편집기 error가 나지 않는다

     

    일반적으로 대문자를 많이 쓰므로 'F'를 넣어주기

     

    더 큰 실수 쓸 때 더블을 쓴다.

    ------------------------------------

    package com.hyjeong.datatype;

    public class FloatTest

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

    float circumference = 3.14F;

    double circumferenceTwo = 3.14;

     

    System.out.println(circumference);

    System.out.println(circumferenceTwo);

    } }

    ------------------------------------

     

    실수형 데이터타입 실습
    실수형 데이터 타입 실행화면

     

    데이터 타입, 논리 타입 : boolean

    boolean은 1byte 8bit입니다.

    논리 타입

    (참고로 C에서는 bool입니다. java에서는 이와 구별하려고 ean을 붙였습니다.)

     

    참과 거짓 true와 false를 가집니다.

    java와 기타 실무 개발에서

    아주 많이 사용되는 데이터 타입

     

    ----------------------------------------------------

    package com.hyjeong.datatype;

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

    boolean isStudent = true;

     

    if (isStudent) {

    System.out.println("학생입니다."); }

    else {

    System.out.println("학생이 아닙니다."); }

     

    } }

    ----------------------------------------------------

    boolen 실습
    boolean 데이터타입 예제화면

    불린으로 데이터 타입 이름 정할 땐 어미로 is를 쓰는 게

    관용적인 표현이다.

    국 룰이라고 말할 수 있다.

     

    그래서 is로 시작되면 불린 타입으로 보면 된다.

     

     

     

    데이터 타입 정리

    ---------------------------------------------------------------------------------

    byte : 1byte, 8bit  :  기본 최소 저장 단위

    char : 2byte, 16bit   유니코드, 한글 완성형 (문자)

    int : 4byte, 32bit   가장 많이 사용 (정수)

    long : 8byte, 64bit   정수 값 벗어나면, 어미에 대소문자 'L' (큰 정수)

    float : 4byte, 32bit   더블형과 구분 위하여 어미에 대소문자 'F' (실수)

    double : 8byte, 64bit   아주 큰 실수

    boolean: 1byte, 8bit   논리 연산자, (참, 거짓)

    ----------------------------------------------------------------------------------

     

    이렇게 세분화해서 나눠 놓으면 어렵다고 생각한다.

    이런 걸

    문법이 엄격하다고 표현한다.

    (반대로 자바스크립트는 문법이 느슨해서 에러가 많이 발생한다.)

    -----> 나중에 에러 잡을 때 유용하고 나중에 비용이 덜 들어간다. 에러가 덜 발생한다.

    퉁치면 나중에 에러 못 잡는다.

     

    두 번째 이유는 속도 문제.

    특별한 이유가 없는 이상, 큰 밥그릇을 쓸 필요가 없다.

     

     

    형변환 (캐스팅)

     

    ---------------------------------------------------------------------------------

    package com.hyjeong.datatype;

    public class CastingTest {

    public static void main(String args[]) {

     

    System.out.println("CastingTest");

     

    char inValue = 'ㄲ'; // casting char to int

    int outResult = inValue;

    System.out.println("ㄲ to int value is [" + outResult + "]");

     

    int inValue02 = 12594; // casting int to char

    char outResult02 = (char) inValue02;

    System.out.println("12594 to char value is [" + outResult02 + "]");

     

    } }

    ----------------------------------------------------------------------------------

     

    형변환 캐스팅 예제화면
    형변환 캐스팅 예제

     

    댓글

    Designed by JB FACTORY