黑马程序员技术交流社区
标题:
一简单Java程序,求指教
[打印本页]
作者:
ゞ心痛-τ._煩離
时间:
2013-10-21 10:11
标题:
一简单Java程序,求指教
本帖最后由 ゞ心痛-τ._煩離 于 2013-10-21 15:47 编辑
public class Test{
String str=new String("good");
char[] ch={'a','b','c'};
public void change(String str,char ch[]){
str="test ok";
ch[0]='g';
}
public static void main(String args[]){
Test t=new Test();
System.out.println(t.str);
t.change(t.str,t.ch);
System.out.print(t.str+"and");
System.out.print(t.ch);
}
}
复制代码
为什么结果是goodandgbc,我怎么感觉是test okandgbc
作者:
4556
时间:
2013-10-21 10:24
字符串一旦被初始化就不可以被改变了,
作者:
张宏祚
时间:
2013-10-21 10:40
函数里的变量属于局部变量,局部变量和形式参数的任何改变都不会对成员变量有影响的,你的change函数里没有返回值,所以无论 在你的change里发生什么,都不会对text类有影响,除非你这么写:
t.str = t.change(t.str,t.ch); // chang() 里面加一个 return "text ok";
作者:
李文帅
时间:
2013-10-21 10:56
字符串String是Java程序中经常使用的一个类,它是被final修饰的,并且String类里面的内容也是final的,比如最重要的保存字符串的部分。但是,它有一个特殊的属性,就是一旦初始化以后,就不可再更改了。
作者:
毋须繁华
时间:
2013-10-21 10:59
形参中如果是 String 和基本类型数据类型,那么传递的是值,而不是这个变量,只有引用数据类型传智的才是内存地址,在方法内发生改变,本身也会被改变,引用数据类型为 数组,接口,类。
作者:
寻丶丶觅
时间:
2013-10-21 13:06
我重写了一下楼主的代码,添加了注释,希望可以帮到你
public class Test1
{
String str=new String("good");
char[] ch={'a','b','c'};
public void change(String str,char ch[])
{
//因为你定义的参数名为str,与成员变量同名,所以要用this来强调str是对象的str,
//或者你把形式参数里的str,改为其他名字。
this.str="test ok";
ch[0]='g';
}
public static void main(String args[])
{
Test1 t=new Test1();
System.out.println(t.str);
t.change(t.str,t.ch);
System.out.print(t.str+"and");
System.out.print(t.ch);
}
}
复制代码
作者:
寻丶丶觅
时间:
2013-10-21 13:20
还有上面几个同学说的String类型是一个特殊类,初始化不可以更改,我们这里做的只是把str对象指向的地址值改变而已,并没有改变原有的字符串,而是让str指向了"test ok"该字符串的地址.
作者:
wenbaoxing
时间:
2013-10-21 15:19
如果想在change()方法中改变:str和ch的值,完全可以像以下代码,因为类中的成员函数可以直接访问类中的成员变量
package com.itheima;
public class Test {
String str = new String("good");
char[] ch = { 'a', 'b', 'c' };
public void change() {
str = "test ok";
ch[0] = 'g';
}
public static void main(String args[]) {
Test t = new Test();
System.out.println(t.str);
t.change();
System.out.print(t.str + "and");
System.out.print(t.ch);
}
}
复制代码
作者:
wenbaoxing
时间:
2013-10-21 15:22
如果想控制内容,可以这样:
package com.itheima;
public class Test {
String str = new String("good");
char[] ch = { 'a', 'b', 'c' };
public void change(String s,char c) {
str = s;
ch[0] = c;
}
public static void main(String args[]) {
Test t = new Test();
System.out.println(t.str);
t.change("aaaaaaa",'w');
System.out.print(t.str + "and");
System.out.print(t.ch);
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2