char-java中参数传递变换的问题,求问:结果为什么是这样的啊??求高手解答!拜谢~

问题描述

java中参数传递变换的问题,求问:结果为什么是这样的啊??求高手解答!拜谢~

求问:结果为什么是这样的啊??
change:Test
change:g
change:b
change:c
TestPram:Hello
TestPram:g
TestPram:b
TestPram:c
代码如下:
public class TestPram {
String str = "Hello";
char[] ch = {'a','b','c'};
public static void main(String[] args) {
TestPram tb = new TestPram();
tb.change(tb.str, tb.ch);
System.out.println("TestPram:"+tb.str);
for(int i=0;i<tb.ch.length;i++){
System.out.println("TestPram:"+tb.ch[i]);
}

}
public void change(String str,char[] ch){
    str = "Test";
    ch[0]='g';
    System.out.println("change:"+str);
    for(int i=0;i<ch.length;i++){
        System.out.println("change:"+ch[i]);
    }
}

}

解决方案

这就涉及到java中函数参数的值传递和引用传递,
1.值通常是只原始数据类型比如int,char等,你的代码中的ch[0] 就是一个char类型的变量 ,遵循的是值传递
2.String是类,str作为一个对象,遵循的是引用传递,所以你是没有办法修改它的值的,只能改变它的引用

还不懂可以看这里 http://jackycheng2007.iteye.com/blog/935038

解决方案二:

有什么不对,ch[0]='g';已经将你传入的数组中的元素改了

解决方案三:

你的意思是想把str变成'text 'ch[0]变成g.b.c对不对?看你的change方法,虽然参数的名字和类中的属性名一样,但并不代表,他们可以代替属性,当参数名和属性名相同时,想要调用属性需要前面加个this,
str = "Test";想要改成你要的效果change方法如下
public void change(){
str = "Test";
ch[0]='g';
System.out.println("change:"+str);
for(int i=0;i<ch.length;i++){
System.out.println("change:"+ch[i]);
}
}

解决方案四:

你的意思是想把str变成'text 'ch[0]变成g.b.c对不对?看你的change方法,虽然参数的名字和类中的属性名一样,但并不代表,他们可以代替属性,当参数名和属性名相同时,想要调用属性需要前面加个this,
str = "Test";想要改成你要的效果change方法如下
public void change(){
str = "Test";
ch[0]='g';
System.out.println("change:"+str);
for(int i=0;i<ch.length;i++){
System.out.println("change:"+ch[i]);
}
}

时间: 2025-01-30 08:25:37

char-java中参数传递变换的问题,求问:结果为什么是这样的啊??求高手解答!拜谢~的相关文章

java中 Integer a=5;和Integer a = new Integer(5);的区别?请高手赐教。

问题描述 java中 Integer a=5;和Integer a = new Integer(5);的区别?请高手赐教. /*首先要知道的常识:1.关系操作符==:计算""操作数""的 值 之间的关系,结果为true或者false;这操作数指的是所有的基本数据类型以及所有对象;2.equals():是Object类中的方法,equals()作用和==相同,但是不适用于基本数据类型:3.自己定义的类可以覆盖Object类中的equals(); *///下面来看一个例

java中建立客户端和服务端的思想步骤是如何确立..请大神解答下..

问题描述 java中建立客户端和服务端的思想步骤是如何确立..请大神解答下.. 解决方案 解决方案二: 解决方案三:首先,你得有客户端和服务器端相关的配置信息,我不知道你现在的交互是数据库还是什么??

Java中参数传递类型只有值传递

Java核心技术卷I里有一个结论我觉得挺有意思的:java中没有引用传递,只有值传递 首先看定义: 值传递,是指方法接收的是调用者提供的值 引用传递,是指方法接收的是调用者提供的变量地址 以前学习C++时把参数传递分为值传递和引用传递,国内的不少java教材愿意把对象的传递理解是引用传递,为什么它们会这么说呢?可以看下面一个例子: import java.util.Calendar; public class ChangeValue { public static void main(Strin

Java中函数参数传递和数据存储

值传递是将要传递的值作为一副本传递的..引用传递,传递的是引用对象的内存地址..例如: int i=4;  int j=i;   //相当于把4复制了一个副本赋给了j 输出结果是i=4 ,j=4 Cint *p,*p1;int j=5;p=j;    //这里是把j在内存当中的地址赋给了指针pp1=p;   //这里是把指针p中保存的地址(就是j的地址)赋给了指针p1 j=4;    //这里改变j的值 输出结果是  j=4  ,  *p=4  ,  *p1=4  //因为p和p1指向的都是j

int-JAVA中参数传递问题,为什么ab的值不被改变, 怎样才能被改变!

问题描述 JAVA中参数传递问题,为什么ab的值不被改变, 怎样才能被改变! public class MyTest { public static int c =1; public static int d = 2; public static void main(String[] args) { System.out.print("交换前ta=" + c + "tb=" + d + "r"); Swap(c, d); System.out.p

java-Java中PDF转图片报运行时异常,错误看不懂,求帮助

问题描述 Java中PDF转图片报运行时异常,错误看不懂,求帮助 下图是控制台报错信息,求大神帮忙看看,是PDF格式不支持吗? 解决方案 看下是不是你的页面太多,内存不够,需要调整jvm设置.

关于java问题-java中 System.out.print()

问题描述 java中 System.out.print() java中 System.out.print()错误提示不可执行代码,头疼啊,求大神指点 解决方案 System.out.print();与System.out.println();前者输出不换行,比如:System.out.print(""a"");System.out.print(""b"");结果:ab 后者输出后换行,比如:System.out.println

关于java中使用jacob调用c++写的ocx时参数传递的问题

问题描述 我用c++写了一个简单的ocx写了3个方法TestFunc()TestFunc3(SHORTport)TestFunc2(SHORTport,CHAR*strIP)在java中这么调用ActiveXComponentcomx=newActiveXComponent("ACEWEB.ACEWebCtrl.1");Dispatchdisp=comx.getObject();Dispatch.call(disp,"TestFunc");Dispatch.call

(转载)图解Java中的参数传递

今天做项目,发现了一个问题,当String作为参数传递的时候,在函数内部改变值对外部的变量值无影响,如下代码: public static void main(String[] args) { String str = "11111"; changeStr(str); System.out.println(str);//输出11111 } public static void changeStr(String str){ str = "22222"; } 一开始不解