Tag: 原语

使用原始类型和包装类的varargs重载时为什么会出现模糊错误?

我不明白为什么在这里的情况1,它没有给出编译错误,相反在情况2(varargs),它给出了编译错误。 任何人都可以详细说明编译器在这两种情况下的差异吗? 我经历了很多关于它的post,但还不能理解它。 情况1 public class Test { public void display(int a) { System.out.println(“1”); } public void display(Integer a) { System.out.println(“2”); } public static void main(String[] args) { new Test().display(0); } } 输出为: 1 案例#2 public class Test { public void display(int… a) { System.out.println(“1”); } public void display(Integer… a) { System.out.println(“2”); } public static […]

比较对象和原语,运算符==如何在Java中工作?

例如: Long objectLong = 555l; long primitiveLong = 555l; System.out.println(objectLong == primitiveLong); // result is true. 是否有调用objectLong.longValue()方法来比较Long to long或者其他一些方式?

在Java中是int对象吗?

更确切地说,int是Integer类的一部分(一个精简版或其他东西)还是完全不同的东西? 我知道int是一个值类型而Integer是一个引用类型,但int是否仍然从Objectinheritance? (我假设在这方面int,long,boolean等都是相似的。为方便起见,只选择了int)

Java中的原始vs对象类型

这个问题在我脑海中浮现,因为我已经在某处读过Java不是纯粹的面向对象语言,因为它使用的是原语(不是对象)。 我可以同意。 现在我的问题是为什么我们在使用相同类型的Object时使用primitives/wrappers ? 作为一个例子,如果我们考虑Integer ,它与除了对象行为之外的int具有相同的值限制。 为什么Java仍然在这些条件下使用primitives ? 正如我的观点,如果Java只使用对象类型Autoboxing和Unboxing不需要。 顺便说一下,String也没有原语。

为什么.NET不会从Web服务反序列化我的原始数组?

救命! 我有一个由C#应用程序使用的Axis Web服务。 一切都很好,除了长值数组总是遇到[0,0,0,0] – 正确的长度,但值不反序列化。 我尝试过其他原语(整数,双打),同样的事情发生了。 我该怎么办? 我不想改变我的服务的语义。

Concat整数到字符串 – 从性能和内存的角度来看,使用字符串文字或原语?

选项1: String newStr = someStr + 3 + “]”; 选项2: String newStr = someStr + “3” + “]”; 在性能,记忆和一般实践方面哪个选项更好? 我可以使用哪些推荐的工具/方法来测量代码的内存使用情况及其性能(除了测量开始时间和结束时间以及计算差异)

原始类型的用途/目的是什么?

我最近了解到JVM中的原始类型有类表示。 例如, int.class , double.class ,甚至是void.class 。 我不明白为什么会有这些。 它们似乎没有任何function性作用。 使用reflection,我搜索了类,它们没有构造函数,没有方法,也没有字段。 出于所有意图和目的,它们似乎空洞无用。 原始类型变量甚至不是它们各自类的实例,如下面的返回false所示: int a = 3; int.class.isInstance(a); 那他们为什么存在呢? 他们必须为某些目的服务,可能是编译器或其他东西,但不管它是什么都完全超出我的意义。 在Integer API中甚至有一个对int.class的显式引用(对于每个基本类型及其相应的包装器对象也是如此)。 在JLS中,我无法找到任何关于它们存在的参考,更不用说它们的用途了。

什么“>>>”在java中意味着什么?

我发现此代码在SOpost中找到重复项。 但是我不明白这行是什么意思int mid = (low + high) >>> 1; private static int findDuplicate(int[] array) { int low = 0; int high = array.length – 1; while (low >> 1; System.out.println(mid); int midVal = array[mid]; if (midVal == mid) low = mid + 1; else high = mid – 1; } return high; }

我什么时候应该使用原语而不是包装对象?

实际上这是一个类似的主题,几乎没有实际价值。 据我所知,原语表现更好,应该在任何地方使用,除了需要与对象相关的function(例如null检查)的情况。 对?

Java Double vs double:类类型与原始类型

我很好奇Java的类和double的原始类型之间的性能差异。 所以我创建了一个小基准测试,发现类类型比基本类型慢3到7倍。 (在本地机器OSX上为3倍,在ideone上为7倍) 这是测试: class Main { public static void main(String args[]) { long bigDTime, littleDTime; { long start = System.nanoTime(); Double d = 0.0; for (Double i = 0.0; i < 1432143.341; i += 0.1) { d += i; } long end = System.nanoTime(); bigDTime = end – start; System.out.println(bigDTime); } { long start […]