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 布尔数组、字符串类、接口等。

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/266946.html

(0)
上一篇 2022年6月12日 17:32
下一篇 2022年6月12日 17:32

相关推荐

发表回复

登录后才能评论

WordPress 数据库错误: [Duplicate entry '81-7bc5f87d83893fa5db53603967a72d35' for key 'task_id_source_url_key']
insert into wp_autoblog_queue(task_id,source_url,source_url_key,create_date_time,not_check_stoped,post_interval) values(81,'http://www.52im.net/forum.php?mod=collection&action=view&ctid=16&page=3','7bc5f87d83893fa5db53603967a72d35',1734542377,0,0)