首页 > 编程语言 >Java只有值传递!!!

Java只有值传递!!!

时间:2022-10-15 19:44:42浏览次数:46  
标签:Java cmower 传递 sop 引用 Cmower main 只有

记录一下!才知道java中没有引用传递!!

首先看什么是值传递和引用传递

值传递(pass by value)

值传递是指在调用方法时将实参复制一份传递到方法中,这样当方法对形参进行修改时不会影响到实参。

引用传递(pass by reference)

引用传递是指在调用方法时将实参的地址直接传递到方法中,那么在方法中对形参所进行的修改,将影响到实参。

简单说就是看 调用方法时有没有对实参进行复制。方法内对形参的修改会不会影响到实参。

基本数据类型肯定是值传递这个没有争议

问题是引用类型难度不是引用传递吗?

看代码

public class Cmower {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public static void main(String[] args) {
        Cmower cmower = new Cmower();
        cmower.setName("我是main");
        cmower.sop(cmower);
        System.out.println("main 中的 cmower " + cmower.getName());
    }

    public void sop(Cmower cmower) {
        cmower.setName("我是sop");
        System.out.println("sop 中的 cmower " + cmower.getName());
    }
}

结果

sop 中的 cmower 我是sop
main 中的 cmower 我是sop

这么一看不对啊,这不就是引用传递嘛!

我们在代码中加上一个对象对比一下

Cmower cmower = new Cmower();
cmower.setName("我是main");

Cmower old = cmower;
cmower.sop(cmower);
System.out.println("main 中的 cmower " + cmower.getName());

System.out.println(old == cmower);

结果

sop 中的 cmower 我是sop
main 中的 cmower 我是sop
true

这回看出来了,确实是值传递,引用类型在调用有参方法的时候,传递的是对象的引用,并不是对象本身。而对象的引用在传递的过程中并没有发生改变,虽然对象本身发生了变化。

总结

基本类型作为参数被传递时肯定是值传递;引用类型作为参数被传递时也是值传递,只不过“值”为对应的引用。

标签:Java,cmower,传递,sop,引用,Cmower,main,只有
From: https://www.cnblogs.com/Cloong/p/16794888.html

相关文章

  • 温控采集器对接-java版-modbus4j
    @​​TOC​​​​​​看此文说明你已经了解了modbus协议,这里不再赘述​​业务需求采集冷柜温控采集器的温度,web端显示各个冷柜的温度(​​定时采集​​)需求分析1,采集温度2.......
  • 力扣454(java&python)-四数相加 II(中等)
    题目:给你四个整数数组nums1、nums2、nums3和nums4,数组长度都是n,请你计算有多少个元组(i,j,k,l)能满足:0<=i,j,k,l<nnums1[i]+nums2[j]+nums3[k]+......
  • Java核心技术阅读笔记(第四章)
    Chapter4对象与类作者:Denis版本:1.0编写时间:2022/10/15编写地点:中国山西省4.1类与对象的概述可以把类想象为一个模具,利用类能够创造出很多同属于一个物种但参......
  • Java:语言相关知识
    版本新功能5泛型、枚举、自动装拆箱、foreach循环、可变参数静态导入(无需指定类名,直接调用静态结构,前提是导包)内省6:GUI7switch-字符串泛型集合:泛型实例化类......
  • Java学习笔记1
    1.自动抽取代码的快捷键:Ctrl+Alt+M  2.随机生成0-(n-1)范围内的整数:Randomr=newRandom();intrandomIndex=r.nextInt(n); 3.批量修改一个变量名的快捷键Shift+F6,......
  • Java引用传递-初级
    Java引用传递-初级packageoop;//引用传递,对象。本质还是值传递publicclassDemo04{  publicstaticvoidmain(String[]args){    Personperson=new......
  • java值传递
    Java值传递packageoop;​importzxw.base.Demo04;​publicclassDemo03{  publicstaticvoidmain(String[]args){    inta=1;    System.o......
  • java语法(数据类型,运算符)
                                           整数型byte.short.int.long      ......
  • javaweb
    学习文档:https://blog.csdn.net/qq_36188127/article/details/109370717学习视频:https://www.bilibili.com/video/BV12J411M7Sj网站访问流程:1.输入一个域名,回车,2.检查本机......
  • java的第一个程序
    1、创建JAVA工程单击File--new--project,打开如下对话框,选择Java--project,如下图:单击next,会看到下图,在project名称中输入 一个名字 如Chap1 单击Finish,即完成......