今天给各位分享java中类似c语言指针的是什么的知识,其中也会对c语言有指针Java语言没指针进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
J***a中的对象就相当于C中的指针,this相当于指针的指针,这样说对不对
J***a中没有指针,J***a中的引用对应C语言中的指针。
c++里不能用this 点的 ,因为this是指针不是对象,在C++中this指针就是代表对象 ,更本质的说法就是对象的内存地址, 比如 class test {} ; test ob; test *p = //这时ob的值和 this指针的值是一样的。
J***a关键字this只能用于方法方法体内。当一个对象创建后,J***a虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是 this。
j***a也一样,this是方法的一个额外的参数,这个参数是调用方法时传进来的。调用的时候总是要一个实例比如:xxx.tostring(),xxx就是this的实参。j***a和C++唯一不同的是,this在C++是一个指针参数,而j***a是引用参数。
一般来讲,C++中的this指针代表的就是当前的类对象的指针,不需要自己额外的写。而在你的语句中,就是把指针a赋给了指针This,和AClass* That = (AClass*)a没什么区别,而且这个a指针没有初始化,是个野指针。
namespace是命空间。class是C#中的关键字,用来声明类。如果把命名空间比作文件夹,那么类就是文件夹中的文件,在调用不同命名空间中的类时就要用using来指向所需要的类的命名空间。
为什么J***A不可以用“==”来比较两个字符串是否相等
先说结论,不能。两个对象进行比较,如果使用==符号,那么比较的是这两个对象的“引用”(类似C语言中指针的概念)。
在J***a中,使用==比较两个字符串的值并不能得到正确的结果。这是因为==比较的是对象的引用地址,而不是对象的内容。当使用`new`关键字创建字符串时,会在堆内存中创建一个新的字符串对象。
因为 abc 是String类型。 字符相比较 是不能用等号的。
在j***a中,不能用“==”和“!=”来判断两个字符串是否相等。因为String是引用类型,而不是基本数据类型。故它们的比较是使用地址和值 来比较,因为它们是不同的对象,有不同的地址。
d);//true System.out.println(c==d);//这时应该是false,因为new出来的话会申请不同的地址,而==号就是比较他们的地址(j***a没有指针,***设是地址)结论:不要用==来判断字符串是否相等,要使用equals方法。
String s2 = new String(str);如果用==号比较,会返回false,因为创建了两个对象,他们在内存中地址的位置是不一样的。equals的情况比较复杂,它是j***a.lang.Object类中的一个方法。
j***a里hashcode相当于C语言中的指针么?
j***a直接用==比较两个值,相当于c++里面比较两个指针的地址。
j***a里没有想c语言那样的地址操作。也完全没有必要使用变量地址。而且j***a并不是直接执行而是通过j***a虚拟机执行,没有地址的概念。
hashcode和物理地址没关系,只是一种约定,并非强制性的。主要是为相关哈希集合及运算服务的。再具体的部分要看jdk关于hashcode的解释了。
J***a没有办法打印字符串的地址,因为在J***a虚拟机中已经不用指针了。引用在虚拟机中是不能直接反回值的。你还是放弃这种想法吧。
实际上,由 Object 类定义的 hashCode 方法确实会针对不同的对象返回不同的整数。(这一般是通过将该对象的内部地址转换成一个整数来实现的,但是 J***aTM 编程语言不需要这种实现技巧。
j***a中类似c语言指针的是什么的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言有指针j***a语言没指针、j***a中类似c语言指针的是什么的信息别忘了在本站进行查找喔。