Java初学者笔记:为什么调用方法时不会改变形参为int型(基本数据类型)的值,却会改变形参为数组或对象(引用数据类型)的值或属性的值?

本文探讨了Java中调用方法时,为何基本数据类型的参数(如int)不会改变,而数组或对象(引用数据类型)的值会变。原因涉及到栈和堆的不同存储方式。在调用方法后,基本类型在不同栈中保持独立,而引用类型在栈中仅复制地址,导致对同一堆内存结构的共享修改。
摘要由CSDN通过智能技术生成

请看下面例子,调用了method()后,为什么int型的n值没变,但是数组内部的值会变?(基本数据类型不变,引用数据类型内部的值会变)

public class Test {
   
    public static void main(String[] args) {
   
        int n = 0;
        int[
Java中,如果形参声明为Object类,但实际传入的是int,那么在方法内部,这个形参会被视为一个Object类对象。 当将int传递给Object类形参Java会自动进行装箱操作,将int封装为Integer对象。因此,在方法内部,该形参将被当作Integer类对象来处理。 在方法内部,您可以对这个形参执行Object类的方法,也可以将其强制转换为其他类(如Integer)进行进一步操作。请注意,在进行强制类转换,需要确保实际传入的是兼容的,否则可能会出现ClassCastException异常。 下面是一个示例代码,演示了将int传入Object类形参的情况: ```java public class Example { public static void main(String[] args) { int number = 10; printValue(number); } public static void printValue(Object obj) { // obj在方法内部被视为一个Object类对象 System.out.println("Value: " + obj.toString()); // 将obj强制转换为Integer类 Integer integerObj = (Integer) obj; // 对Integer对象执行操作 int value = integerObj.intValue() + 5; System.out.println("Value + 5: " + value); } } ``` 在上面的示例中,我们将int传递给了printValue方法的Object类形参。在方法内部,我们首先通过toString方法将其转换为字符串进行输出,然后将其强制转换为Integer类,并进行其他操作。 需要注意的是,如果传入的不是兼容的类(例如传入一个String类),在进行强制类转换会引发ClassCastException异常。因此,在使用Object类形参,需要确保传入的的类是正确的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值