相关疑难解决方法(0)

Java是"通过引用传递"还是"传递价值"?

我一直认为Java是传递引用的.

但是,我看过一些博客文章(例如,这个博客)声称它不是.

我不认为我理解他们所做的区别.

解释是什么?

java methods parameter-passing pass-by-reference pass-by-value

6270
推荐指数
80
解决办法
189万
查看次数

什么是Java中的.intValue()?

他们之间有什么区别?

l 是一个整数类型的arraylist.

版本1:

int[] a = new int[l.size()];
for (int i = 0; i < l.size(); i++) {
    a[i] = l.get(i);
}
return a;
Run Code Online (Sandbox Code Playgroud)

版本2:

int[] a = new int[l.size()];
for (int i = 0; i < l.size(); i++) {
    a[i] = l.get(i).intValue();
}
return a;
Run Code Online (Sandbox Code Playgroud)

java

31
推荐指数
3
解决办法
8万
查看次数

java自动装箱/拆箱如何工作?

从JDK 5.0开始,自动装箱/拆箱是在java中引入的,技巧简单而有用,但是当我开始测试包装类和原始类型之间的不同转换时,我真的很困惑自动装箱的概念如何在java中工作,例如:

拳击

int intValue = 0;
Integer intObject = intValue;
byte byteValue = 0;
intObject = byteValue; // ==> Error
Run Code Online (Sandbox Code Playgroud)

尝试不同的情况下(后short,long,float,double),这是由编译器所接受的唯一情况是,当值的上做作运算符右侧的类型是int.当我查看我的源代码时Integer.class发现它只实现了一个带int参数的构造函数.

所以我的结论是自动装箱的概念是基于包装类中实现的构造函数.我想知道这个结论是否属实,还是有自动拳击使用的另一个概念?

拆箱

Integer intObject = new Integer(0);
byte byteValue = intObject; // ==> Error (the same Error with short)
int intValue = intObject; 
double doubleValue = intObject;
Run Code Online (Sandbox Code Playgroud)

关于拆箱的结论是包装类给出了对应的类型(Integer==> int)包装的值,然后编译器使用通常的转换基元类型的规则(byte=> short=> int=> long=> float=> double).我想知道这个结论是否属实,还是自动拆箱使用了另一个概念? …

java autoboxing unboxing

16
推荐指数
1
解决办法
9226
查看次数

Java整数池.为什么?

我到处都读到,当你在Java中定义-128到127之间的整数时,它不是创建一个新对象,而是返回一个已创建的对象.

除了让新手程序员比较Integer对象==以查看它们是否是相同的数字之外,我认为没有任何其他的做法,但我认为这很糟糕,因为他们确实认为他们可以比较任何整数==,并且也是教学任何编程语言的不良做法:比较两个"不同"对象的内容==.

为什么要这样做还有其他原因吗?或者在设计语言时(在我看来)像JavaScript中的可选分号一样,这只是一个错误的决定?

编辑:我在这里看到他们解释了行为:为什么整数常量池的行为在127处变化?

我问为什么他们设计它有这种行为,而不是为什么这种行为发生.

java object-comparison

5
推荐指数
1
解决办法
3100
查看次数