【问题标题】:What is the significance of class data type in java?java中类数据类型的意义是什么?
【发布时间】:2011-04-12 05:58:01
【问题描述】:

菜鸟问题。

我从事基础编程已经有一段时间了,但我无法理解类数据类型。

当我们说int a = 9; 这意味着 a 是 int 数据类型,这意味着它只能包含整数。

对于 String、boolean、double、float 等也是明智的

但请考虑以下代码:

Class Node {

Node next = null;
int data;

public Node(int d){ data = d; }

void append(int d)
    {
        blah blah blah
        ..............
    }
}

Node next = null; 是什么意思?我可以理解用

创建对象的努力
Node next = new Node();

然后尝试操作下一个对象。

【问题讨论】:

    标签: java types


    【解决方案1】:

    这段代码:

    Node next = null;
    

    声明Node 类型的变量。由于Node 是一个类,next 的值始终是一个引用——要么指向 Node 类型的对象或子类,要么指向根本不引用任何对象的 null 引用。 . 在这种情况下,变量以 null 的值开始。

    了解next 的值从不 Node 对象本身非常重要......它只是一个参考。所以假设我们有:

    Node next = new Node(10);
    Node foo = next;
    

    这里,nextfoo 是独立的变量,每个都有独立的值...但是我们将 next 的值分配为 foo 的初始值,这意味着它们都引用同一个对象。所以如果我们打印出foo.data,它将是10。

    我喜欢把变量想象成一张纸——对于引用类型的变量,纸上写的是房子的地址,或者“null”这个词。如果两张纸上写着相同的地址,它们指的是同一个房子——但两张纸本身是独立的。更改一个变量的 (划掉当前地址并写入另一个)不会改变另一个变量的任何内容......但会更改 房屋本身(例如,将门涂成红色)无论您使用哪张纸都可以看到。

    请注意,在您的问题中,您将Stringintdoubleboolean 混为一谈...但是intdoubleboolean 是原始的 类型(其中变量的值只是数据本身 - 数字等),String 是一个类,所以它是一个引用类型。字符串变量的值不是文本本身,而是一个引用。

    【讨论】:

      【解决方案2】:

      线

      Node next = null;
      

      意味着您定义了一个变量next,它只保存对Node 类型(类)对象的引用。此外,您使用null 值初始化它,这意味着no object created yet

      这些变量实际上包含对对象的引用,null 是一个特殊值,仅对表示您的变量为空的对象有效。如果next 仍然是null,则next.append() 之类的东西将失败并出现空指针异常。

      【讨论】:

      • 不,next 根本不保存 objects。它拥有referencesnull 是一个不引用任何对象的引用。没有“空”变量之类的东西——变量有一个明确定义的值,它是空引用。
      • 我仍然不喜欢变量为空时为“空”的想法。这是一个完全有效的值,它占用相同数量的空间等 - 它只是指没有对象。特别值得注意的是,“确定赋值,且值为空”与一个还没有确定赋值的变量非常不同。
      【解决方案3】:

      节点下一个 = null;是一种指向 NodeObject 的指针。这就像声明一个尚未初始化的变量。 在这种情况下,对象可能稍后会被实例化。 如果你把一个已经存在的对象设置为一个空值,如果没有其他对同一个对象的引用,那么垃圾收集器就会删除它。

      我已经进行了很长时间的基础编程,但我无法理解类数据类型。 当我们说 int a = 9;这意味着 a 是数据类型 int 意味着它只能包含整数。 与 String、boolean、double、float 等一样。

      注意 int 和 Integer 在 Java 中是不同的。 int 是原始类型,它不是对象。 Integer 是一个可以用 new 运算符实例化的对象。

      【讨论】:

        【解决方案4】:

        Node next = null表示这个变量初始化为空值,不指向任何内存位置。

        所以没有添加下一个“邻居”节点。

        【讨论】:

        • 不,它初始化...使用null 值。 变量有一个存储位置,但它的(null)不引用任何特定的对象。
        • 是的,这样更好。我认为值得更详细地了解这意味着什么(根据我的回答),但至少现在是准确的:)
        • Java 引用变量 ever 是否真的“指向内存位置”是有争议的。 (我知道一个 JVM 实现,其中引用根本没有实现为指针!)
        • @Stephen C - 你能扩展你的解释吗?我现在正在学习这门语言,这对我来说很有趣。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-14
        • 1970-01-01
        • 2015-10-19
        • 1970-01-01
        • 2011-05-03
        • 1970-01-01
        相关资源
        最近更新 更多