Tag: 包装器

为什么int在java中自动更改为Integer?

当我将原始类型int放入java中的ArrayList时,为什么原始类型int会自动更改为对象Integer?

“实现包装器方法”是什么意思?

我得到了一个编程任务,我要做的一件事是实现方法,它是一个包装器方法,依赖于另一种方法来从最低到最高的坐标排序。 我不确定实现包装器方法的确切含义。 static void sortCoordsByZ(double[][] coords) { //implement the wrapper method for the recursive sort method. all work is done the recursive sort method } static void recursiveSort(double[][] coords, int lo, int hi) { //recursive sort method }

使用原始类型和包装类的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 […]

将Integers与==进行比较究竟做了什么?

编辑:好的,好的,我误读了。 我不是将int与Integer进行比较。 正好指出。 我的SCJP书说: 当==用于将基元与包装器进行比较时,包装器将被解包,并且比较将是原始的。 所以你认为这段代码会打印出来: Integer i1 = 1; //if this were int it’d be correct and behave as the book says. Integer i2 = new Integer(1); System.out.println(i1 == i2); 但它打印false 。 另外,根据我的书,这应该打印为true : Integer i1 = 1000; //it does print `true` with i1 = 1000, but not i1 = 1, and one of […]

为什么Java在声明原始数据类型时不允许null

这是对我之前的问题的继续,并且是对这个问题的答案的回答 Java将原始数据类型包装到包装类然后为什么 char c = null; // invalid int i = null; // invalid 不允许但是 Character cObj = null; // valid Integer iObj = null; // valid 被允许。

如何将可执行JAR文件打包到EXE中

我想将我的最终版本部署为带有应用程序Icon的EXE。 做这个的最好方式是什么? 常见的做法是什么?

Java包装类真的是不可变的吗?

Java Wrapper类应该是不可变的。 这意味着一旦创建了一个对象,例如, Integer i = new Integer(5); 它的价值无法改变。 但是,做 i = 6; 完全有效。 那么,在这种情况下,不变性意味着什么呢? 这与自动装箱/拆箱有关吗? 如果是这样,有没有办法阻止编译器这样做? 谢谢

原始类型和包装类之间的主要区别是什么?

这两行有什么区别? int pInt = 500; 和 Integer wInt = new Integer(pInt); 要么 Integer wInt = new Integer(500);

如何同时使用ByteArrayOutputStream和DataOutputStream(Java)

我在这里遇到了很多问题,我认为这是因为我不太了解如何使用Java提供的API。 我需要将一个int和一个byte[]写入一个byte[] 我想过使用DataOutputStream来解决使用writeInt(int i)和write(byte[] b)的数据写入,并且为了能够将它放入一个字节数组,我应该使用ByteArrayOutputStream方法toByteArray(). 我知道这个类使用Wrapper模式,所以我有两个选择: DataOutputStream w = new DataOutputStream(new ByteArrayOutputStream()); 要么 ByteArrayOutputStream w = new ByteArrayOutputStream(new DataOutputStream()); 但在这两种情况下,我都“松散”了一种方法。 在第一种情况下,我无法访问toByteArray()方法,而在第二种情况下,我无法访问writeInt()方法。 我应该如何一起使用这些课程?

从MATLAB调用Java

我一直在使用Swig为用C ++编写的库创建Java包装器。 包装器生成一个包然后jar 。 文件编译正确并与java完美配合,但我无法从MATLAB中调用它。 我尝试在MATLAB中的静态Java路径文件中添加jar路径,然后调用jar文件中的类,但是我得到错误”Undefined variable or class..”或者如果我尝试使用javaObject(…) “No class * can be located on Java class path” 。 我不确定我做错了什么。 编辑: 为了测试从MATLAB调用c ++库,我创建了一个简单的“数据读取器”类,它包含一个将随机生成的vector< vector >写入文本文件的函数和一个读取它的函数。 生成的swig文件是: SimpleReader.java , DoubleVector.java , exampleJNI.java , example.java , com.example.reader包中的DoubleVector2.java 。 这些被编译并打包到example.jar (生成的库dll也被打包到jar中)。 一切正常,从java调用它所以问题必须特定于MATLAB。 MATLAB没有太多代码,因为似乎没什么用。 我得到了 javaclasspath(‘c:/reader/reader.jar’); obj = com.example.reader.SimpleReader; 此时我得到’Undefined variable “com” or class “com.example.reader.SimpleReader”‘