Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Java是否区分了值类型和引用类型_C#_Java_Value Type_Reference Type - Fatal编程技术网

C# Java是否区分了值类型和引用类型

C# Java是否区分了值类型和引用类型,c#,java,value-type,reference-type,C#,Java,Value Type,Reference Type,C#区分了这两者。java做的相同还是不同?在java中,所有对象和枚举都是引用类型,所有原语都是值类型。在复制语义方面,两者之间的区别与C#中的相同,但不能在Java中定义新的值类型。在Java中,原语是值类型,类和数组是引用类型。实际上,Java中的所有内容都是按值传递的,引用是一种特殊的值类型,就像C中的指针是值一样。有关语义的更多信息,请参见: C,另一方面,确实有一个与参考值无关的L+C++的真实引用…还有比这更令人困惑的吗?可能重复的请在提问前搜索。这是一个完全相同的副本,这是搜

C#区分了这两者。java做的相同还是不同?

在java中,所有对象和枚举都是引用类型,所有原语都是值类型。在复制语义方面,两者之间的区别与C#中的相同,但不能在Java中定义新的值类型。

在Java中,原语是值类型,类和数组是引用类型。

实际上,Java中的所有内容都是按值传递的,引用是一种特殊的值类型,就像C中的指针是值一样。有关语义的更多信息,请参见:


C,另一方面,确实有一个与参考值无关的L+C++的真实引用…还有比这更令人困惑的吗?

可能重复的请在提问前搜索。这是一个完全相同的副本,这是搜索“java引用值”的第一个结果:@Andy:这根本不是关于通过引用传递。java 10中有计划添加值类型。您可以这样看:在java中,所有内容都作为值传递,但某些对象可能是可变的。-1不,java中并非所有内容都是值。Java对象不是值;没有办法将对象作为值传递,它们不会像值一样被复制。在C中,一切都是值,包括指针,可以在此基础上构建引用语义。在Java中,引用语义是内置的,不可能像访问C结构作为值那样访问底层对象。@bames53当然,我刚刚编辑了我的答案,以使其比我们讨论的参数传递更清晰。我们无法访问实际数字并不意味着它不存在。“Java中的一切都是按值传递的”Java对象不是按值传递的。@bames32这是因为Java不支持“对象”作为参数。它只支持原语类型和引用(又称指针),它们是值:换句话说,Java缺乏创建“快速”高效值类型的能力?@Pacerier:目前在Java中是不可能的(2014)。一些人正在研究它:
intx
Integer x
之间有区别吗?查看java
Integer.java
源代码,它能说明它是作为值还是作为引用传递的吗?@Shimmy:int(一种基本类型)和Integer(一个类)之间有很多区别。目前,所有Java类,如
Integer
,都被视为引用类型。这意味着要传递对
Integer
对象的引用。(旁注:这与Java没有的通过引用不同。请参阅以获取完整的解释。)