>  기사  >  Java  >  Java의 8가지 주요 데이터 유형은 무엇입니까?

Java의 8가지 주요 데이터 유형은 무엇입니까?

青灯夜游
青灯夜游원래의
2023-02-02 10:17:2348521검색

8가지 주요 데이터 유형: 1. 바이트(비트), 최대 데이터 저장 용량은 255입니다. 2. short(짧은 정수), 최대 데이터 저장 용량은 65536입니다. 3. int(정수), 최대 데이터 저장 용량 2/32 거듭제곱 빼기 1; 4. long(긴 정수), 최대 데이터 저장 용량은 2의 64 빼기 1입니다. float(단정밀도 부동 숫자), f 또는 F는 뒤에 추가되어야 합니다. 직접 할당할 경우 숫자, 6, double(이중 정밀도), 7. boolean(부울 유형), char(문자)

Java의 8가지 주요 데이터 유형은 무엇입니까?

이 튜토리얼의 운영 환경: windows7 시스템, java8 버전, DELL G3 컴퓨터.

1. Java의 8가지 기본 데이터 유형

Java에는 8가지 기본 유형이 있습니다. 기본 유형은 문자 유형, 부울 유형, 숫자 유형 byte, short, int, long, float, double . 숫자 유형은 정수 유형인 byte, short, int, long과 부동 소수점 유형인 float 및 double로 나눌 수 있습니다. JAVA에는 부호 없는 숫자 유형이 없습니다. 해당 값 범위는 고정되어 있으며 기계 하드웨어 환경이나 운영 체제의 변화에 ​​따라 변경되지 않습니다. 실제로 JAVA에는 또 다른 기본 유형인 void가 있으며 여기에는 해당 패키징 클래스인 java.lang.Void가 있지만 직접 작업할 수는 없습니다. 8가지 매체 유형의 표현 범위는 다음과 같습니다.

바이트: 8비트, 최대 저장 데이터 양은 255, 저장 데이터 범위는 -128~127입니다.

짧게: 16비트, 최대 빅데이터 저장 용량은 65536이고, 데이터 범위는 -32768~32767입니다.

int: 32비트, 최대 데이터 저장 용량은 2의 32승 - 1이며, 데이터 범위는 -2의 31승 - +2의 31승 -1입니다.

long: 64비트, 최대 데이터 저장 용량은 2의 64승 -1이며, 데이터 범위는 -2의 63승 - +2의 63승 -1입니다.

float: 32비트, 데이터 범위는 3.4e-45~1.4e38, 직접 할당 시 숫자 뒤에 f 또는 F를 추가해야 합니다.

double: 64비트, 데이터 범위는 4.9e-324~1.8e308, 할당 시 d 또는 D를 추가하거나 추가하지 않을 수 있습니다.

boolean: true와 false라는 두 가지 값만 있습니다.

char: 16비트, 유니코드 코드를 저장하고 작은따옴표로 값을 할당합니다.

Java는 각 단순 유형의 크기를 결정합니다. 이러한 크기는 기계 아키텍처가 변경되어도 변경되지 않습니다. 이러한 크기 불변성은 Java 프로그램의 이식성이 뛰어난 이유 중 하나입니다. 다음 표에는 Java에 정의된 단순 유형, 해당 유형이 차지하는 이진수 수 및 해당 래퍼 클래스가 나열되어 있습니다.

간단형

boolean

byte

char

short

Int

long

float

double

void

이진수

1

8

16

16

32

64

32

64

--

Wrapper 클래스

Boolean

Byte

Character

Short

Integer

Long

Float

더블

공허

기본형 숫자형의 값 범위는 해당 패키징 클래스에서 상수 형식으로 정의되어 있으므로 굳이 기억할 필요는 없습니다. 예:

기본 유형 byte 이진수: Byte.SIZE 최소값: Byte.MIN_VALUE 최대값: Byte.MAX_VALUE

기본 유형 short 이진수: Short.SIZE 최소값: Short.MIN_VALUE 최대값: Short.MAX_VALUE

기본형 char 이진수 개수: Character.SIZE 최소값: Character.MIN_VALUE 최대값: Character.MAX_VALUE

기본형 double 이진수 개수: Double.SIZE 최소값: Double.MIN_VALUE 최대값: Double.MAX_VALUE

참고: float 및 double 유형의 최소값은 Float.MIN_VALUE 및 Double.MIN_VALUE의 값과 동일하지 않습니다. 실제로 Float.MIN_VALUE 및 Double.MIN_VALUE는 가능한 가장 작은 양수를 나타냅니다. 각각 float 및 double 유형으로 표현됩니다. 즉, float 타입은 0부터 ±Float.MIN_VALUE 사이의 값을 표현할 수 없고, double 타입은 0부터 ±Double.MIN_VALUE 사이의 값을 표현할 수 없는 상황이 있습니다. 이 범위의 값은 정밀도 범위를 벗어나므로 이는 놀라운 일이 아닙니다.

Float 및 Double의 최소값과 최대값은 과학 표기법으로 출력됩니다. 끝에 있는 "E+숫자"는 E 앞의 숫자에 10을 곱해야 하는 횟수를 나타냅니다. 예를 들어 3.14E3은 3.14×1000=3140이고, 3.14E-3은 3.14/1000=0.00314입니다.

Java 기본 유형은 스택에 저장되므로 액세스 속도가 힙에 ​​저장된 해당 래퍼 클래스의 인스턴스 객체보다 빠릅니다. Java 5.0(1.5)부터 JAVA Virtual Machine(JavaVirtual Machine)은 기본 유형과 해당 래퍼 클래스 간의 자동 변환을 완료할 수 있습니다. 따라서 할당, 매개변수 전송, 수학적 연산을 수행할 때 래퍼 클래스를 기본 유형과 마찬가지로 사용하지만 이것이 기본 유형을 통해 래퍼 클래스에만 있는 메서드를 호출할 수 있다는 의미는 아닙니다. 또한 모든 기본 유형(void 포함)의 래퍼 클래스는 최종 수정을 사용하므로 이를 상속하여 새 클래스를 확장할 수 없으며 해당 메서드를 재정의할 수도 없습니다.

기본 유형의 장점: 데이터 저장이 상대적으로 간단하고 작업 효율성이 상대적으로 높음

패키징 클래스의 장점: 일부는 쉽습니다. 예를 들어 컬렉션의 요소는 객체 유형이어야 하며 이는 모든 것이 객체라는 Java 아이디어를 충족합니다. 객체

2. Java의 상수

16진수 정수 상수: 16진수로 표현되는 경우 0xff, 0X9A와 같이 0x 또는 0X로 시작해야 합니다.

8진수 정수: 8진수는 0123, 034와 같이 0으로 시작해야 합니다.

긴 정수형: 긴 정수형은 9L, 342L처럼 L로 끝나야 합니다.

부동소수점 상수: 소수점 상수의 기본 유형이 double형이므로 부동 소수점 유형 뒤에 f(F)를 추가해야 합니다. 소수가 있는 변수도 기본적으로 double 유형입니다.

예:

float f;
f=1.3f;//必须声明f。

문자 상수: 문자 상수는 작은따옴표 두 개로 묶어야 합니다(문자열 상수는 큰따옴표 두 개로 묶어야 합니다). Java의 문자는 2바이트를 차지합니다. 일반적으로 사용되는 일부 이스케이프 문자:

①r은 키보드 입력을 허용하는 것을 의미하며, 이는 Enter 키를 누르는 것과 같습니다.

②\n表示换行;

③\t表示制表符,相当于Table键;

④\b表示退格键,相当于Back Space键;

⑤\'表示单引号;

⑥\''表示双引号;

⑦\\表示一个斜杠\。

3. 数据类型之间的转换

1).简单类型数据间的转换,有两种方式:自动转换和强制转换,通常发生在表达式中或方法的参数传递时。

自动转换

具体地讲,当一个较"小"数据与一个较"大"的数据一起运算时,系统将自动将"小"数据转换成"大"数据,再进行运算。而在方法调用时,实际参数较"小",而被调用的方法的形式参数数据又较"大"时(若有匹配的,当然会直接调用匹配的方法),系统也将自动将"小"数据转换成"大"数据,再进行方法的调用,自然,对于多个同名的重载方法,会转换成最"接近"的"大"数据并进行调用。这些类型由"小"到"大"分别为 (byte,short,char)--int--long--float—double。这里我们所说的"大"与"小",并不是指占用字节的多少,而是指表示值的范围的大小。

①下面的语句可以在Java中直接通过:

byte b;
int i=b; 
long l=b; 
float f=b; 
double d=b;

②如果低级类型为char型,向高级类型(整型)转换时,会转换为对应ASCII码值,例如

char c='c'; int i=c;
System.out.println("output:"+i);

输出:output:99;

③对于byte,short,char三种类型而言,他们是平级的,因此不能相互自动转换,可以使用下述的强制类型转换。

short i=99 ; 
char c=(char)i; 
System.out.println("output:"+c);

输出:output:c;

强制转换

将"大"数据转换为"小"数据时,你可以使用强制类型转换。即你必须采用下面这种语句格式: int n=(int)3.14159/2;可以想象,这种转换肯定可能会导致溢出或精度的下降。

2)表达式的数据类型自动提升, 关于类型的自动提升,注意下面的规则。

①所有的byte,short,char型的值将被提升为int型;

②如果有一个操作数是long型,计算结果是long型;

③如果有一个操作数是float型,计算结果是float型;

④如果有一个操作数是double型,计算结果是double型;

例, byte b; b=3; b=(byte)(b*3);//必须声明byte。

3)包装类过渡类型转换

一般情况下,我们首先声明一个变量,然后生成一个对应的包装类,就可以利用包装类的各种方法进行类型转换了。例如:

①当希望把float型转换为double型时:

float f1=100.00f;
Float F1=new Float(f1);
double d1=F1.doubleValue();//F1.doubleValue()为Float类的返回double值型的方法

②当希望把double型转换为int型时:

double d1=100.00;
Double D1=new Double(d1);
int i1=D1.intValue();

简单类型的变量转换为相应的包装类,可以利用包装类的构造函数。即:Boolean(boolean value)、Character(char value)、Integer(int value)、Long(long value)、Float(float value)、Double(double value)

而在各个包装类中,总有形为××Value()的方法,来得到其对应的简单类型数据。利用这种方法,也可以实现不同数值型变量间的转换,例如,对于一个双精度实型类,intValue()可以得到其对应的整型变量,而doubleValue()可以得到其对应的双精度实型变量。

4)字符串与其它类型间的转换

其它类型向字符串的转换

①调用类的串转换方法:X.toString();

②自动转换:X+"";

③使用String的方法:String.volueOf(X);

字符串作为值,向其它类型的转换

①先转换成相应的封装器实例,再调用对应的方法转换成其它类型

例如,字符中"32.1"转换double型的值的格式为:new Float("32.1").doubleValue()。也可以用:Double.valueOf("32.1").doubleValue()

②静态parseXXX方法

String s = "1";
byte b = Byte.parseByte( s );
short t = Short.parseShort( s );
int i = Integer.parseInt( s );
long l = Long.parseLong( s );
Float f = Float.parseFloat( s );
Double d = Double.parseDouble( s );

③Character的getNumericValue(char ch)方法

5)Date类与其它数据类型的相互转换

整型和Date类之间并不存在直接的对应关系,只是你可以使用int型为分别表示年、月、日、时、分、秒,这样就在两者之间建立了一个对应关系,在作这种转换时,你可以使用Date类构造函数的三种形式:

①Date(int year, int month, int date):以int型表示年、月、日

②Date(int year, int month, int date, int hrs, int min):以int型表示年、月、日、时、分

③Date(int year, int month, int date, int hrs, int min, int sec):以int型表示年、月、日、时、分、秒

在长整型和Date类之间有一个很有趣的对应关系,就是将一个时间表示为距离格林尼治标准时间1970年1月1日0时0分0秒的毫秒数。对于这种对应关系,Date类也有其相应的构造函数:Date(long date)。

获取Date类中的年、月、日、时、分、秒以及星期你可以使用Date类的getYear()、getMonth()、getDate()、getHours()、getMinutes()、getSeconds()、getDay()方法,你也可以将其理解为将Date类转换成int。

而Date类的getTime()方法可以得到我们前面所说的一个时间对应的长整型数,与包装类一样,Date类也有一个toString()方法可以将其转换为String类。

有时我们希望得到Date的特定格式,例如20020324,我们可以使用以下方法,首先在文件开始引入,

import java.text.SimpleDateFormat;
import java.util.*;
java.util.Date date = new java.util.Date();
 
//如果希望得到YYYYMMDD的格式
SimpleDateFormat sy1=new SimpleDateFormat("yyyyMMDD");
String dateFormat=sy1.format(date);
 
//如果希望分开得到年,月,日
SimpleDateFormat sy=new SimpleDateFormat("yyyy");
SimpleDateFormat sm=new SimpleDateFormat("MM");
SimpleDateFormat sd=new SimpleDateFormat("dd");
String syear=sy.format(date);
String smon=sm.format(date);
String sday=sd.format(date);

总结:只有boolean不参与数据类型的转换

(1).自动类型的转换:a.常数在表数范围内是能够自动类型转换的

b.数据范围小的能够自动数据类型大的转换(注意特例)

int到float,long到float,long到double 是不会自动转换的,不然将会丢失精度

c.引用类型能够自动转换为父类的

d.基本类型和它们包装类型是能够互相转换的

(2).强制类型转换:用圆括号括起来目标类型,置于变量前

4.Java引用类型

Java有 5种引用类型(对象类型):类 接口 数组 枚举 标注

引用类型:底层结构和基本类型差别较大

JVM的内存空间:(1). Heap 堆空间:分配对象 new Student()

(2). Stack 栈空间:临时变量 Student stu

(3).Code 代码区 :类的定义,静态资源 Student.class

eg:Student stu = new Student(); //new 在内存的堆空间创建对象

stu.study(); //把对象的地址赋给stu引用变量

上例实现步骤:a.JVM加载Student.class 到Code区

     b.new Student()在堆空间分配空间并创建一个Student实例;

     c.将此实例的地址赋值给引用stu, 栈空间;

更多编程相关知识,请访问:编程教学!!

위 내용은 Java의 8가지 주요 데이터 유형은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.