关于变量的作用域03

本文深入探讨Java中参数传递机制,区分基本类型与引用类型的不同,并通过示例代码演示字符串和数组作为参数时的行为差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package bisic;
/**
 *
 * 这里需要解释一下,java基本类型(byte、int、char、long、float、double、boolean和short)是传值,也就是传的是副本,
 * 而其余传的是引用(所谓引用传递就是把对象的引用地址传进函数,而不是像值传递那样产生一个副本),
 * 对于字符串对象来说,虽然在参数传递的时候也是引用传递,
 * 但是java虚拟机在函数内部对字符串对象进行了特殊处理--视String对象为常量(final)
 *  所以对传进来的引用地址所引用的string对象比能直接进行修改,而是产生一个副本对其进行操作,对其进行的操作不会影响原来的值。
 *  这就是为什么字符串和数组都是引用传递,字符串没变而数组变了的原因
 *
 */
public class VariableZion2 {
   
 static String str="ggggggg"; 
    static char ch[]={'a','b','c'};
    static int i = 1;
   
 public static void main(String[] args) {
        
        VariableZion2 cha=new VariableZion2();
        cha.change(str,ch,i);
        //对于一个对象调用方法,起不起作用,看它传递的是引用(可以改变),
        //还是基础类型或者final类型的值传递,(操作的是副本)
        System.out.println(str);//没变
        System.out.println(ch);//传递引用,改变
        System.out.println(i);//没变
 }  
  void change(String str,char ch[],int i){
   str = "hello  ok";
   //this.str = str;
   //这样的话就改变了 因为这里它们都是成员变量,通过方法里的局部变量给成员变量赋值了
   //想想构造函数的作用
   ch[0] = 'k';
   i = 100;
  }
}

  

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值