引用传递分析,两个程序输出值问题,挺简单,但有些不懂,求指教

package ch14;
class Message{
private int num;
void setNum(int num){
this.num = num;
}
int getNum(){
return this.num;
}
}

public class ch14_1 {
public static void main(String[] args) {
Message msg = new Message();
msg.setNum(100);
fun(msg);
System.out.println(msg.getNum());
}
public static void fun(Message temp){//引用传递
temp.setNum(30);
}

}

/*public class ch14_1{
public static void main(String[] args) {
String str = "hello";
fun(str);
System.out.println(str);
}
private static void fun(String temp){
temp = "world";
}
}*/

为什么第一个程序可以将值改为30,第二个程序无法将字符串改为world?
第一个程序里用了private封装把,封装有什么用,求详细解答

0

1个回答

string是不可变对象。当对它进行=赋值时。会创建一个新的引用。就不会修改参数对象的引用了。

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
最长公共子序列源代码
用动态规划求最长公共子序列: 问题:求给定两个序列的最长公共子序列,要求输入两个序列,输出它们的最长公共子序列及其长度值。
判断一个数是否能被另一个整数整除是一个挺简单的问题,一般一个模运算就可以搞定了,懒惰的晓萌还是不想自己做,于是找到你帮他写代码,你就帮帮他吧。
判断一个数是否能被另一个整数整除是一个挺简单的问题,一般一个模运算就可以搞定了,懒惰的晓萌还是不想自己做,于是找到你帮他写代码,你就帮帮他吧。n输入格式n输入包括两个由空格分开的整数 M 和N(1≤M,N≤500)。n输出格式n输出包括一行,如果 M 可以被 N 整除就输出YES,否则输出NO(结果大小写敏感)。n样例输入n21 7n样例输出nYESnimport java.util.Scan...
fork遗留习题详解
rn我们先来解决一下第二题,它和我们上篇的第一题区别是什么呢?rn 我们会发现原来的每次输出后面都会有一个‘\n’,这一题的输出是都没有'\n'。我们要解决这道题首先要清楚‘\n’的作用是什么。rn提到这个,我们就连着和'\n'差不多功能的知识点一起复习一下。设计操作系统的人非常聪明,它并不是产生一个字符就调用I/O输出,因为如果这样的话,那cpu大量的时间都在完成I/O中断处理了,这样的效率
【OpenJudge】c语言_A*B问题
A*B问题rnrnrnrnrn查看提交统计提问rnrnrnrn总时间限制: 1000ms 内存限制: 65536kBrnrn描述rnrn输入两个正整数A和B,求A*B。rnrnrn输入一行,包含两个正整数A和B,中间用单个空格隔开。1 rn输出一个整数,即A*B的值。rn样例输入rn3 4rnrn样例输出rn12rnrn提示注意乘积的范围和数据类型的选择rnrnrnrn--------------
算法设计与分析 中位数问题 c++程序
算法设计与分析课本上配套的c++版中位数问题~~有注释~希望对大家有帮助
在Python中实现两个数的值交换的集中方法
#定义两个数并赋值nx = 1ny = 2nn#第1种方式:引入第三方变量nz = 0nz = xnx = yny = znn#第2种:不引入第三方变量nx = x+yny = x-ynx = x-ynn#第3种:推荐nx,y = y,xnnprint("x=%d,y=%d"%(x,y))...
哥德巴赫曾猜测
Descriptionrnrnrn德国数学家哥德巴赫曾猜测:任何大于6的偶数都可以分解成两个素数(素数对)的和。但有些偶数可以分解成多种素数对的和,如: 10=3+7,10=5+5,即10可以分解成两种不同的素数对rnrnrnInputrnrnrn输入任意的>6的正偶数(rnrnrnOutputrnrnrn试求给出的偶数可以分解成多少种不同的素数对(注: A+B与B+A认为是相同素数对)rnrnr
C++第一次上机实验项目2----计算两个整数的和及差
/* n* 文件名称:EX0 .CPPn* 作 者:谢翊民 n* 完成日期: 2016 年 3 月 1 日 n* 版 本 号:v1.0 n* 对任务及求解方法的描述部分:n* 输入描述: 无n* 问题描述: 求两数和差n* 程序输出: 两数和差n* 问题分析: 略n* 算法设计: 略n*/ n#include nusing namespace std;nint ma
函数模板返回两个值的最小值,确保能正确处理字符串
#includen#includentemplatet *mine(t *a,t *b)n{n return strcmp(a,b)<0?a:b; }nvoid main()n{n cout<<mine("hello","welcome")<<endl;n}n******************************************
《算法设计与分析》实践报告--求两个有序序列的中位数
实验题目:两个有序序列的中位数nnnn已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数。有序序列A​0​​,A​1​​,⋯,A​N−1​​的中位数指A​(N−1)/2​​的值,即第⌊(N+1)/2⌋个数(A​0​​为第1个数)。nn输入格式:n输入分三行。第一行给出序列的公共长度N(0N≤100000),随后每行输入一个序列的信息,即N个非降序排列的整数。数
2、编写程序,从键盘上输入两个电阻的值,求它们并联和串连的电阻值,输出结果保留两位小数。
#include <stdio.h>nint main()n{n float R1,R2,Rc,Rb;n printf("please input R1 R2\n"); n scanf("%f,%f",&R1,&R2); Rc=R1+R2;n Rb=R1*R2/(R1+R2); printf("串联电阻Rc=%0.2f\n并联电阻Rb=%0.2f\n",Rc,Rb
动态规划:求最大子段和
动态规划:求最大子段和n1、题目n2、方法n3、实现代码n//动态规划法求最大子段和 n// by 孙琨SealSun at UCAS n// 2015.11.20 n#includenusing namespace std;n#define MAX 256nn// 算法 nvoid MaxSum(int n,int *a){n int sum = 0;
一个简单的例子让你理解值传递和引用传递
碰到一些做了好几年java开发的程序员还弄不清楚值传递和引用传递的区别,下面通过一个简单的例子来说明:public class Person {n private String name; public String getName() {n return name;n }n public void setName(String name) {n this.name = name;n }n}
A*B问题
描述输入两个正整数A和B,求A*B。输入一行,包含两个正整数A和B,中间用单个空格隔开。1 &amp;lt;= A,B &amp;lt;= 50000。输出一个整数,即A*B的值。样例输入3 4样例输出12提示注意乘积的范围和数据类型的选择关于这个题目,感觉很简单,A,B 的范围没有超过int型的范围,但乘积超过了,所以想着用longlong型。于是程序写成了:#include &amp;lt;iostream&amp;gt;#...
通过JVM内存模型深入理解值传递和引用传递两种方式
值传递和引用传递分析rnJava中数据类型分为两大类:基本类型和引用类型(也就是对象类型)。rn基本类型:boolean、char、byte、short、int、long、float、doublern引用类型:类、接口、数组rn因此,变量类型也可分为两大类:基本类型和引用类型。rn在分析值传递和引用传递之前,建议了解下以上变量类型在Java内存管理模型中的位置,如果对此有所了解,将更加有助于理解两
map的引用传递浅谈
map作为参数传递到方法中,其实质是引用的传递,但是如果所传参数map=null,这个时候,方法中对map的操作将不会影响map的值,因此,如果想完成map的引用传递,必须在map最开始的地方给map实例化:rnif (null == additionalInfo) additionalInfo = new HashMap();
极值问题
【问题描述】 n 已知m、n为整数,且满足下列两个条件: n ① m、n∈{1,2,…,k},即1≤m,n≤k n ②(n2-m*n-m2)2=1 n 你的任务是:编程输入正整数k(1≤k≤109),求一组满足上述两个条件的m、n,并且使m2+n2的值最大。例如,从键盘输入k=1995,则输出:m=987 n=1597。 n【输入样例】acme
值传递&引用传递 经典题目
public static void main(String [] args){ Integer a=1,b=2; System.out.println(&quot;a = &quot; + a +&quot;,b = &quot; + b); swap1(a,b); System.out.println(&quot;a = &quot; + a +&quot;,b = &quot; + b);}版本1public static void swap1(...
05_Java基础语法_第5天(方法)_讲义
1、方法基础知识 n2、方法高级内容 n3、方法案例
关于值传递和引用传递的一个典型例子
深入理解引用传递nnnnpublic class Main {n public static void changeStrBuffer(StringBuffer sb1, StringBuffer sb2) {n sb1.append(&quot; World&quot;);n sb2 = sb1;n }nn public static void main(String[...
矩阵中的最大和次大的奇数
包含两个小程序,一个完成5x5矩阵中的最大和次大奇数,并且求出次大奇数的阶乘,另一个是求7x7矩阵的边框值,如有任何地方不懂
JS引用传递和值传递
本博客详细解释JS值传递和引用传递以及二者的区别。 函数调用中,传递是一个数值,我们称为 “值传递”。 函数调用中,传递是对象,一般称为 “引用传递”。
计算表达式的值
描述rn有些语言中表达式的运算符使用字符串表示,例如用mul代表*,用div代表/,用add代表+,用sub代表-,用mod代表%。rn输入rn第一行为表达式的个数n。其余n行每行一个表达式,表达式由两个整数及其中间的运算符字符串表示。rn输出rn输出为n行,每行是对应表达式的值。注意,此处要求的所有运算均为整数运算。rn样例输入rn5n345 mul 122n3945 div 12n321 ad
如何深入理解php中的值传递和引用传递
对于值传递和引用传递,书本上的解释比较繁琐,而php面试中总会出现,下面我会通过一个生活的例子带大家理解它们之间区别。nn第一步 假设我们去酒店订房间,我们把酒店的门牌号比作变量名,我们把房间里住人数当做给这个变量名赋值的过程nn​&amp;lt;?phpnn$k1=2;//$k1号房间住了2个人nn$k2=$k1;//恰巧今天$k1号房间维修,把$k1号房间的人放到$k2房间里面nn$k1=10;//假...
引用传递和值传递的区别
1. 引用传递和值传递的区别n答:(1)按值传递不会改变实际参数的数值;n(2)按引用传递可以改变实际参数的内容,但不能改变实际参数的参考地址。n例如:npublic class Test{npublic static void main(String[] args)n{nint i=1;nStringBuffer sb = new StringBuffer(“Hello”);ntest(sb,i...
_tcp_iocp_vc6_1.rar
_tcp_iocp_vc6_1.rar 帮看看问题,求指教
19:A*B问题
原题链接rnrnrn总时间限制: 1000ms 内存限制: 65536kBrnrnrn描述rnrn输入两个正整数A和B,求A*B。rnrnrn输入一行,包含两个正整数A和B,中间用单个空格隔开。1 rn输出一个整数,即A*B的值。rn样例输入rn3 4rnrn样例输出rn12rnrn提示注意乘积的范围和数据类型的选择rn源码rnrnrn#include n#include n#include nu
给出两个整数a和b, 求他们的和, 但不能使用 + 等数学运算符。
这个题目很有意思,网上也有很多解法,但是解法不重要,思路才是最重要的。n下面说一下我自己的思路。n首先肯定要想到用位运算来操作,即用二进制来处理,好,既然想到这里,当然要举个例子来想想,最简单的1+2n1的二进制 ····0001n2的二进制 ····0010n3的二进制 ····0011n那a+b不就等于a|b吗?那么,再来验证下1+3n1的二进制 ····0001n3的二进制
使用C语言编写程序,求两个整数的较大值(随机输入两个数,比较大小)
比较大小
1090: 哥德巴赫猜测
题目Description德国数学家哥德巴赫曾猜测:任何大于6的偶数都可以分解成两个素数(素数对)的和。但有些偶数可以分解成多种素数对的和,如: 10=3+7,10=5+5,即10可以分解成两种不同的素数对Input输入任意的>6的正偶数(<32767)Output试求给出的偶数可以分解成多少种不同的素数对(注: A+B与B+A认为是相同素数对)Sample Input1234 nSample Ou
zzuli OJ 1002: 简单多项式求值
Descriptionrnrn对用户输入的任一整数,输出以下多项式的值。rny=2x2+x+8rnrnrnrnInputrnrn输入整数x的值。rnrnOutputrnrn输出一个整数,即多项式的值。rnrnSample Inputrnrn1rnrnSample Outputrnrn11rnrnHINTrnrnrnrnSourcern#includernrnrnint main(void)rn{r
A*B 问题
A*B 问题成绩10开启时间2018年02月5日 星期一 17:25折扣0.8折扣时间2018年12月5日 星期三 17:25允许迟交否关闭时间2018年12月5日 星期三 17:25问题描述计算最多20010位十进制正整数A和B的乘积A*B。输入样例12598输出样例10072 测试输入期待的输出时间限制内存限制额外进程测试用例 1以文本方式显示1259↵8↵以文本方式显示10072↵1秒64M...
Java引用传递问题
之前写了个关于Java值传递和引用传递的博客,自以为在函数参数传递这方面已经了解得比较清楚了。可是今天在做剑指offer算法题二叉搜索树和双向链表时,提交了好几次代码都没对,最后发现是函数参数传递理解出了问题。nn这是正确的代码:nnnpublic TreeNode covertNode(TreeNode root, TreeNode lastlist) {n if (root == nul...
计蒜客 Python课程 A+B+C问题
输入为三行,每行一个整数,分别为 A、B、C(数据范围均在 -40 ~ 40 之间)。输出为一行,为“A+B+C”的计算结果。n样例n输入:22 1 3n输出:26nnnlst = raw_input().split(' ')nsum = 0nfor i in lst:n sum = sum+int(i)nprint sum
算法分析与设计,求一组数据中两个最大的数和两个最小的数
自己做的一个简单的求一组数据中两个最大的数和两个最小的数,并且求数组的和,然后输出!
swap算法——c语言中值传递和引用传递的问题
#include nvoid swap(int x,int y);nvoid main()n{nint a,b;na=1;nb=10;nprintf("a和b的值为:\n");nprintf("a=%d,b=%d\n",a,b);//结果1nswap(a,b);nprintf("a和b交换后的值为:\n");nprintf("a=%d,b=%d\n",a,b);//结果2
Python中值传递和引用传递区别
python中对一个函数可以传递参数,但是如何分辨是值传递还是引用传递,不是程序员手动控制的,而是python根据你传入的数据对象,自动识别的。rn如果你传入的参数对象是可变对象:列表,字典,这个时候就是引用传递,如果参数在函数体内被修改,那么源对象也会被修改。rn如果你传入的参数对象是不可变的对象:数字,元组,字符串,这个时候就是值传递。那么源对象是不会改变的,rn例子一:rnrnimport
初等数论中求欧拉函数值程序
初等数论中求欧拉函数值程序初等数论中求欧拉函数值程序初等数论中求欧拉函数值程序初等数论中求欧拉函数值程序初等数论中求欧拉函数值程序初等数论中求欧拉函数值程序
1036:A×B问题
时间限制: 1000 ms 内存限制: 65536 KBn提交数: 19593 通过数: 6321n【题目描述】n输入两个正整数A和B,求A×B的值。注意乘积的范围和数据类型的选择。n【输入】n一行,包含两个正整数A和B,中间用单个空格隔开。1≤A,B≤50000。n【输出】n一个整数,即 A×B 的值。n【输入样例】n3 4n【输出样例】n12n【来源】nNon【代码】n...
js的赋值问题:值传递还是引用传递?
ECMAScript中有5种简单数据类型(也称为基本数据类型):Undefined、Null、Boolean、Number和String。还有1种复杂数据类型——Object,Object本质上是由一组无序的名值对组成的。ECMScript不支持任何创建自定义类型的机制,而所有值最终都将是上诉6中数据类型之一。乍一看,好像只有6种数据类型不足以表示所有数据;但是,由于ECMScript数据类型具有动态性,因此的确没有再定义其他类型的必要了。
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 不懂算法学习大数据 不懂技术学习区块链