⑴ 在java中String的传参
这个是储存结构的问题
1,str1是个地址值,传给str的也是这个地址值,此时,str=str1=地址值,都指向常量池中的“good”
2,当执行 str="test ok"后,常量池中出现“test ok”,str改变且指向常量池中的“test ok”,此时str1仍指向常量池中的“good”,str地址值不等于str1地址值
3,你的程序并不能说明你的问题,输出结果应该是 test ok and gbc
4,简单来记:基本数据类型和String str在传参方法中改变是无效的,但String[] str、char[] ch之类是有效的
⑵ Java中String类型传参和char数组类型传参的区别
1. 类型不同,char是字符类型, String是字符串类型
2、String字符串是用""来包含串的, char是用''来包含单字符的
char a='1';//定义一个字符String b="dadsa";//定义一个字符串
3、String内部用来存储的结果是一个char字符数组。
private final char value[];//这是string中用来存储值的结构。
⑶ java string 类型 作为参数是什么传递
如果你认为arrayPassTest 函数中,s是作为值传递,而ss是作为引用传递,所以有这样的输出结果,也不算错误,但是决对没有真正理解里面的原因。在这里,String 类型的传递是引用传递,也即是地址传递。这个是毋庸置疑的。因为在java里,String是对象类型,作为参数肯定是引用传递。之所以有值传递的效果,是因为Stirng内部实现时,是用char[] 来存储字符串的,所以String相当于char[]的包装类,那java中,包装类的一个特质就是值操作时体现对应的基本类型的特质。
⑷ Java中如何传值
可以通过参考传值,如下:
publicclassTest{
publicvoidfunction(inta){}
publicstaticvoidmain(String[]args){
Testtest=newTest();
inta=1;
test.function(a);
}
}
⑸ 关于java里面的string传值问题
“hello” 这个字符串存在一个地方, main 里的 str 存了一个指向“hello” 的地址。
在调用 test(str); 时,把 str 的一个副本传递了出去,str 现在仍然存储的是一个指向“hello” 的地址,这一点没有变。
在test(String str) 里, 这个 test 里的 str 得到了指向“hello” 的地址,此时它也是指向“hello”的,就是说,在 test 方法里,你如果打印 str,这时候打印出来的是 “hello”。
后面test方法里执行了str = "world";, 所以 test 方法里的 str 改变了,指向了存储“world”字符串的地址。
然后程序返回 main 执行,这时 test 方法里的 str 的生命周期已经结束,因为它的作用域只在 test 方法中。
返回到 main 以后,你打印出来的是 main 里的 str ,它没有被改变过,它仍然指向“hello” 的地址。
不知是否说清楚了??
⑹ java string 类型 作为参数是什么传递
如果你认为arrayPassTest
函数中,s是作为值传递,而ss是作为引用传递,所以有这样的输出结果,也不算错误,但是决对没有真正理解里面的原因。在这里,String
类型的传递是引用传递,也即是地址传递。这个是毋庸置疑的。因为在java里,String是对象类型,作为参数肯定是引用传递。之所以有值传递的效果,是因为Stirng内部实现时,是用char[]
来存储字符串的,所以String相当于char[]的包装类,那java中,包装类的一个特质就是值操作时体现对应的基本类型的特质。
⑺ java传值问题,String类型的会被转化为数字类型的,求解决方法
alert(<%=empNO.toString()%>);alert(<%=a%>);
你这么写,不加引号,如果你的empNO或者a是字符串类型的数值的话,JS会当成数字来对待。
当然,如果你写成非数字,会报错。
⑻ java中string传值是按值传递还是地址传递
不要去尝试拿c c++的思维考虑java,不用去考虑String传递的是值还是地址,我是这么理解的,只要知道String的底层是由被final修饰的char数组组成,那么String类型的数值永远不会在原值上被改变,所有方法比如replace等 都是创建一个新的对象,记住永不可改变就好了。