栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java 值传递与引用传递注意事项

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java 值传递与引用传递注意事项

Java 值传递与引用传递注意事项
  • 值传递:即参数为基本数据类型,形参改变不会改变实参

    public class Main {
        public static void main(String[] args) {
            Tool t = new Tool();
            int a = 1, b = 100;
            System.out.println(a + "t" + b);//输出1 100
            //调用方法,在栈中开辟空间运行,两形参进行交换,实参不变
            t.swap(a, b);
            System.out.println(a + "t" + b);//输出1 100
        }
    }
    
    class Tool {
        public void swap(int a, int b) {
            //交换a,b的值
            a = a ^ b;
            b = a ^ b;
            a = a ^ b;
        }
    
  • 引用传递:即参数为引用类型(数组、对象等),形参改变可以改变实参,也可以不改变实参

    • 改变实参:

      public class Main {
          public static void main(String[] args) {
              Tool t = new Tool();
              //堆中开辟数组
              int[] arr = {1, 2, 3};
              System.out.println(arr[0]);//输出1
              //调用方法,在栈中开辟空间,形参指向堆中数组,同时修改
              //堆中数组
              t.alterArr(arr);
              System.out.println(arr[0]);//输出1000
          }
      }
      
      class Tool {
          public void alterArr(int[] arr) {
              arr[0] = 1000;
          }
      }
      
    • 不改变实参:

      public class Main {
          public static void main(String[] args) {
              Tool t = new Tool();
              Person p = new Person();
              //初始化对象
              p.name = "李华";
              p.age = 18;
              System.out.println(p.age);//输出18
              //调用方法,在栈中开辟空间,形参虽指向空,但并未修改堆
              //中对象数据
              t.alter(p);
              System.out.println(p.age);//输出18,并非抛出异常
          }
      }
      
      class Tool {
          public void alter(Person p) {
              p = null;//令p指向空
          }
      }
      
      class Person {
          String name;
          int age;
      }
      
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/273447.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号