Ⅰ java引用 与 C 的指针
数组就是指针,是固定的指针,不能变更的指针。
·引用只能在定义的时候赋值,或者作为函数的参数
·引用定义的数据与没有引用前的数据是同一数据,不同的名称,相当于给旧数据引新名称
·引用一旦定义,就不能改变,只能在定义时指定,并且其他所有的地方都不能去改变引用关系
当然,指针与引用之间的关系并非是一讲半讲的内容能够交待得很透切.
我却认为JAVA的使用相对安全,而且这也是大多数人认为的。
Ⅱ java的引用和c里面的指针有何不同String直接赋值和String new出来的有何区别
你好!你的问题太长了,而且,我没有抓住重点。
所以就你题目来进行部分解答,希望对你有所帮助。
java的引用和c里面的指针有何不同?
这个我也说不好,java的引用 想当于C的指针,是在JVM堆中的一个地址指向。
如果要说不同,的话,就是我们不能对JVM做什么,只能对它存储的值进行操作。
而C是可以对内存进行操作的。
String直接赋值和String new出来的有何区别?
String str = "hello";
String str = new String("hello");
这两个,在结果上没有区别。
细微的区别就是 java重写了“” 这个符号 "" 与 new String();这是等同的。
"hello" 是在 堆 中创建了一个对象,并直接赋值。
new String("hello"); 是创建了两个对象。
"hello" 创建 了第一个对象。 new String(str) 利用第一个对象的值,创建了第二个对象。
Ⅲ 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++指针用"->" 用"*"声明指针。(似乎这条没什么用!)
10.本质:java中的引用和C++中的指针本质上都是想通过一个叫做引用或者指针的东西,找到要操作的目标(变量 对象等),方便在程序里操作。所不同的是JAVA的办法更安全,方便些,但没有了C++的灵活,高效。
java中的引用和C++中的指针,他们最好不要混在一起,也不要认为是一回事,只不过他们的作用有些相似,总叫人不自觉的对比。但在我们写 JAVA程序的时候最好忘记C++的指针,写C++程序的时候,也不要老惦记着JAVA的引用。只要记得 引用无大小,安全,不可计算,强转时要小心就好了。
Ⅳ 什么是java引用 和C++里的指针和引用有什么区别
个人感觉Java引用使用上和C++的指针差不多。Java引用可以为null,指针也可以。java引用和C++的指针一般都要new一个对象才能用。
不过语法上又像C++的引用,可以直接用成员访问符,仅此而已。
其实C++的指针和引用本身区别也没有多少,引用这个概念就是从C语言,指针扩展来的。
Ⅳ 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++指针用"->" 用"*"声明指针。(似乎这条没什么用!)
10.本质:java中的引用和C++中的指针本质上都是想通过一个叫做引用或者指针的东西,找到要操作的目标(变量 对象等),方便在程序里操作。所不同的是JAVA的办法更安全,方便些,但没有了C++的灵活,高效。
java中的引用和C++中的指针,他们最好不要混在一起,也不要认为是一回事,只不过他们的作用有些相似,总叫人不自觉的对比。但在我们写
JAVA程序的时候最好忘记C++的指针,写C++程序的时候,也不要老惦记着JAVA的引用。只要记得
引用无大小,安全,不可计算,强转时要小心就好了。
参考
http://blog.csdn.net/b271737818/article/details/3931913
Ⅵ Java中的对象类型的引用到底是不是指针
java中并没有指针的概念,指针是C和C++里面的概念。 在java中,指针已经被其他的语法所取代,学习起来更加轻松。 以下是java中指针的体现: 比如: Person p = new Person(); p叫做Person类的一个引用,或者是地址。这个和C中的指针地址概念是一...
Ⅶ java中引用类型的变量与c中指针变量的区别
区别应该很多,理解这些区别应该是建立在对C的指针和对Java引用类型的高度理解之上2的。
这里说下自己的理解:java中的引用类型可以看成是C中指针概念的封装。C中指针是一个数值,可以进行各种运算(算术、逻辑、位),但是在java中,这些功能被封装,是无法使用的。
根据本题的其他回答更新:java中的参数传递是按值传递当传递的是基础类型的值时,那么会将此值复制一份传递,当传递的是引用类型时候,将会把此引用类型的指针 值复制一份传递。比如:public void test(Person p){....}方法中对p的操作,是直接对P在内容中对应的数据直接操作,而不是将P对应的内容中的数据复制一份传递到test方法中。
Ⅷ 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++指针用"->" 用"*"声明指针。(似乎这条没什么用!)
10.本质:java中的引用和C++中的指针本质上都是想通过一个叫做引用或者指针的东西,找到要操作的目标(变量 对象等),方便在程序里操作。所不同的是JAVA的办法更安全,方便些,但没有了C++的灵活,高效。
java中的引用和C++中的指针,他们最好不要混在一起,也不要认为是一回事,只不过他们的作用有些相似,总叫人不自觉的对比。但在我们写
JAVA程序的时候最好忘记C++的指针,写C++程序的时候,也不要老惦记着JAVA的引用。只要记得
引用无大小,安全,不可计算,强转时要小心就好了。
Ⅸ java的引用就是C或者C++里说的指针吗
个人感觉java引用使用上和c++的指针差不多。java引用可以为null,指针也可以。java引用和c++的指针一般都要new一个对象才能用。
不过语法上又像c++的引用,可以直接用成员访问符,仅此而已。
其实c++的指针和引用本身区别也没有多少,引用这个概念就是从c语言,指针扩展来的。
Ⅹ java引用与C语言指针的区别是什么
java引用与C语言指针的区别有以下几方面:
1、现象
指针在运行时可以改变其所指向的值,而引用一旦和某个对象绑定后就不再改变,总是指向最初的对象。
2、编译
程序在编译时分别将指针和引用添加到符号表上,符号表上记录的是变量名及变量所对应地址。指针变量在符号表上对应的地址值为指针变量的地址值,而引用在符号表上对应的地址值为引用对象的地址值。符号表生成后就不会再改,因此指针可以改变指向的对象(指针变量中的值可以改),而引用对象不能改。
3、类型
引用其值为地址的数据元素,java封装了的地址,可以转成字符串查看,长度可以不必关心;C指针是一个装地址的变量,长度一般是计算机字长,可以认为是个int。
4、内存占用
所占内存:引用声明时没有实体,不占空间。C指针如果声明后会用到才会赋值,如果用不到不会分配内存。
5、内存溢出
JAVA引用的使用权限比较小,不会产生内存溢出。C指针是容易产生内存溢出的,所以程序员要小心使用,及时回收。
6、本质
JAVA中的引用和C中的指针本质上都是想通过一个别名,找到要操作的目标(变量对象等),方便在程序里操作。所不同的是JAVA的办法更安全,使用更加方便些,但没有了C的灵活,高效。