java中的data types_Data Types in Java

了解Java data types 。 primitive datatype和non-primitive datatype (或参考数据类型)之间的差异。 了解数据类型大小和best practices以在Java中使用数据类型。

1. What is Data Type

在Java中,通常数据类型与变量相关联 。 变量具有三个属性:

variable name (也称为标识符)引用存储位置

存储在内存位置的数据类型(称为数据类型)

保存值的memory location

7d1a8b76ec2bd535930e6c2f51235256.pngJava Data Type

第二个属性(标记为红色)称为data type 。 变量的数据类型决定了存储位置可以保存的值的范围 。 因此, 为变量分配的内存量取决于其数据类型 。 例如,为'int'数据类型的变量分配了32位内存。Java是一种静态类型的语言。 这意味着必须先声明所有变量,然后才能使用它们 。boolean flag = true;

int counter = 20;

2. Types of data type in Java

Java支持两种数据类型,即primitive data type和non-primitive或reference data type 。

2.1. Primitive Data Types

基本数据类型directly在内存中保存一个值。 例如,数字或字符。 基本数据类型是

不是对象,也不是对对象的引用。

存储在原语中的值称为literals 。 literal是固定值的源代码表示; 文字直接在您的代码中表示,无需计算。

在Java中,我们有8种原始数据类型。

Data TypeDescriptionDefault ValueMemory Size

booleanA binary value of either true or falsefalse1 bit

charAny unicode character\u0000 (0)16 bit unicode character

bytevalues values from -128 to 12708 bit signed value

shortvalues values from -32768 to 32767016 bits signed value

intvalues values from from -231 to 231-1032 bits signed value

longvalues values from from -263 to 263-1064 bit floating point value

float0.032 bit floating point value

doubleIEEE 754 floating point0.064 bit floating point value在Java SE 7和更高版本中,数字文字中数字之间的任意位置都可以出现任意数量的underscore字符( '_' )。 例如10_000_000是Java中的有效数字。

2.1.1.Type conversion between primitives

除了boolean ,您可以将一个原始值分配给另一个原始类型。 但是,有时将大存储容量的图元分配给存储容量较小的图元时,可能会导致data loss 。 就像您要从大型容器中转移水并将其放入小型容器中一样,因此自然而然地就会流失水。int counter = 20_000_000;

//Assign int to short (data loss)

short shortCounter = (short) counter;

//assign int to long (no data loss)

long longCounter = counter;

System.out.println(counter); //20000000

System.out.println(shortCounter); //11520

System.out.println(longCounter); //20000000

请注意,当Java检测到类型转换可能会导致数据丢失(较大的数据类型转换为较小的数据类型)时,会给出type-mismatch error并明确要求进行type casting (例如,将“ int”分配为“ short”)。 它有助于检测和解决意外的数据丢失分配。

2.2. Non-primitive Data Types

非原始或引用数据类型将对对象的引用保存在内存中。 使用存储在变量中的引用,您可以访问引用对象的字段和方法。

例如, java.lang.String是Java库中定义的类,您可以使用它来处理文本(字符序列)。 您将String类型的引用变量声明为:String str = new String( "Hello World !!" );

执行此代码会怎样? 首先,分配一个内存块,并将变量str的名称与该内存位置关联。 此过程与声明原始数据类型变量的过程相同。

代码的第二部分在内存中使用文本"Hi"创建一个新的String对象,并将该String对象的引用(或内存地址)存储到变量'str' 。

2.2.1. Multiple references can refer to same object

您还可以将存储在一个参考变量中的对象的参考分配给另一参考变量。 在这种情况下,两个引用变量都将引用内存中的同一对象。// Declares String reference variable str1 and str2

String str1;

String str2;

// Assigns the reference of a String object "Hello" to str1

str1 = new String( "Hello World !!" );

// Assigns the reference stored in str1 to str2

str2 = str1;

System.out.println( str1 ); //Hello World !!

System.out.println( str2 ); //Hello World !!

There is a reference constant (also known as reference literal) null, which can be assigned to any reference variable. If null is assigned to a reference variable, it means that the reference variable is not referring to any object in memory.

2.2.2. Wrapper Classes

包装类是一个类,其对象包装或包含基本数据类型 。 换句话说,我们可以将原始值包装到包装类对象中。

请注意,Java有一个包装类映射到每种原始数据类型 。 例如, java.lang.Integer类是int数据类型的对象版本。 同样,对于所有8种基本数据类型,我们总共有8个包装器类。

包装器类名称与原始数据类型名称相同,仅以大写字母开头。

这些包装器类是Boolean , Byte , Short , Character , Integer , Long , Float和Double 。

2.2.3. Auto Boxing

在Java中,可以直接将原始类型值分配给包装器类。 例如,您可以将一个int值分配给Interger类引用。Integer counter = 20;

static Float PI = 3.14f;

3. Difference between primitive and non-primitive data types基元直接存储值,称为文字。 引用类型将对实际对象的引用存储在存储区中。

有8种固定的原始数据类型。 在Java中,每个类都是包含包装器类的数据类型。

4. Best practices使用Java变量命名约定并遵循最佳实践。

将原语用于范围内局部变量。 例如内部方法,循环计数器和中间结果。

在方法或类之间传输数据时,最好使用对象,因为将仅复制它们的引用,而不会增加内存开销。

在处理集合(需要对象)时,应使用对象。

通过网络发送数据时,请使用对象并使它们可Serializable 。 包装器类可自动序列化。

始终知道您将需要的数据类型的大小。 使用适当的数据大小。 使用int存储boolean值(0和1)会浪费内存。

在数字中使用下划线(Java 7以上)。 它使它们more readable 。

Read More:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值