java引用传递和c指针,JAVA引用 与 C 的指针

1,JAVA引用 与 C 的指针用起来是一样的,只是原理不同嘛数组就是指针,是固定的指针 , 不能变更的指针 。·引用只能在定义的时候赋值 , 或者作为函数的参数·引用定义的数据与没有引用前的数据是同一数据 , 不同的名称,相当于给旧数据引新名称·引用一旦定义,就不能改变,只能在定义时指定,并且其他所有的地方都不能去改变引用关系当然,指针与引用之间的关系并非是一讲半讲的内容能够交待得很透切.我却认为JAVA的使用相对安全,而且这也是大多数人认为的 。都差不多,指针更灵活,也更危险,所以就有了引用,JAVA和C++都推荐使用引用语言的分家是正常的,C写底层好,但JAVA就不好用了,各有各的好处,能够留下来都是经历了时间考验的.
2,java引用与C语言指针的区别是什么java引用与C语言指针的区别有以下几方面:1、现象指针在运行时可以改变其所指向的值 , 而引用一旦和某个对象绑定后就不再改变,总是指向最初的对象 。2、编译程序在编译时分别将指针和引用添加到符号表上,符号表上记录的是变量名及变量所对应地址 。指针变量在符号表上对应的地址值为指针变量的地址值,而引用在符号表上对应的地址值为引用对象的地址值 。符号表生成后就不会再改,因此指针可以改变指向的对象(指针变量中的值可以改),而引用对象不能改 。3、类型引用其值为地址的数据元素,java封装了的地址,可以转成字符串查看,长度可以不必关心;C指针是一个装地址的变量,长度一般是计算机字长,可以认为是个int 。4、内存占用所占内存:引用声明时没有实体,不占空间 。C指针如果声明后会用到才会赋值 , 如果用不到不会分配内存 。5、内存溢出JAVA引用的使用权限比较小,不会产生内存溢出 。C指针是容易产生内存溢出的,所以程序员要小心使用,及时回收 。6、本质JAVA中的引用和C中的指针本质上都是想通过一个别名,找到要操作的目标(变量对象等),方便在程序里操作 。所不同的是JAVA的办法更安全,使用更加方便些,但没有了C的灵活,高效 。
3,Java引用和C指针的区别1.类型:引用其值为地址的数据元素,java封装了的地址,可以转成字符串查看,长度可以不必关心 。C++指针是一个装地址的变量,长度一般是计算机字长,可以认为是个int 。2.所占内存: 引用声明时没有实体 , 不占空间 。C++指针如果声明后会用到才会赋值 , 如果用不到不会分配内存 。3.类型转换:引用的类型转换,也可能不成功,抛异,或者IDE就不能通过 。C++指针只是个内存地址,指向那里,对程序来说还都是一个地址,但可能所指的地址不是程序想要的!4.初始值:引用初始值为java关键字null 。C++指针是INT , 如不初始化指针,那他的值就不是固定的了 。5.计算:引用是不可以计算的 。C++指针是INT,所以他可以计算,所以经常用指针来代替数组下标 。6.控制:引用不可以计算 , 所以他只能在自己程序里,可以被控制 。C++指针是内存地址,也可以计算,所以他有可能指向了一个不归自己程序使用的内存地址,对于其他程序来说是很危险的 , 对自己程序来说也是不容易被控制的 。7.内存泄露:JAVA引用不会产生内存泄露 。C++指针是容易产生内存泄露的 , 所以程序员要小心使用,及时回收 。8.作为参数:JAVA的方法参数只是传值 , 引用做为参数使用时候,回给函数内引用的值的COPY,所以在函数内交换两个引用参数是没意义的,因为函数只交换的参数的COPY值,但在函数内改变一个引用参数的属性是有意义的,因为引用参数的COPY所引用的对象是和引用参数是同一个对象 。C++指针做为参数给函数使用,实际上就是他所指的地址在被函数操作 , 所以函数内用指针参数的操作都将直接作用到指针所指向的地址(变量,对象 , 函数,等等) 。9.操作符和声明:java里用"." 。C++指针用"->" 用"*"声明指针 。(似乎这条没什么用?。 ?0.本质:java中的引用和C++中的指针本质上都是想通过一个叫做引用或者指针的东西 , 找到要操作的目标(变量 对象等),方便在程序里操作 。所不同的是JAVA的办法更安全,方便些,但没有了C++的灵活,高效 。java中的引用和C++中的指针,他们最好不要混在一起,也不要认为是一回事,只不过他们的作用有些相似,总叫人不自觉的对比 。但在我们写JAVA程序的时候最好忘记C++的指针,写C++程序的时候,也不要老惦记着JAVA的引用 。只要记得引用无大?。踩豢杉扑?,强转时要小心就好了 。参考http://blog.csdn.net/b271737818/article/details/3931913c++也有引用啊 和java的一样指针的特别之处在于指针可以直接对内存进行操作 新定义的指针如果没有给它手动指向一块内存的话(就是给指针赋值)指针就可能指向任意内存 如果你修改这个指针指向的值的话 可能造成包括系统崩溃在内各种意想不到的情况. 所以指针在安全性上有一定问题(不过用好指针的话真的很方便)引用是完全安全的 你怎么用也不可能造成指针上面那样的后果java由于上边说的原因吧指针给隐藏了 不能由程序员自己调用 但是实际上java还是有指针的...比如那个很常见的 空指针异常.JAVA的引用和C++的引用,二者本质上是不同的,c++中一个引用指向的地址不会改变 , 改变的是指向地址的内容,然而java中引用指向的地址在变 。如果非要对比着看,那么Java中的“引用”倒是和C/C++的指针更像一些,和C++的“引用”很不一样 。C++的“引用”是从一而终的 , 而Java的“引用”可以改变被引用的对象 。这些内容在java教程里都可以读到 , 我学过c++,java,现在从事as3开发,对这三门语言都区别过,望楼主采纳个人感觉java引用使用上和c++的指针差不多 。java引用可以为null,指针也可以 。java引用和c++的指针一般都要new一个对象才能用 。不过语法上又像c++的引用 , 可以直接用成员访问符,仅此而已 。其实c++的指针和引用本身区别也没有多少 , 引用这个概念就是从c语言 , 指针扩展来的 。【java引用传递和c指针,JAVA引用 与 C 的指针】
4,java引用与C语言指针的区别是什么首先, 在Java中, 不存在引用传递(也就是地址传递)一说, 全部都是值传递, 自然, 在使用对象时实际上都是使用的引用\x0d\x0a\x0d\x0aJava语言明确说明取消了指针 , 因为指针往往是在带来方便的同时也是导致代码不安全的根源,同时也会使程序的变得非常复杂难以理解,滥用指针写成的代码不亚于使用早已臭名昭著的"GOTO"语句 。Java放弃指针的概念绝对是极其明智的 。但这只是在Java语言中没有明确的指针定义,实质上每一个new 语句返回的都是一个指针的引用,只不过在大多时候Java中不用关心如何操作这个"指针",更不用象在操作C++的指针那样胆战心惊 。\x0d\x0a\x0d\x0a非也,基本类型数据存放在Stack中,存放的是数据 。而产生对象时 , 只把对象的reference存放在stack中,用于指向某个对象,对象本身存放在Heap中 。\x0d\x0a\x0d\x0a还有, 调用方法时传递的参数以及在调用中创建的临时变量都保存在栈(Stack)中,速度较快 。其他变量,如静态变量、实例变量等 , 都在堆(Heap)中创建,速度较慢 。另外,依赖于具体的编译器/JVM,局部变量还可能得到进一步优化 。\x0d\x0a\x0d\x0a从实现上来讲,引用可以理解为一种受限的指针,引用底层可以采用指针来实现,也可以采用句柄的方式实现 。早期jvm一般采用句柄的方式 , 现在的jvm , 比如sun的 , IBM的 , 一般就是用指针来实现 。\x0d\x0a\x0d\x0a不过从语言的角度来将 , 没有必要把java的引用和C的指针来比较 。\x0d\x0a\x0d\x0a指针是可以进行与整数做加减运算的 , 两个指针之间也可以进行大小比较运算和相减运算 。\x0d\x0a\x0d\x0a引用不行,只能进行赋值运算 。\x0d\x0a\x0d\x0a当然有区别\x0d\x0a\x0d\x0aA a=new A();\x0d\x0a\x0d\x0a你可以 a=a+1;吗? 指针就可以

    推荐阅读