黑马程序员技术交流社区
标题:
以下字符串为什么不能变换成功?
[打印本页]
作者:
redlake
时间:
2015-5-13 22:09
标题:
以下字符串为什么不能变换成功?
public class Example
{
String str = new String("good");
char[]ch={'a','b','c'};
public static void main(String args[])
{
Example ex = new Example();
ex.change(ex.str,ex.ch);
System.out.print(ex.str+" and ");
System.out.print(ex.ch);
}
public void change(String str,char ch[])
{
str = "test ok";
ch[0]='g';
}
}
复制代码
运行结果 good and gbc 不理解,为什么不是test ok and gbc ,str不是指向了新的字符串对象“test ok”吗?
作者:
lwj123
时间:
2015-5-13 22:45
package com.itheima01;
public class StringDemo {
String str = new String("good");
char[] ch = { 'a', 'b', 'c' };
Float fValue = Float.valueOf(12.3f);
public static void main(String[] args) {
StringDemo sd = new StringDemo();
sd.change(sd.str, sd.ch);
System.out.println(sd.str);// good
System.out.println(sd.ch);// gbc
String ss = "web";
char[] chh = { 'c', 'd', 'e' };
sd.change(ss, chh);
System.out.println(ss);// web //不改变
System.out.println(chh);// gde //改变
sd.change(sd.fValue);
System.out.println(sd.fValue);// 12.3没有改变
int iValue = 123;
change(iValue);
System.out.println(iValue);// 123 不改变
}
private void change(String str, char[] ch) {
str = "test ok";
ch[0] = 'g';
// ch[1] = 'h';
}
private static void change(float fValue) {
fValue = 3.4f;
}
private static void change(int iValue) {
iValue = 321;
}
}
复制代码
作者:
lwj123
时间:
2015-5-13 22:50
/*
* String Float都是final修饰的,在做为实参传递时,若是在方法中改变变量的引用是不会影响本来的值的引用的 属于的值传递
*
* char[] chs = {} 在作为实参传递时,若是在方法中改变的话,是一个引用传递的,改变的话会影响之前的值
*
* int等基本数据类型就不会 属于的值传递
*/
作者:
qian0217wei
时间:
2015-5-14 00:08
来学习下
作者:
雪风飞花
时间:
2015-5-14 00:45
来学习楼上的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2