Java中的原始数据类型与对象数据类型
原始数据类型 :在 Java 中,原始数据类型是 Java 的预定义数据类型。它们指定任何标准值的大小和类型。Java 有 8 种原始数据类型,即 byte、short、int、long、float、double、char 和 boolean。当存储原始数据类型时,将为堆栈分配值。复制变量时,会创建该变量的另一个副本,并且对复制的变量所做的更改不会反映原始变量中的更改。这是一个演示 Java 中所有原始数据类型的 Java 程序。
对象数据类型 :这些也称为非原始或参考数据类型。它们之所以被称为是因为它们指代任何特定的对象。与原始数据类型不同,非原始数据类型由 Java 用户创建。示例包括数组、字符串、类、接口等。当引用变量将被存储时,变量将存储在堆栈中,原始对象将存储在堆中。在 Object 数据类型中,虽然将创建两个副本,但它们都将指向堆中的同一个变量,因此对任何变量所做的更改都将反映两个变量的更改。这是一个 Java 程序,用于演示 Java 中的数组(一种对象数据类型)。
Java中原始数据类型和对象数据类型的区别:
现在让我们看一个演示 Java 中原始数据类型和对象数据类型之间区别的程序。
import java.lang.*;
import java.util.*;
class GeeksForGeeks {
public static void main(String ar[])
{
System.out.println("原始数据类型\n");
int x = 10;
int y = x;
System.out.print("Initially: ");
System.out.println("x = " + x + ", y = " + y);
// Here the change in the value of y
// will not affect the value of x
y = 30;
System.out.print("After changing y to 30: ");
System.out.println("x = " + x + ", y = " + y);
System.out.println(
"**Only value of y is affected here "\n + "because of Primitive Data Type\n");
System.out.println("REFERENCE DATA TYPES\n");
int[] c = { 10, 20, 30, 40 };
// Here complete reference of c is copied to d
// and both point to same memory in Heap
int[] d = c;
System.out.println("Initially");
System.out.println("Array c: "+ Arrays.toString(c));
System.out.println("Array d: "+ Arrays.toString(d));
// Modifying the value at
// index 1 to 50 in array d
System.out.println("\nModifying the value at "+ "index 1 to 50 in array d\n");
d[1] = 50;
System.out.println("After modification");
System.out.println("Array c: "+ Arrays.toString(c));
System.out.println("Array d: "+ Arrays.toString(d));
System.out.println( "**Here value of c[1] is also affected " + "because of Reference Data Type\n");
}
}
运行结果:
原始数据类型
Initially: x = 10, y = 10
After changing y to 30: x = 10, y = 30
**Only value of y is affected here because of Primitive Data Type
REFERENCE DATA TYPES
Initially
Array c: [10, 20, 30, 40]
Array d: [10, 20, 30, 40]
Modifying the value at index 1 to 50 in array d
After modification
Array c: [10, 50, 30, 40]
Array d: [10, 50, 30, 40]
Here value of c[1] is also affected because of Reference Data Type
下面以表格的方式来看看原始数据类型和对象数据类型之间的区别。
属性 | 原始数据类型 | 对象数据类型 |
---|---|---|
来源 | 预定义数据类型 | 用户定义数据类型 |
存储结构 | 存储在堆栈中 | 引用变量存储在堆栈中,原始对象存储在堆中 |
复制时 | 创建了两个不同的变量以及不同的赋值(只有值相同) | 创建了两个引用变量,但都指向堆上的同一个对象 |
在复制的变量中进行更改时 | 更改不会反映在原始变量中。 | 变化反映在原来的。 |
默认值 | 原始数据类型没有 null 作为默认值 | 引用变量的默认值为 null |
示例 | byte、short、int、long、float、double、char | 布尔数组、字符串类、接口等。 |