Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.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的意思是一样的吗?_Java_C++ - Fatal编程技术网

在c++;java的意思是一样的吗?

在c++;java的意思是一样的吗?,java,c++,Java,C++,在java中,基元类型变量是否算作对象?例如,variable1in int variable1=10; 算作一个对象?或者variable1只是对对象的引用? 我认为 Valuab1是C++中的一个对象。这是否正确?variable1在Java中不是对象-它只是基本类型,并保存您在内存中分配给它的实际值。什么是对象? < C++和java中的对象对象的一般含义是相同的。简而言之,对象既可以具有状态,也可以具有转换、检查或利用该状态的操作。这在两种语言中都是正确的。在这两种特定语言中,另一件事

在java中,基元类型变量是否算作对象?例如,
variable1
in

int variable1=10;
算作一个对象?或者
variable1
只是对对象的引用?
我认为 Valuab1是C++中的一个对象。这是否正确?

variable1在Java中不是对象-它只是基本类型,并保存您在内存中分配给它的实际值。

什么是对象? < C++和java中的对象对象的一般含义是相同的。简而言之,对象既可以具有状态,也可以具有转换、检查或利用该状态的操作。这在两种语言中都是正确的。在这两种特定语言中,另一件事是对象是“类”的特定实例,它描述了对象的特性(其支持的接口),以及如何访问和维护其可用操作和状态(其“实现”)。一个有用的类比是,一个对象就像一座房子,是根据蓝图(类)建造的

基本类型是对象吗?

<强>简短回答< /强>:对于java,C++没有,是的。< /P> Java 在Java中不要算作对象。这是非常明确的,因为基元类型不是从超类

对象
(每个对象都是其实例的特殊类)继承的

Java中的基元类型和对象类型之间还有其他区别,即基元类型是“按值传递”(这意味着当您将它们传递到方法或将它们分配给变量时,会复制它们的数据),而对象是“按引用传递”,这意味着当您将它们传递到方法或将它们分配给变量时,获取对数据的引用的副本(对一个引用的状态的操作会更改其他引用看到的状态)。因为像
int
这样的基本类型是通过值传递的,所以我们还可以判断它们不是对象

C++ 一个可以让原始类型不是C++对象的论点是,原始类型不是任何类的实例。然而,c++11提供了一个方便的判断来检查给定类型是否为对象类型。对于int这样的基本类型,这将返回
true
,这可能结束了争论

截至2014年的报告包括以下内容:

对象是一个存储区域。。。对象由定义、新表达式或实现(如果需要)创建

(第1.8节:删除内部参考)

因此,对于C++,占用内存并由上述机制之一创建的任何数据都作为对象来计数。这将包括诸如

int
之类的基本类型,因为基本类型的实例占用内存,并由上述机制之一创建(
int variable1=2;
视为本规范第3.1节中定义的定义)

C++值/引用/地址 您还询问了变量是否是C++中的引用。C++没有java所做的“所有对象都是引用”规则。C++实际上提供了灵活性来决定如何围绕数据和引用进行移动。您可以通过引用(类似于Java)、值(复制所有数据)或地址/指针(类似于引用,您可以使用多个指针操作单个对象的数据,但有一些额外的自由/责任)。看

int variable1=10的特定示例中
variable1
按值而不是按引用或地址保持
10

在Java中封装为对象的基本类型 Java中的许多东西都围绕着数据是对象的概念(例如:如果它是对象,则只能将项放入
Java.util.List
)。因此,能够将基本类型视为对象有时会很有用。出于这个原因(为了提供一些与基本类型相关的有用实用程序),Java语言为所有基本类型提供了包装器类,允许您将它们用作对象

见: ,
在Java中,原语不是对象或引用。它们是原语,完全不同于对象。不,不是。它仍然是一个原始数据类型。AFAIK,是的,它是在C++中,而不是在java中。我不同意你关于C++的看法。Kerrek谢谢你的提示。我已经调整了我的答案。C++总是把对象的定义定义为“存储区域”,所以,如果你想迂回定义,它就不同于你从其他语言中所预期的。实际上,在某些上下文中,使用“对象”作为类变量可能更容易。@chris:Meh,那是一堆蠕虫。当我教人们对象的存储时间时,我不想让任何人认为静态向量和静态整数在某种程度上是不同的。我不能说java,但是请不要让C++变得比现在复杂。@ KerrekSB,好的,我会买的。和augray,§1.8[简介对象]/1包含定义。对于该语言的其他版本,您可以参考该标准的其他草案。