Java 为什么我可以将原语传递给接受对象的方法?
为什么可以将原语传递给接受对象的方法?基本体是否已变成对象?比如int=Integer和boolean=boolean 我可以调用以下函数:Java 为什么我可以将原语传递给接受对象的方法?,java,pass-by-reference,primitive,pass-by-value,Java,Pass By Reference,Primitive,Pass By Value,为什么可以将原语传递给接受对象的方法?基本体是否已变成对象?比如int=Integer和boolean=boolean 我可以调用以下函数: hash(41, 0); public static int hash(int seed, Object object) { int result = seed; if(object == null) { return hash(result, 0);
hash(41, 0);
public static int hash(int seed, Object object)
{
int result = seed;
if(object == null)
{
return hash(result, 0);
}
else if(!isArray(object))
{
result = hash(result, object.hashCode());
}
else
{
int length = Array.getLength(object);
for(int index = 0; index < length; ++index)
{
Object item = Array.get(object, index);
// prevent looping if item in array references the array itself
if(!(item == object))
{
result = hash(result, item);
}
}
}
return result;
}
hash(41,0);
公共静态整数散列(整数种子,对象)
{
int结果=种子;
if(object==null)
{
返回散列(结果为0);
}
如果(!isArray(对象))
{
result=hash(result,object.hashCode());
}
其他的
{
int length=Array.getLength(对象);
对于(int-index=0;index
是的,你可以。编译器会自动完成一些名为的操作。以下是这些文件的摘录
自动装箱是Java编译器进行的自动转换
在基元类型及其相应的对象包装器之间
上课。例如,将int转换为整数,将double转换为
双倍,等等。如果转换方向相反,则这是
叫做拆箱
是的,这叫做拳击转换。int
值被“装箱”为一个整数
,它是一个对象
。它从1.5版开始在Java中可用
列出了可用的装箱转换:
装箱转换将基元类型的表达式转换为
引用类型的对应表达式。具体来说
以下九种转换称为装箱转换:
- 从布尔类型到布尔类型
- 从类型字节到类型字节
- 从短型到短型
- 从类型char到类型char
- 从int类型到Integer类型
- 从long类型到long类型
- 从类型float到类型float
- 从double类型到double类型
- 从空类型到空类型
int
0
正在传递给需要对象的方法。中列出了装箱转换作为方法调用转换的一种方法:
方法调用上下文允许使用以下内容之一:
- 身份转换(§5.1.1)
- 扩大原语转换(§5.1.2)
- 拓宽参考转换(§5.1.5)
- 装箱转换(§5.1.7)后可选加宽参考
转化
- 拆箱转换(§5.1.8)后可选加宽
原语转换
是的,原语转换为对象,反之亦然,这个概念称为装箱和拆箱。在较新版本的java中,这是自动完成的,因此称为自动装箱和自动取消装箱
每个原语都有相应的包装器类
- 整数->整数
- 布尔->布尔
- 字符->字符
诸如此类。是否使用哈希(41,0)调用哈希(int-seed,Object-Object)?
int i = 1;
Integer boxI = i; // Autoboxing is performed automatically by the compiler
Integer ii = 1;
int i = ii; // Auto(un)boxing is performed automatically by the compiler