English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java 기본 가이드

Java 프로세스 제어

Java 배열

Java object-oriented(I)

Java object-oriented(II)

Java object-oriented(III)

Java 예외 처리

Java 목록(List)

Java Queue(큐)

Java Map集合

Java Set集合

Java 입력 출력(I/O)

Java Reader/Writer

Java 다른 주제

Java 기본 데이터 타입

변수는 값을 저장하기 위해 메모리를 요청합니다. 즉, 변수를 생성할 때 메모리에서 공간을 요청해야 합니다.

메모리 관리 시스템은 변수의 타입에 따라 변수에 저장 공간을 할당하며, 할당된 공간은 해당 타입의 데이터만 저장할 수 있습니다.

따라서 다른 타입의 변수를 정의함으로써 정수, 소수점 또는 문자를内存에 저장할 수 있습니다.

Java의 두 가지 주요 데이터 타입:

  • 내장 데이터 타입

  • 참조 데이터 타입

내장 데이터 타입

Java 언어는 여덟 가지 기본 타입을 제공합니다. 여섯 가지 숫자 타입(네 가지 정수형, 두 가지 실수형), 하나의 문자 타입, 또 하나의 보리 타입이 있습니다.

byte:

  • byte 데이터 타입은8비트, 부호 있는, 이진 보수로 표현된 정수;

  • 최소 값은 -128(-2^7);

  • 최대 값은 127(2^7-1);

  • 기본 값은 0입니다;

  • byte 타입은 대형 배열에서 공간을 절약하며, 주로 정수 대신 사용되며, byte 변수가 사용하는 공간은 int 타입의 네분之一的 공간만 차지합니다;

  • 예제:byte a = 100,byte b = -50。

short:

  •  short 데이터 타입은 16 비트, 양수로 이진 보수로 표현된 정수

  •  최소 값은 -32768(-2^15);

  •  최대 값은 32767(2^15 - 1);

  •  Short 데이터 타입도 byte와 같이 공간을 절약할 수 있습니다. short 변수는 int 타입 변수가 차지하는 공간의 반으로 저장됩니다;

  •  기본 값은 0입니다;

  • 예제: short s = 1000, short r = -20000。

int:

  • int 데이터 타입은32비트, 양수로 이진 보수로 표현된 정수;

  • 최소 값은 -2,147,483,648(-2^31);

  • 최대 값은 2,147,483,647(2^31 - 1);

  • 일반적으로 정수 변수는 기본적으로 int 타입입니다;

  • 기본 값은 0입니다;

  • 예제: int a = 100000, int b = -200000。

long:

  • long 데이터 타입은 64 비트, 양수로 이진 보수로 표현된 정수;

  • 최소 값은 -9,223,372,036,854,775,808(-2^63);

  • 최대 값은 9,223,372,036,854,775,807(2^63 -1);

  • 이 타입은 큰 정수를 처리하는 시스템에서 주로 사용됩니다;

  • 기본 값은 0L입니다;

  •  예제: long a = 100000L, Long b = -200000L。
    "L" theoretically does not have uppercase and lowercase, but if written as "l", it is easy to confuse with the number"1"confusing, difficult to distinguish. Therefore, it is better to use uppercase."

float:

  • float 데이터 타입은 단일 프리미움,32비트, IEEE 754표준의 floating point;

  • float은 대형 floating point 배열을 저장할 때 메모리 공간을 절약할 수 있습니다;

  •  기본 값은 0.0f입니다;

  •  浮动형은 정확한 값, 예를 들어 화폐를 나타내지 못합니다;

  •  예제: float f1 = 234.5f。

double:

  • double 데이터 타입은 더블 프리미움,64 비트, IEEE 754표준의 floating point;

  •  浮动형의 기본 타입은 double 타입입니다;

  •  double 타입은 정확한 값, 예를 들어 화폐를 나타내지 못합니다;

  •  기본 값은 0.0d입니다;

  •  예제: double d1 = 123.4.

boolean:

  •  boolean 데이터 타입은 한 비트의 정보를 나타냅니다;

  • true와 false 두 가지 값만 있습니다;

  •  이 타입은 true를 기록하는 단순한 레이블로 사용됩니다;/false 상태;

  •  기본 값은 false입니다;

  •  예제: boolean one = true。

char:

  •  char 타입은 단일 16 위드 유니코드 문자;

  •   최소 값은 \u0000(즉, 0)입니다;

  •  최대 값은 \uffff(즉,65,535);

  •  char 데이터 타입은 어떤 문자도 저장할 수 있습니다;

  •  예제: char letter = 'A';.

예제

数值형식의 기본형식의 값 범위는 강제로 기억할 필요가 없습니다. 왜냐하면 그들의 값은 모두 해당 패키지에 정의된 상수 형식으로 정의되어 있습니다. 아래의 예제를 보세요:

public class PrimitiveTypeTest {  
    public static void main(String[] args) {  
        // byte  
        System.out.println("기본형식: byte 이진 비트 수: ") + Byte.SIZE)  
        System.out.println("포장 클래스:java.lang.Byte")  
        System.out.println("최소값:Byte.MIN_VALUE=") + Byte.MIN_VALUE)  
        System.out.println("최대값:Byte.MAX_VALUE=") + Byte.MAX_VALUE)  
        System.out.println();  
  
        // short  
        System.out.println("기본 타입:short 비트 길이:") + Short.SIZE)  
        System.out.println("포장 클래스:java.lang.Short")  
        System.out.println("최소값:Short.MIN_VALUE=") + Short.MIN_VALUE)  
        System.out.println("최대값:Short.MAX_VALUE=") + Short.MAX_VALUE)  
        System.out.println();  
  
        // int  
        System.out.println("기본 타입:int 비트 길이:") + Integer.SIZE)  
        System.out.println("포장 클래스:java.lang.Integer")  
        System.out.println("최소값:Integer.MIN_VALUE=") + Integer.MIN_VALUE)  
        System.out.println("최대값:Integer.MAX_VALUE=") + Integer.MAX_VALUE)  
        System.out.println();  
  
        // long  
        System.out.println("기본 타입:long 비트 길이:") + Long.SIZE)  
        System.out.println("포장 클래스:java.lang.Long")  
        System.out.println("최소값:Long.MIN_VALUE=") + Long.MIN_VALUE)  
        System.out.println("최대값:Long.MAX_VALUE=") + Long.MAX_VALUE)  
        System.out.println();  
  
        // float  
        System.out.println("기본 타입:float 비트 길이:") + Float.SIZE)  
        System.out.println("포장 클래스:java.lang.Float")  
        System.out.println("최소값:Float.MIN_VALUE=") + Float.MIN_VALUE);  
        System.out.println("최대 값: Float.MAX_VALUE="); + Float.MAX_VALUE);  
        System.out.println();  
  
        // double  
        System.out.println("기본 타입: double 투명 비트 수:"); + Double.SIZE);  
        System.out.println("패키지: java.lang.Double");  
        System.out.println("최소 값: Double.MIN_VALUE="); + Double.MIN_VALUE);  
        System.out.println("최대 값: Double.MAX_VALUE="); + Double.MAX_VALUE);  
        System.out.println();  
  
        // char  
        System.out.println("기본 타입: char 투명 비트 수:"); + Character.SIZE);  
        System.out.println("패키지: java.lang.Character");  
        // Character.MIN_VALUE를 문자 대신 숫자로 컨트롤 타블에 출력합니다  
        System.out.println("최소 값: Character.MIN_VALUE=");  
                + (int) Character.MIN_VALUE);  
        // Character.MAX_VALUE를 컨트롤 타블에 문자 대신 숫자로 출력합니다  
        System.out.println("최대 값: Character.MAX_VALUE=");  
                + (int) Character.MAX_VALUE);  
    }  
}

위 코드를 컴파일하여 출력 결과는 다음과 같습니다:

기본 타입: byte 투명 비트 수:8
패키지: java.lang.Byte
최소 값: Byte.MIN_VALUE=-128
최대 값: Byte.MAX_VALUE=127
기본 타입: short 투명 비트 수:16
패키지: java.lang.Short
최소 값: Short.MIN_VALUE=-32768
최대 값: Short.MAX_VALUE=32767
기본 타입: int 투명 비트 수:32
패키지: java.lang.Integer
최소 값: Integer.MIN_VALUE=-2147483648
최대 값: Integer.MAX_VALUE=2147483647
기본 타입: long 투명 비트 수:64
패키지: java.lang.Long
최소값: Long.MIN_VALUE=-9223372036854775808
최대값: Long.MAX_VALUE=9223372036854775807
기본 타입: float 비트 수:32
패키지 클래스: java.lang.Float
최소값: Float.MIN_VALUE=1.4E-45
최대값: Float.MAX_VALUE=3.4028235E38
기본 타입: double 비트 수:64
패키지 클래스: java.lang.Double
최소값: Double.MIN_VALUE=4.9E-324
최대값: Double.MAX_VALUE=1.7976931348623157E308
기본 타입: char 비트 수:16
패키지 클래스: java.lang.Character
최소값: Character.MIN_VALUE=0
최대값: Character.MAX_VALUE=65535

Float와 Double의 최소값과 최대값은 과학적 기호법으로 출력되며, 마지막에 "E"가 추가됩니다.+숫자"는 E 이전의 숫자를 곱합니다.10의 몇 번째 권을 나타냅니다. 예를 들어3.14E3은3.14 × 103 =31403.14E-3 은 3.14 x 10-3 =0.00314.

실제로 JAVA에서는 또 다른 기본 타입 void가 있으며, 이에 대한 패키지 클래스 java.lang.Void도 있습니다. 그러나 직접 이들을操作할 수는 없습니다.

타입 기본 값

아래 표는 Java의 각 타입의 기본 값을 나열합니다:

데이터 타입기본 값
byte0
short0
int0
long0L
float0.0f
double0.0d
char'u0000'
String (또는 어떤 객체)null
booleanfalse

온라인 예제

public class Test {
    static boolean bool;
    static byte by;
    static char ch;
    static double d;
    static float f;
    static int i;
    static long l;
    static short sh;
    static String str;
 
    public static void main(String[] args) {
        System.out.println("Bool ":" + bool);
        System.out.println("Byte ":" + by);
        System.out.println("Character:":" + ch);
        System.out.println("Double ":" + d);
        System.out.println("Float : ", + f);
        System.out.println("Integer : ", + i);
        System.out.println("Long : ", + l);
        System.out.println("Short : ", + sh);
        System.out.println("String : ", + str);
    }
}

예제 출력 결과는 다음과 같습니다:

Bool : false
Byte : 0
Character:
Double : 0.0
Float : 0.0
Integer : 0
Long : 0
Short : 0
String : null

 참조 타입

  •  Java에서 참조 타입 변수는 C와 매우 유사합니다/C++의 포인터. 참조 타입은 하나의 객체를 가리키며, 객체를 가리키는 변수는 참조 변수입니다. 이러한 변수는 선언 시 특정 타입으로 지정되며, 예를 들어 Employee, Puppy와 같습니다. 변수가 선언되면 타입은 변경할 수 없습니다.

  • 객체와 배열은 참조 데이터 타입입니다.

  •  모든 참조 타입의 기본 값은 null입니다.

  •  참조 변수는 어떤 호환 타입에도 참조할 수 있습니다.

  •  인스턴스: Site site = new Site("w3codebox")

Java 상수

상수는 프로그램 실행 중에 수정할 수 없습니다.

Java에서 final 키워드를 사용하여 상수를修饰하면, 변수와 같은 방식으로 선언됩니다:

final double PI = 3.1415927;

상수 이름은 소문자로도 사용할 수 있지만, 인식하기 쉽게 대문자를 사용하는 것이 일반적입니다.

문자면적은 어떤 내장 타입 변수에 할당할 수 있습니다. 예를 들어:

byte a = 68;
char a = 'A'

byte, int, long, 그리고 short는 십진수로 사용할 수 있습니다.16진법 및8진법으로 표현됩니다.

상수를 사용할 때, 접두사 0은 8 진법이며, 접두사 0x는 16 진법, 예를 들어:

int decimal = 100;
int octal = 0144;
int hexa = 0x64;

다른 언어와 마찬가지로, Java의 문자 상수는 두 개의 인용부호 사이에 포함된 문자 시퀀스입니다. 다음은 문자 상수의 예입니다:

"Hello World"
"two\nlines"
"\"This is in quotes\""

문자 상수와 문자 상수는 모두 어떤 Unicode 문자를 포함할 수 있습니다. 예를 들어:

char a = '\u000'1';
String a = "\u0001";

Java 언어는 특별한 응축 문자 시퀀스를 지원합니다.

                        기호                        문자 의미
                        \n                        개행 (0x0a)
                        \r                        엔터 (0x0d)
                        \f                        페이지 이동(0x0c)
                        \b                        백스페이스 (0x08)
                        \0                        공백 문자 (0x0)
                        \s                        공백 (0x20)
                        \t                        탭
                        \"                        빠른 문자
                        \'                        단추
                        \\\\                        백슬래시
                        \ddd                        8진수 문자 (ddd)
                        \uxxxx                        16진수 Unicode 문자 (xxxx)

자동 타입 변환

정수형, 실수형(상수), 문자형 데이터는 혼합 연산이 가능합니다. 연산에서, 다른 타입의 데이터는 연산 전에 동일한 타입으로 변환되어 연산됩니다.

전환은 저급에서 고급으로 이루어집니다.

저  ------------------------------------고
byte, short, char -> int -> long -> float -> double

데이터 타입 변환은 다음과 같은 규칙을 만족해야 합니다:

  • 1. boolean형에 대한 타입 변환은 불가합니다.

  • 2. 객체 타입을 관련이 없는 클래스의 객체로 변환할 수 없습니다.

  • 3. 큰 타입을 작은 타입으로 변환할 때는 반드시 강제 타입 변환을 사용해야 합니다.

  • 4. 변환 과정에서 부정확성이나 손실이 발생할 수 있습니다. 예를 들어:

    int i =128;   
    byte b = (byte)i;

    byte형은 8 비트로 변환됩니다.127이므로 int형을 byte형으로 강제 변환할 때, 값 128 시나리오에서 부정확성이 발생할 수 있습니다.

  • 5. 실수형에서 정수형으로의 변환은 소수점을 버리는 방식으로 이루어지며, 반올림은 아닙니다. 예를 들어:

    (int)23.7 == 23;        
    (int)-45.89f == -45

자동 타입 변환

비트로 변환됩니다.16비트로 변환될 수 있습니다. 변환 전 데이터 타입의 비트 수는 변환 후 데이터 타입의 비트 수보다 작아야 합니다. 예를 들어, short 데이터 타입의 비트 수는32의 int형 타입으로 변환될 수 있습니다. 또한 float 데이터 타입의 비트 수는32으로 자동 변환될 수 있습니다64의 double형 타입입니다.

public class ZiDongLeiZhuan{
        public static void main(String[] args){
            char c1='a';//char형을 정의합니다
            int i1 = c1;//char형이 자동으로 int형으로 변환
            System.out.println("char형이 자동으로 int형으로 변환된 값은"+i1);
            char c2 = 'A';//char형을 정의합니다
            int i2 = c2+1;//char형과 int형 계산
            System.out.println("char형과 int 계산 후의 값은"+i2);
        }
}

실행 결과는:

char형이 자동으로 int형으로 변환된 값은97
char형과 int 계산 후의 값은66

해석:c1 의 값은 문자입니다 a , ASCII 코드 표를 참조하여 해당하는 int 타입 값은 97A에 해당하는 값은 65그래서 i2=65+1=66.

강제 타입 변환

  • 1. 조건은 변환할 데이터 타입이 호환되어야 합니다.

  • 2. 형식: (type)value  type는 변환된 데이터 타입입니다.   예제:

    public class QiangZhiZhuanHuan{
        public static void main(String[] args){
            int i1 = 123;
            byte b = (byte)i1;//강제 타입 변환
            System.out.println("int 타입을 byte로 강제 변환한 값을"+b);
        }
    }

    실행 결과:

    int 타입을 byte로 강제 변환한 값을123

추정된 타입 변환

  • 1. 정수의 기본 타입은 int입니다.

  • 2. 플로팅 포인트 타입에는 이러한 문제가 없습니다. float 타입을 정의할 때는 숫자 뒤에 F 또는 f를 따라야 합니다.

이 장에서는 Java의 기본 데이터 타입을 설명합니다. 다음 장에서는 다양한 변수 타입과 그 사용법에 대해 논의할 것입니다.