- Java数据类型概述
- 在Java中,数据类型分为基本数据类型和引用数据类型。基本数据类型包括整数类型(
byte
、short
、int
、long
)、浮点类型(float
、double
)、字符类型(char
)和布尔类型(boolean
)。这些基本数据类型在内存中有明确的存储方式,并且存储的是实际的值。
- 在Java中,数据类型分为基本数据类型和引用数据类型。基本数据类型包括整数类型(
- String的本质是引用数据类型
- 存储方式:
String
在Java中是一个类,属于引用数据类型。当创建一个String
对象时,实际上是在堆内存中分配了一块空间来存储字符串的值,而变量本身(在栈内存中)存储的是这个对象在堆内存中的引用地址。例如:String str = "Hello";
- 这里
str
是一个引用变量,它指向存储在堆内存中的String
对象,这个对象包含了字符序列"Hello"
。
- 存储方式:
- 与基本数据类型的对比
- 可变性:基本数据类型的值是不可变的,一旦定义就不能改变。例如,一个
int
类型的值不能在原内存位置上修改。而String
对象是不可变的(immutable),这意味着一旦一个String
对象被创建,它的值就不能被改变。当对String
进行操作看起来像是修改了它的值时,实际上是创建了一个新的String
对象。例如:String str1 = "Hello"; String str2 = str1 + " World";
- 这里
str1
仍然指向原来的String
对象"Hello"
,而str2
指向一个新创建的包含"Hello World"
的String
对象。 - 内存管理:基本数据类型的变量在栈内存中直接存储其值,占用的内存空间大小是固定的,由数据类型本身决定(例如
int
通常占用4个字节)。而String
对象存储在堆内存中,其占用的内存空间大小取决于字符串的长度,并且需要进行垃圾回收(GC)来管理内存。当一个String
对象不再被引用时,垃圾回收机制会在适当的时候回收它所占用的内存。 - 操作方法:基本数据类型有一系列简单的算术和逻辑运算操作符,如
+
、-
、*
、/
(对于数值类型)和&&
、||
、!
(对于布尔类型)。而String
类有自己丰富的方法,如length()
用于获取字符串长度,substring()
用于截取子字符串,indexOf()
用于查找字符或子字符串在字符串中的位置等。
- 可变性:基本数据类型的值是不可变的,一旦定义就不能改变。例如,一个