I was reading More Joel on Software when I came across Joel Spolsky saying something about a particular type of programmer knowing the difference between an int and an Integer in Java/C# (Object-Oriented Programming Languages).

那么,有什么不同呢?

推荐答案

In Java,"int"类型是基元,而"Integer"类型是对象.

In C#,"int"类型与System.Int32相同,是a value type(即更像java的"int").整数(就像任何其他值类型一样)可以被boxed("包装")到一个对象中.


对象和原语之间的区别有些超出了这个问题的范围,但总结一下:

Objects提供多态功能,通过引用传递(或者更准确地说,具有通过值传递的引用),并且从heap分配.相反,primitives是通过值传递的不可变类型,通常从stack分配.

Java相关问答推荐

Java中Stream(java.util.stream)和linkedList数据 struct 之间是什么关系?

同时运行JUnit测试和Selenium/Cucumber测试时出现问题

缩小画布比例后更改滚动窗格的内部大小

给定Java枚举类,通过值查找枚举

错误:在Liferay7.4中找不到符号导入com.liferay.portal.kernel.uuid.PortalUUID;";

通过合并Akka Streams中的多个慢源保持订购

使用Testcontainers与OpenLiberty Server进行集成测试会抛出SocketException

使用Mockito进行的Junit测试失败

更新GWT 2.5.1到2.11.0和sencha GXT 3.1.1到4.1时出现错误

在Java中如何从Executors.newFixedThreadPool(MAX_THREAD_COUNT())迁移到虚拟线程

使用Jolt将字段转换为列表

Docker不支持弹性APM服务器

在macOS上读取文件会导致FileNotFound,即使文件存在(并且具有权限)

Cordova Android Gradle内部版本组件不兼容

如何在盒子的顶部和底部创建两张不同图片(大小相同)的盒子?

在JDK Flight Recorder中只记录单个线程

循环不起作用只有第一个元素重复

Java嵌套流查找任意值

由于版本不匹配,从Java 8迁移到Java 17和Spring 6 JUnit4失败

如何在更改分辨率时将鼠标坐标计算为世界坐标