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,一经查实,立即删除!

相关文章

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的配置,后面有用 二、配置远程发布到…

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

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

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

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

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…

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…

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

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

WPF的转换器中使用Brush应注意问题

1、Brushes用错了命名空间将导致程序无法正确工作。笔者曾写了一个flag值转换为相应的Brush&#xff0c;由于不小心Using了一个错误的命名空间&#xff08;System.Drawing&#xff09;导致Xaml文件界面元素Fill绑定属性总出不来应有的效果。最后费了好大劲才发现&#xff0c;替…

XamarinAndroid组件教程RecylerView适配器设置动画示例

XamarinAndroid组件教程RecylerView适配器设置动画示例 【示例1-3】下面将在RecylerView的子元素进行滚动时&#xff0c;使用适配器动画。具体的操作步骤如下&#xff1a; &#xff08;1&#xff09;创建一个名为RecylerViewAnimatorsAdapter的项目。 &#xff08;2&#xff09…

linux程序设计知识点整理,笔试面试中C/C++重要知识点整理

4. 类与面向对象编程4.1 类接口与实现的概念&#xff1a;每个类都定义了一个接口(可以不是很确切的理解为类中访问级别为public的函数为接口)和一个实现。接口由使用该类的代码需要执行的操作组成。实现一般包括该类所需要的数据。实现还包括定义该类需要的但又不供一般性使用…

java poi excel 生成表格的工具封装

效果如下&#xff1a; 代码如下&#xff1a; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.ArrayList; import java.util.Arrays; import java.util.List;import org.apache.poi.hssf.u…

关于java嵌入式数据库的选择,强烈建议H2 嵌入式数据库

2019独角兽企业重金招聘Python工程师标准>>> 不听红薯言&#xff0c;吃亏在眼前。 先发表个人意见&#xff0c;Derby是垃圾&#xff0c;H2王道。 这段时间开发movingLife合租记账软件过程中&#xff0c;开始是在MYSQL上做开发&#xff0c;要发布的时候&#xff0c;一…

linux可变剪切分析,SpliceR:一个用RNA-Seq数据进行可变剪接分类和预测潜在编码区域的R包...

SpliceR&#xff1a;一个用RNA-Seq数据进行可变剪接分类和预测潜在编码区域的R包Kristoffer Knudsen, Johannes Waage5Dec2013翻译&#xff1a;斑斑<23920620>2016年7月14日欢迎加入生物信息QQ群78750864讨论相关问题1简介SpliceR是一个可以对转录本完整isoform(剪接模式…

c语言自定义浮点函数,C语言float

C语言float教程C语言float定义详解语法float varname value;参数参数描述float定义 float 类型变量使用的类型。varname变量名。value可选&#xff0c;变量的初始值。说明使用 float 定义了一个 float 类型的变量 varname&#xff0c;并赋初值为 value。C语言float详解说明描述…

Block CONNECT method in httpd.conf

为什么80%的码农都做不了架构师&#xff1f;>>> RewriteEngine on RewriteCond %{REQUEST_METHOD} ^(CONNECT|TRACE)$ RewriteRule ^.*$ - [L,F] ProxyRequests Off ProxyRequest should be set to off, unless you have security protect in your web server. 转…

解决sharepoint2010的多行文本框的插入图片—【从sharepoint】的disabled问题

大家发现sharepoint2010的多行文本框的插入图片有个—【从sharepoint】插入图片的功能&#xff0c;但是看到的disabled。如下图&#xff1a; 怎么办呢&#xff1f;通过查找资料才知道原来可以这样解决 在这里我们新建一个自定义列表&#xff1a;【test】&#xff0c;并新建一个…

c语言16进制按10进制输出,C语言编程:写一个函数,输入一个16进制数,输出相应的10进制数。...

满意答案chengexin2013.05.27采纳率&#xff1a;59% 等级&#xff1a;11已帮助&#xff1a;10599人#include#include#include#define N 1000char str[N];int a[N],b[N];int main(void){void zsh();long ycl();int i,n;do{printf("请输入一个十六进制数:\n");scanf…