首先, 在Java中, 不存在引用传递(也就是地址传递)一说, 全部都是值传递, 自然, 在使用对象时实际上都是使用的引用
Java语言明确说明取消了指针,因为指针往往是在带来方便的同时也是导致代码不安全的根源,同时也会使程序的变得非常复杂难以理解,滥用指针写成的代码不亚于使用早已臭名昭著的"GOTO"语句。Java放弃指针的概念绝对是极其明智的。但这只是在Java语言中没有明确的指针定义,实质上每一个new 语句返回的都是一个指针的引用,只不过在大多时候Java中不用关心如何操作这个"指针",更不用象在操作C++的指针那样胆战心惊。
基本类型数据存放在Stack中,存放的是数据。而产生对象时,只把对象的reference存放在stack中,用于指向某个对象,对象本身存放在Heap中。
还有, 调用方法时传递的参数以及在调用中创建的临时变量都保存在栈(Stack)中,速度较快。其他变量,如静态变量、实例变量等,都在堆(Heap)中创建,速度较慢。另外,依赖于具体的编译器/JVM,局部变量还可能得到进一步优化。
从实现上来讲,引用可以理解为一种受限的指针,引用底层可以采用指针来实现,也可以采用句柄的方式实现。早期jvm一般采用句柄的方式,现在的jvm,比如sun的,IBM的,一般就是用指针来实现。
不过从语言的角度来将,没有必要把java的引用和C的指针来比较。
指针是可以进行与整数做加减运算的,两个指针之间也可以进行大小比较运算和相减运算。
引用不行,只能进行赋值运算。
当然有区别
A a=new A();
你可以 a=a+1;吗? 指针就可以
分享到:
相关推荐
关于C语言指针和Java引用的思考 该资源主要讨论了C语言指针和Java引用的概念、实现、差异和应用场景。下面是对该资源的详细分析和知识点总结: 1. C语言指针: C语言中,函数的内存都是分配在栈中的,当该函数...
C语言指针操作的优点在于它能够提高程序的运行效率,尤其是在涉及到大型数据结构如数组、字符串等传递时,可以避免复制整个数据结构而仅仅传递一个地址,极大减少了数据传递的开销。此外,指针还能够实现动态内存...
Java程序与C语言之间的主要区别在于它们的设计哲学、语法特性以及对安全性、可移植性和效率的处理方式。这里我们将深入探讨这些差异。 首先,Java是一种面向对象的语言,而C语言则是面向过程的。这意味着在Java中,...
【C语言指针基础知识点详解】 1. **指针与数组的关系**...这些知识点涵盖了C语言指针的基本用法,包括指针与数组、字符串、函数、多级指针以及数组指针的交互。对于初学者来说,理解和掌握这些概念是学习C语言的关键。
【C语言指针教学重点和难点】 在C语言中,指针是编程中不可或缺的一部分,它扮演着连接程序逻辑和内存管理的关键角色。指针允许程序员直接操控内存,实现高效的数据处理和灵活的编程结构。然而,由于其复杂性和抽象...
由于提供的文件内容存在重复以及不相关部分,我们将专注于文档的核心内容,即Java语言与C语言中垃圾回收(GC)的不同方式的研究。以下是对这部分内容的知识点阐述: 一、垃圾回收的概念与重要性 垃圾回收(Garbage ...
Java语言和C语言在垃圾回收方面有着显著的区别。在Java中,垃圾回收是自动进行的,由Java虚拟机(JVM)内置的垃圾回收器管理,程序员无需手动释放内存。这是Java语言的一大优势,因为它消除了内存泄漏和悬挂指针等...
根据提供的文件信息,我们可以从标题、描述以及部分代码中提炼出关于Java中数组与指针相关的知识点。需要注意的是,Java并没有传统意义上的指针概念,但可以通过数组和其他特性来模拟类似的功能。下面将对这些知识点...
在Java和C语言中实现这些数据结构和算法,需要注意语言特性,如Java中的对象和引用,C语言中的指针操作。同时,要关注性能优化,如避免不必要的内存分配和拷贝,以及合理利用数据结构特性来减少操作复杂性。 例如,...
在"JNA 转java接口以及指针结构体解析"这个主题中,我们将深入探讨如何使用JNA来处理C语言中的结构体和指针。 首先,理解JNA的基本工作原理至关重要。JNA通过定义一个`Interface`,该接口中的方法对应于要调用的...
C语言与Java是两种具有显著区别的编程语言,它们各自具有独特的特性和用途。以下是对两者之间主要差异的详细解释: 一、编程思想 C语言是一种面向过程的语言,强调通过一系列过程化的函数调用来完成任务。开发者...
`C语言参考.chm`文件可能包含C语言的关键字、数据类型、控制结构、函数、指针、内存管理等主题,帮助开发者深入理解程序执行的本质。 JavaScript则是一种运行在客户端的脚本语言,主要用于网页的动态效果和交互。`...
2. Java引用和C语言指针的区别: 虽然Java引用和C语言指针在功能上相似,都用于间接访问内存中的对象,但Java隐藏了内存地址的具体细节,使得开发者在使用时不必直接操作内存地址,减少了内存泄露等低级错误的发生。...
接着,它将这些结构映射到相应的Java语法,例如,将C中的指针转换为Java的对象引用,将C的结构体转换为Java的类,将C的函数转换为Java的方法等。在这个过程中,工具还需要处理类型映射、内存管理等方面的差异,确保...
C语言和Java是两种截然不同的编程语言,它们在设计理念、语法特性以及使用场景上有着显著的区别。这里我们将深入探讨这些差异。 首先,C语言是一种面向过程的语言,它强调通过一系列有序的过程步骤来解决问题。在...
标题中的"C语言与Java的区别1共2页"表明这是一个探讨两种编程语言——C语言和Java之间差异的文档。这两种语言都是计算机编程中的重要工具,但它们在设计目标、语法、应用领域、内存管理等方面有着显著的不同。以下是...
- 指针声明、指针解引用、指针运算等。 - 动态内存分配和释放(`malloc`、`free`)。 2. **函数指针**: - 函数指针的声明和使用,以及作为参数传递。 3. **结构体**: - 结构体的定义、初始化和成员访问。 4...
C 语言有指针,允许直接地址操作,而 Java 没有指针,使用引用代替,提高了代码的稳定性和安全性。 总的来说,C 语言更适合底层系统编程、嵌入式开发和性能敏感的应用,而 Java 更适用于企业级应用、Web 开发和跨...
二、C语言与Java的区别 1. Java语言特点: Java语言在互联网电子商务、金融服务、Android应用开发以及Web应用程序等众多领域都有广泛的应用。Java语言的"一次编写,到处运行"的设计理念,使其具有良好的跨平台能力...