对象与原语
object vs. primitive
最近有一个面试官要求我定义对象和原语之间的区别。似乎是一个奇怪的问题,因为所有的语言都是从一个原始语开始的。你会怎么回答这个问题?
我还应该注意到,这次面试是针对前端开发职位的,所以他所指的语言(我猜)是JavaScript。
原语是一种不由其他数据类型组成的数据类型,不能进一步分解。它就像编程场景中的原子。我说原子,是因为原子是物质的基本单位,没有任何东西可以从它推导出来。
我的意思是,C中的int
不能分解成更小的数据类型。另一方面,一个物体可以被认为是一个分子,由一个以上的原始类型组成。例如,string
是c++标准库的一部分;然而,它是一个对象,它内部由较小的数据类型组成,并包含方法。
与 Java :
- 原语不是由其他数据类型组成的。作为一个对象
- 原语通过值传递,即原语本身的副本是过去了。而对于对象,则传递引用的副本,而不是对象本身。
- 原语是独立的数据类型,即不存在它们的层次结构/超类。而每个Object都是class的后代"对象"。
- 每个对象都有一些它自己的默认方法,它继承了这些方法从Object类(例如toString(), clone(), wait(), notify(),notifyAll(),等等)。原语没有任何方法
- 原语是不可变的,不需要任何特殊的修饰就可以这样使用它们护理。而对于物体,需要特别小心,它们是 对于对象,有两种类型的拷贝,浅拷贝和深拷贝。在那里是它们之间的显著区别。所以选择取决于我们打算如何使用它们。对于原语,没有这样的
让我们可视化一下实际的差异。
原语
1)原始数据类型使用少量内存来表示单个数据项。相同基本类型的所有数据大小相同。
例如:基本类型int表示使用32位的整数。所有int类型的变量都使用32位
2) Java中只有八种基本数据类型:byte、short、int、long、float、double、char和boolean。Java程序不能定义任何其他基本数据类型。
对象对象是一大块内存,它可能包含大量数据以及处理这些数据的方法(小程序)。Java标准提供了数以千计的对象类,程序员可以轻松地创建额外的类。(虽然有成千上万的标准类,但对于这门课程,你只需要熟悉十几个类。)
我认为primitive不能像int, string(如内置数据类型)那样被分割.另一方面,对象也可以分成数组、结构体等小块。
我只是一个学生,这是我的观点。
如果你认为我的答案错了,你可以纠正我。
由于
在Java中,当您将k字段发送给测试方法时,首先将其转换为Integer类型。因为基本类型不是Object类型的子类型之一。
public static void main(String[] args) {
int k=3;
test(k);
test2(k);
}
private static void test(Object k) {
System.out.print(k.getClass().isPrimitive());//false
}
private static <T> void test2(T k) {
System.out.print(k.getClass().isPrimitive());//false
}
- JavaScript 原语:相同的内存位置、新的内存位置或依赖于引擎
- 为什么我们在javascript中使用“var”而不是String或Number或Boolean(原语)
- JavaScript:Object vs True(或其他原语)相等比较(性能/优化)
- ng-repeat无法解析阿拉伯语对象
- Cesiumjs中实体和原语的区别是什么
- Javascript中字符串对象到字符串原语的转换
- Javascript对象与原语
- Javascript - 原语如何真正工作
- 将字符串转换为原语
- 无效的JSON原语- Asp.Net MVC 4
- React.js中的非原语默认道具
- 对象与原语
- 使用node.js和gm绘制许多图形原语的方法是什么?
- 如何“设置对象属性”处理派生对象(这与设置原语有什么不同)
- 混淆原型链、原语和对象
- 继承方法到除原语以外的所有对象
- 测试变量是否为原语而不是对象
- 原语和对象
- 在Javascript中对象或原语的类型转换更快
- JavaScript中的原语和对象包装等效性