JAVA基础学习之路(十一)引用传递

 引用传递:

不同栈内存可以指向同一块堆内存,不同栈内存可以对一块堆内存进行修改

 

范例一:

class Message {private int num = 10;public Message(int num) {this.num = num;}public void setNum(int num) {this.num = num;}public int getNum() {return this.num;}
} public class test1 {public static void main(String args[]) {Message msg = new Message(30);fun(msg);//引用传递
        System.out.println(msg.getNum());}    public static void fun(Message temp) {temp.setNum(100);}
}
//输出  100

 

内存分析:


 

 

范例二:

public class test1 {public static void main(String args[]) {String msg = "hello";fun(msg);//引用传递
        System.out.println(msg);}    public static void fun(String temp) {temp = "world";}
}//输出:hello

输出结果仍为hello,msg的值没有被改变

原因:String类对象的内容一旦声明,则不可改变。对象内容的改变,依靠的是引用地址的改变

 

范例三:

class Message {private String info = "nihao";public Message(String info) {this.info = info;}public void setInfo(String info) {this.info = info;}public String getInfo() {return this.info ;}
} public class test1 {public static void main(String args[]) {Message msg = new Message("hello");fun(msg);//引用传递
        System.out.println(msg.getInfo());}    public static void fun(Message temp) {temp.setInfo("world");}
}//输出world

 

内存分析:

 

 

class Member {private int mid;private String name;private Member child;private Car car;public Member(int mid, String name) {this.mid = mid;this.name = name;}public String getInfo() {return "编号:"+this.mid+"\n"+"名字"+this.name;    }public void setCar(Car car) {this.car = car;    }public Car getCar() {return this.car;    }public void setChild(Member child) {this.child = child;}public Member getChild() {return this.child;}
}class Car {private Member member;private String name;public Car(String name) {this.name = name;}public String getInfo() {return "车的名字"+name;}public void setMember(Member member) {this.member = member;}public Member getMember() {return this.member;}
}public class test1 {public static void main(String args[]) {Member m = new Member(1,"张三");Member ch = new Member(2,"李四");Car c = new Car("宝马");Car cc = new Car("奔驰");m.setCar(c);c.setMember(m);ch.setCar(cc);cc.setMember(ch);m.setChild(ch);System.out.println(m.getCar().getInfo());System.out.println(c.getMember().getInfo());System.out.println(m.getChild().getCar().getInfo());}    
}

 

转载于:https://www.cnblogs.com/xhnxhnu/p/9141704.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/266929.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle 压缩导出 导入,EXP直接导出压缩问津,IMP直接导入压缩文件的方法

在10G之前,甚至在10G的Oracle环境中,有很多数据量不大,重要性不太高的系统依然采用EXP/IMP逻辑导出备份方式,或者,作为辅助备份方式。通常情况下,我们都是这样操作的:1.exp导出2.gzip压缩3.gzip…

Confluence 6 针对你的数据库类型确定校验 SQL

不同的数据库通常要求不同的 SQL 校验查询。校验查询通常需要尽可能的简单,这个查询在链接从数据库连接池中取出的时候都会被执行一次。 针对不同的数据库类型,我们推荐先的校验查询 SQL: MySQLselect 1Microsoft SQL Serverselect 1Oraclese…

c#oracle数组超出,c# – ODP.net填充数据集时的Oracle Decimal Number精度问题.异常:算术运算导致溢出...

我在c#.net 2(Visual Studio 2005 SP1)中工作,尝试使用来自Oracle10g数据库的select * from table的结果填充数据集. .net框架,IDE和数据库不能在此客户端站点更改.我使用ODP.net提供商连接,dll版本是2.102.2.20当我运行fill命令时,我得到一个例外:算术运算导致溢出…

php常见数据类型转换与判断

2019独角兽企业重金招聘Python工程师标准>>> 强制类型转换问题: (array) false > array(0>) (array) true > array(0>1) (array) null >array( ) 进行类型转…

Maven deploy部署jar到远程私服仓库

一、配置私服账号密码 修改maven配置文件,在$MAVEN_HOME/conf/setting.xml中增加如下配置: 注意,这里配置的id为releases何snapshots,当然可以改为其他,先记得这里有过id的配置,后面有用 二、配置远程发布到…

sublime怎么编译php,让sublime编译php、js

一、PHP1、将PHP程序设置到环境变量中,以使在任意目录下都可执行php命令。关于这个,linux下和windows下分别又不同的方法,可以网上搜索到。2、创建PHP编译系统添加 PHP 的 build system,如图所示, Tools->Build Sys…

HDU-Yuna's confusion 树状数组 Or Multiset

比赛的时候竟然没有想到这题可以用树状数组过,由于数字的区间比较小,所以直接开设一个树状数组,定义sum(i) 表示小于i的数的总数。那么判定一个数是否有的条件就是计算sum(i1) sum(i) 便可以了,查找第K大的数,也就可以…

linux系统etc什么意思,etc.是什么意思 linux下的etc是什么意思

Etc是Electronic the collection的缩写,指电子不停车收费系统,是指车辆在通过收费站时通过车上安装的Etc车载系统与收费站之间微波通讯,进行车辆识别,再联合网络和银行进行自动扣费的一种新型收费模式。电子不停车收费系统(英语&a…

《几何与代数导引》例2.7.3

求$yz$面上二次曲线\begin{equation}\begin{cases}\frac{z^2}{c^2}-\frac{y^2}{a^2}1\\x0\\\end{cases}\end{equation}绕$z$轴旋转所得的二次曲面的方程.解:对于二次曲面上的任意点$p(x,y,z)$.都存在相应的二次曲面上的点$(x_0,y_0,z_0)$,使得\begin{equation}(x-x_…

【Leetcode】【Longest Palindromic Substring】【最长回文子串】【C++】

题目:给定字符串,求其最长的回文子串说明:给定字符串长度为1000以内。思路:for循环遍历字符串,求以i为中心的回文子串长度。与最长回文子串长度max_len比较,若大于max_len,则更新max_len。说明&…

万里长征,始于足下——菜鸟程序员的学习总结

最近一直的谈论如何学习,如何做笔记,学习方法是否正确?(发现问题——创新的原动力)为什么开始系统化学习了,反而暴露许许多多的问题?细想也并不是很多,这都是过去的遗留问题&#xf…

linux命令添加文件权限,linux 的常用命令及文件权限管理

一些常规命令# 切换目录cd /www/app# 显示当前目录绝对路径pwd# tab键可以自动补全路径,命令;及提示选择,自动补全、避免输入错误、tab# 创建文件夹mkdir test# 创建文件touch 123.txt# 创建文件并打开vi 123.txt# 查看文件、more 之后&#…

SSM整合笔记

SSM整合笔记 1&#xff0c;创建maven项目 创建maven项目过程省略 ps&#xff1a;如果创建完maven项目之后项目报错&#xff0c;可能是没有配置Tomcat 2&#xff0c;在pom.xml里面导入相应的jar的依赖 <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi…

linux jetty 安装目录结构,Linux下Jetty 9安装部署

Jetty简介Jetty是一个开源的servlet容器&#xff0c;它为基于Java的web内容&#xff0c;例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的&#xff0c;它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象&#xff0c;可以迅速为一些独立运行(sta…

[AX]AX2012开发新特性-全文索引

全文索引在索引中识别字符串字段中使用空格隔开的单词&#xff0c;不像普通索引仅仅使用字符串的第一个单词&#xff0c;这样能加快对字符串字段的搜索。AX2012支持每个表有一个且只能有一个全文索引&#xff0c;索引可以包含多个字段&#xff0c;对字段字符串长度没有限制&…

Bootstrap 学习笔记8 下拉菜单滚动监听

代码部分&#xff1a; <nav class"navbar navbar-default"><a href"#" class"navbar-brand">web开发</a><ul class"nav navbar-nav"><li><a href"#html5">HTML5</a></li>&…

怎么在linux的cmd中运行c项目,如何在cmd窗口编译运行c语言程序?

/这个很简单&#xff0c;只需要下载一个C/C编译器&#xff0c;添加一下环境变量&#xff0c;之后就能在cmd窗口中编译运行C语言程序了&#xff0c;下面我简单介绍一下实现过程&#xff0c;主要内容如下&#xff1a;1.下载C/C编译器&#xff0c;这里可以下载MinGW&#xff0c;包…

HTML基础DW使用教程

1、打开文件拓展名&#xff1a; 方法一.打开计算机→组→文件夹和搜索选项→查看&#xff0c;把隐藏拓展名的勾取掉。 方法二.打开计算机→文件夹选项→查看&#xff0c;把隐藏拓展名的勾取掉。 2.桌面新建一个记事本&#xff0c;把.txt后缀改成HTML。 3.右键打开方式&#xff…

eclipse中设置svn的commit快捷键

这样还没有完成&#xff0c;网上大多只有这一步 点Windows>>customize Perspective 勾上svn就可以了.......转载于:https://blog.51cto.com/2820354/963916

查询Linux系统网卡流量负载,超好用linux系统查询网卡等流量参数的工具,分享给大家!!!...

超好用linux系统查询网卡等流量参数的工具&#xff0c;分享给大家&#xff01;&#xff01;&#xff01;工作中大家或许会遇到这类情况&#xff1a;托管服务器流量超出限额&#xff0c;可是突然又不能像windows主机那样通过QQ管家或者360卫士等软件工具那样很直观的测出服务器的…