Java - Data Type

2019년 03월 11일

Int, Byte, Short, Long

package com.Hazel;

public class Main {

    public static void main(String[] args) {

        // int has a width of 32
       int myMinValue = -2_147_483_648;
        int myMaxValue = 2_147_483_647;

        // byte has a width of 8
        byte myMinByteValue = -128;
        byte myMaxByteValue = 127;

        // short has a width of 16
        short myMinShortValue = -32_768;
        short myMaxShortValue = 32_767;

        // long has a width of 64
        long myMinLongValue = -9_223_372_036_854_775_808L; // 뒤에 L을 붙인다
        long myMaxLongValue = 9_223_372_036_854_775_807L;
    }
}
byte newByte = (myMinByteValue/2); // error

expression을 하면 default로 int를 가정하므로 에러가 난다. 내가 앞에 byte라고 선언했으므로, integer를 byte에 넣으려 한다고 생각하여 incompatible type이라는 에러가 난다. byte newByte = (byte) (myMinByteValue/2);로 casting해야 한다.

Float and Double

package com.Hazel;

public class Main {

    public static void main(String[] args) {
	int myIntValue = 5;
	float myFloatValue = 5.4f;
	double myDoubleValue = 5d;
    }
}

소수점이 들어가면 기본적으로 double을 전제하므로 float 값을 소수점 있는 값으로 할당하려면 casting해야 한다. 그러나 위처럼 그냥 소수점 뒤에 f를 붙이는 게 더 명확하다.

package com.Hazel;

import javax.swing.plaf.synth.SynthColorChooserUI;

public class Main {

    public static void main(String[] args) {
        // width of int = 32 (4 bytes).
	    int myIntValue = 5 / 3;
        // width of float = 32 (4 bytes).
	    float myFloatValue = 5f / 3f;
        // width of double = 64 (8 bytes).
	    double myDoubleValue = 5d / 3d;

        System.out.println("myIntValue = " + myIntValue);
        System.out.println("myFloatValue = " + myFloatValue);
        System.out.println("myDoubleValue = " + myDoubleValue);

    }
}
myIntValue = 1
myFloatValue = 1.6666666
myDoubleValue = 1.6666666666666667

double의 크기가 더 크지만 일반적으로 double을 사용한다. 더 정확하고 java 내에서 자주 쓰이며 최근 컴퓨터에서는 더 빠르기 때문이다.

Char and Boolean

package com.Hazel;

public class Main {

    public static void main(String[] args) {
	    char myChar = 'a'; // Only one character
        char myChar2 = '\u00A9';
        boolean myBoolean = false;

        System.out.println(myChar2);
    }
}
myChar2 = © // unicode table 참조

String

package com.Hazel;

public class Main {

    public static void main(String[] args) {
	String myStirng = "This is a String"; // double quote 써야 함(char은 single)

    String numberString = "250.55";
    numberString = numberString + "49.95";
    System.out.println("The result is " + numberString);

    String lastString = "10";
    int myInt = 5;
    lastString = lastString + myInt;
    System.out.println(lastString);
    }
}
The result is 250.5549.95 // 계산 안됨(str + str)
lastStirng = 105 // 계산 안됨(str + num)