首页 > 编程语言 >Java中值传递相关问题

Java中值传递相关问题

时间:2023-03-11 18:24:03浏览次数:40  
标签:Java String 形参 System 传递 Person ex 中值 out

Java中只存在值传递,不存在引用传递

1. 如果形参是基本数据类型,那么形参拷贝的是实参变量的值

2. 如果形参是引用数据类型,那么形参拷贝的是实参变量的地址。二者本质都是值

  • 如果形参是 String 类型,像下面这种情况,由于 String 的不可变性,实参 str 始终都是“tarena”这个值
public class Example{
    String str=new String("tarena");
    char[]ch={'a','b','c'};
    public static void main(String args[]){
        Example ex=new Example();
        ex.change(ex.str,ex.ch);
        System.out.print(ex.str+" and ");
        System.out.print(ex.ch);
    }
    public void change(String str,char ch[]){
   //引用类型变量,传递的是地址,属于引用传递。
        str="test ok";
        ch[0]='g';
    }
}
  • 形参是引用数据类型,而在该方法中两个引用发生了交换。那么是不会影响实参的,因为形参只是实参地址值的一个拷贝,不会影响实参
public class Person {
    private String name;
   // 省略构造函数、Getter&Setter方法
}

public static void main(String[] args) {
    Person xiaoZhang = new Person("小张");
    Person xiaoLi = new Person("小李");
    swap(xiaoZhang, xiaoLi);
    System.out.println("xiaoZhang:" + xiaoZhang.getName());
    System.out.println("xiaoLi:" + xiaoLi.getName());
}

public static void swap(Person person1, Person person2) {
    Person temp = person1;
    person1 = person2;
    person2 = temp;
    System.out.println("person1:" + person1.getName());
    System.out.println("person2:" + person2.getName());
}

标签:Java,String,形参,System,传递,Person,ex,中值,out
From: https://www.cnblogs.com/pzistart/p/17206650.html

相关文章

  • java基础二-面向对象的三大特性
    面向对象的是三大特性封装一.概念将类的信息隐藏在类的内部,不允许外部程序直接访问,通过类提供的方法实现对隐藏信息的操作和访问封装的两大原则尽可能多的东西藏起......
  • 01-面试必会-JAVA基础篇
    1.Final有什么用?被final修饰的类不可以被继承被final修饰的方法不可以被重写被final修饰的变量不可以被改变,被final修饰不可变的是变量的引用,而不是引用指向的内容,......
  • Java并发基础知识
    进程与线程进程,程序的一次执行过程,系统运行程序的基本单位。启动main函数,即启动JVM的一个进程,mian函数为其主线程。同类多个线程共享进程的堆和方法区资源,切换工作负担......
  • Java内存模型:Java解决可见性和有序性问题的方案
    Java内存模型并发场景下,可见性/原子性/有序性是并发编程Bug源头,而Java内存模型解决了可见性和有序性问题。Java内存模型定义可见性问题原因是缓存,有序性问题原因是编译......
  • Java基础之并发——CAS操作
    CAS操作的内存地址V,旧的预期值A,即将要更新的目标值B的获取顺序是:首先,读取内存地址V的值;然后,读取旧的预期值A的值;最后,读取即将要更新的目标值B的值。CAS操作是原子性的,因......
  • Java流程控制
    Scanner对象Java给我们提供了这样一个工具类,我们可以获取用户的输入。我们可以通过Scanner类来获取用户的输入Scanners=newScanner(System.in);通过Scanner类的......
  • Java运行程序占用CPU100%故障排查
          通过进程查线程,查看线程是否正常                 ......
  • 使用AidLux在安卓手机上搭建一个java服务器
    背景我有一部旧手机,功能完好,后盖碎了,卖不了几个钱,但是12G的内存512G的空间让我舍不得丢,作为一个程序员,平常也会写一点demo玩玩,就想着拿这部旧手机当作一台服务器使用。Ai......
  • JavaDoc文档注释
    JavaDoc文档注释/***@authorhuangjilin*@version1.0*@since1.8*///类注释publicclassDoc{Stringname;/**......
  • Java基础 - 基本数据类型,基本数据类型之间的运算规则,引用数据类型
    基本数据类型:1.整数类型 类型:byte,short,int,long字节:byte1字节,short2字节,int4字节,long8字节容量:byte-128~127,short-3万~3万左右,-20亿~20亿左右,long特别大默认字......