文章目录

  • 1.基本数据类型【值传递】
  • 2.引用数据类型【地址值传递】
    • (1)情况1
    • (2)情况2

1.基本数据类型【值传递】

2.引用数据类型【地址值传递】

(1)情况1

public class Demo {String str = "成员变量";char[] ch = {'a', 'b', 'c'};public void change(String s, char[] ch) {s += "局部变量";ch[0] = 'd';}public static void main(String[] args) {Demo demo = new Demo();demo.change(demo.str, demo.ch);System.out.println(demo.str);System.out.println(demo.ch);}
}

运行结果:

分析:str是引用数据类型,调用方法时将str对应的引用地址赋值给方法的参数s【此时str和s均指向同一个地址】,方法内部执行【 s += “局部变量”】,因为String是final修饰的不可变字符串,两对象相加后的新字符串与原字符串不是同一个对象,地址引用肯定不同,因此s会被重新赋值引用地址,此时str和s指向不同的地址,str指向原地址,s指向新地址

(2)情况2

public class Demo {String str = "成员变量";StringBuilder sb = new StringBuilder("成员变量");public void change(String s1, StringBuilder s2) {s1 += "局部变量";s2.append("局部变量");}public static void main(String[] args) {Demo demo = new Demo();demo.change(demo.str, demo.sb);System.out.println(demo.str);System.out.println(demo.sb);}
}

运行结果:

分析:调用方法时,方法参数s1和s2接收的都是地址引用值,但执行【 s1 += “局部变量”;】时,是将一个新对象的地址引用赋值给s1;而执行【s2.append(“局部变量”);】时,是将在原地址的基础上修改对象

Java中的值传递和地址值传递相关推荐

  1. Java中的参数传递,到底是值传递还是引用传递?

    文章内容为转载,转载自公众号Hollis关于我要彻底给你讲清楚,Java就是值传递,不接受争辩的那种! 原文链接:我要彻底给你讲清楚,Java就是值传递,不接受争辩的那种! 知乎回答链接:Java 到 ...

  2. Java中两数交换引发的值传递问题及解决方案

    Java中两数交换引发的值传递问题及解决方案 今天导师分享了一个有趣的代码,记录一下,让我们一起看看~ //交换两个整数 private static void swap(int i, int j) ...

  3. java中如果需要返回多个值怎么办

    Java中如果需要返回多个值怎么办 首先我们明确一下:java方法的返回值只有一个,但是返回值的类型不限 有一种编程语言可以返回多个值 Python,实例如下:  运行结果如下: [whuang@hu ...

  4. Java中ListE对象赋值问题(引用传递和值传递)

    Java中List<E>对象赋值操作问题 业务需求是:取2个集合中的交集对象并返回.如下代码,busMap中key值和stocks中Map中的key值相等的对象则返回继续操作,也就是说剔除 ...

  5. java什么会引用传递_在java中为什么很多人说有值传递和引用传递?引用传递的本质...

    首先,不要纠结于 Pass By Value 和 Pass By Reference 的字面上的意义,否则很容易陷入所谓的"一切传引用其实本质上是传值"这种并不能解决问题无意义论战 ...

  6. 关于Java中的对象的哈希值何时相等

    本文出处:http://blog.csdn.net/chaijunkun/article/details/7624328,转载请注明.由于本人不定期会整理相关博文,会对相应内容作出完善.因此强烈建议在 ...

  7. java中8种数据类型和默认值所占字节数

    java 8种基本数据类型的默认值及所占字节数 通过一段代码来测试一下 8种基本数据类型的默认值 1 package dierge; 2 3 public class Ceshi { 4 int a; ...

  8. Java中boolean型变量的默认值问题

    1.首先分析Java中的三种不同变量的区别,如下表所示   概念 默认值 其他 类变量 也叫静态变量,是类中独立于方法之外的变量 用static 修饰 有默认初始值,系统自动初始化. 如boolean ...

  9. java中string类型的哈希值是怎么计算的

    在 Java 中,字符串类型的哈希值是通过 String 类的 hashCode() 方法计算的.这个方法会通过将字符串的每个字符转换成一个整数,然后将它们进行某种数学运算来得到最终的哈希值. 具体来 ...

最新文章

  1. Vue011_ 内置指令与自定义指令
  2. Verify the Developer App certificate for your account is trusted on your device.
  3. ubuntu mysql开发_ubuntu linux mysql 开发模式与连接编译
  4. 恒大汽车参展车辆竟全都是模型;华为官宣卖车,门店连夜上新摆车...
  5. 问题解决:error LNK2038: 检测到“_MSC_VER”的不匹配项: 值“1700”不匹配值“1800”
  6. 大致看了下伍德里奇的《计量经济学导论》
  7. 奥地利邮政服务推出加密收藏邮票
  8. 有一个函数y=x(x「1),y=2x-1(1「=x「10),y.=3x-11(x」=10)。写一段程序,输入x,输出y值
  9. F-Groundhog Looking Dowdy2020牛客暑期多校训练营(第九场)(尺取法)
  10. 福大软工 · 第八次作业 课堂实战+后续部分
  11. linux账号密码延期90天命令,Linux(CentOS)用户修改密码有效期(chage命令)
  12. 画太极(echarts)
  13. 2020中级计算机工程师,2020年上半年中级网络工程师报考详解
  14. 怎样写一个简单的操作系统?
  15. trunk端口配置的PVID
  16. 快播3在线安装程序变身快播下载器 vb 源代码以及调用方法
  17. [UVM]UVM Component之Subscriber
  18. hostapd的配置项ht_capab
  19. 2018年外卖产品竞品分析
  20. 蓝牙android rssi测距,基于 RSSI 的蓝牙测距

热门文章

  1. 宏观经济数据今日公布●金融改革新政近期出台
  2. 快充协议诱骗芯片大全:XSQ10支持9V12V15V20V
  3. 我们DevSkim、Jarvis和USG是这样子的
  4. 如何修改Ubuntu的分辨率
  5. h3c服务器增加硬盘,H3C服务器硬盘配置Raid
  6. 使用idea将dev分支合并到master分支
  7. 科学论文写作工具TEX/LaTEX/CTEX
  8. 通信协议-GMSL(千兆多媒体串行链路)
  9. 高企认定评分标准有哪些?
  10. python2.7下的urllib和urllib2