在C#中,int并且Int32是同样的事情,但我读了许多那个时代int优于Int32没有给出理由.有原因,我应该关心吗?
I have no idea why these lines of code return different values:
System.out.println(Integer.valueOf("127")==Integer.valueOf("127"));
System.out.println(Integer.valueOf("128")==Integer.valueOf("128"));
System.out.println(Integer.parseInt("128")==Integer.valueOf("128"));
Run Code Online (Sandbox Code Playgroud)
The output is:
true
false
true
Run Code Online (Sandbox Code Playgroud)
Why does the first one return true and the second one return false? Is there something different that I don't know between 127 and 128? (Of course I know that 127 < 128.)
Also, why does the third one return true?
I have read the answer of this question, but I still didn't get …
以下代码抛出NullPointerException:
int num = Integer.getInteger("123");
Run Code Online (Sandbox Code Playgroud)
我的编译器是否getInteger在null上调用,因为它是静态的?这没有任何意义!
发生了什么?
观察这种情况让我非常困惑:
Integer i = null;
String str = null;
if (i == null) { //Nothing happens
...
}
if (str == null) { //Nothing happens
}
if (i == 0) { //NullPointerException
...
}
if (str == "0") { //Nothing happens
...
}
Run Code Online (Sandbox Code Playgroud)
因此,我认为首先执行装箱操作(即java尝试从中提取int值null),并且比较操作具有较低的优先级,这就是抛出异常的原因.
问题是:为什么在Java中以这种方式实现它?为什么拳击优先于比较参考?或者为什么他们没有null在拳击前实施验证?
目前,当NullPointerException使用包装的基元抛出它时看起来不一致,并且不会抛出真正的对象类型.
运行以下Java代码:
boolean b = false;
Double d1 = 0d;
Double d2 = null;
Double d = b ? d1.doubleValue() : d2;
Run Code Online (Sandbox Code Playgroud)
为什么会出现NullPointerException?
在Java中,所有数字类型都从java.lang.Number扩展.拥有如下方法是一个好主意:
public boolean areEqual(Number first, Number second) {
if (first != null && second != null) {
return first.equals(second);
}
}
Run Code Online (Sandbox Code Playgroud)
我担心双重2.00000不等于int 2的情况.这些是由内置等于处理吗?如果没有,有没有办法在java中编写一个简单的数字比较函数?(apache commons等外部库都可以)
实际上这里是一个类似的主题,没什么实际价值.据我所知,原语表现更好,应该在任何地方使用,除了需要与对象相关的功能(例如null检查)的情况.对?
我是Java的新手,并且在整数数组中检查null元素时遇到问题.我正在使用Eclipse进行编辑,并且检查null元素的行显示错误:
抱怨的行:
if(a[i] != null) {
Run Code Online (Sandbox Code Playgroud)
来自Eclipse的错误信息:
The operator != is undefined for the argument type(s) int, null
Run Code Online (Sandbox Code Playgroud)
在PHP中,这没有任何问题,但在Java中,似乎我必须将数组类型从整数更改为Object以使该行不被抱怨(如下所示)
Object[] a = new Object[3];
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,如果我仍然想要声明为整数数组并且仍然想要检查null,它的语法是什么?
码:
public void test() {
int[] a = new int[3];
for(int i=0; i<a.length; i++) {
if(a[i] != null) { //this line complains...
System.out.println('null!');
}
}
}
Run Code Online (Sandbox Code Playgroud) 我在Java中有一个带方法签名的函数
public void myMethod (int someInt, String someString)
Run Code Online (Sandbox Code Playgroud)
在我的抽象类中,我用方法覆盖了它
public void myMethod (Integer someInt, String someString)
Run Code Online (Sandbox Code Playgroud)
过度骑行不起作用.这是不一致吗?我认为自动装箱也适用于方法签名覆盖.
考虑以下基础知识:
Object生活只在堆上,Object和Integer IS-A Object我发现自己很难回答这么简单的问题:JVM之间int[]和Integer[] 内部有什么区别吗?或者仅在"编译时"才有意义?
java ×9
integer ×3
arrays ×2
autoboxing ×2
comparison ×2
int ×2
api-design ×1
boxing ×1
c# ×1
null ×1
numbers ×1
object ×1
performance ×1
primitive ×1