我要从学习C / C++学习Java:这到底是什么?
I'm going from learning C/C++ to learning Java: What the heck is this?
我刚刚在Java中看到了一个链表的实现(http://www.danielacton.com/Data-Structures/Linked-List/Java/),下面是节点的样子:
private class ListNode {
private Object data;
private ListNode next;
}
那到底是什么????
如果考虑一下这里的逻辑,ListNode的大小必须是无穷大字节。ListNode不应该持有另一个ListNode的地址吗?
这是从C++到Java的困惑之一。在Java中,
private ListNode next;
声明了一个引用变量,与C++中的ListNode&
引用相比最为接近。这是在Java中创建链表的一种方法——让节点存储数据和对下一项的引用。
请注意,在Java中,next
的默认值(如果未初始化(将是null
。
要想让它像你想象的那样爆炸,它必须是:
private ListNode next = new ListNode();
这将最终导致CCD_ 4。
变量ListNode next;
的默认值为null,这意味着在为变量赋值之前,它实际上不会指向ListNode
对象。所以不,不存在无限循环。
当您:
X whatever;
其中X
是类,whatever
是引用,而不是完整对象。这与C和C++不同,在C和C++中,堆栈上可以有完整的struct
。
虽然这在技术上并不准确,但可以将它们视为C/C++指针。除了你用点来表示"间接"。
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- C++避免重复声明的语法是什么
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- C++从另一个类访问公共静态向量的正确方法是什么
- "throw expression code" 1e7 >返回 d 是什么?投掷标准::overflow_error( "too big" ) : d;意味 着?
- C++中名称篡改的目的是什么
- 在 c++ 中拥有一组结构的正确方法是什么?
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 是什么阻止DOMTimerCoordinator::NextID进入无休止的循环
- 派生类销毁的最佳实践是什么
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 通过JNI传递数据数组的最快方法是什么
- "using namespace std;"在C++的作用是什么?
- 在两台机器之间进行时间戳的最佳c++chrono函数是什么
- 学习时空复杂性时语句XYZ的含义是什么?
- 学习阅读 ISO C++ 标准所需的逻辑格式和词汇的最佳方法是什么?
- 学习C++,下一步是什么?还有什么是推荐的编译器?
- 我要从学习C / C++学习Java:这到底是什么?
- 初学者学习OpenGL -这些OpenGL工具是什么