黑马程序员技术交流社区
标题:
关于java赋值的问题(完成)
[打印本页]
作者:
王琪
时间:
2014-2-27 21:14
标题:
关于java赋值的问题(完成)
本帖最后由 王琪 于 2014-2-28 01:34 编辑
import java.util.*;
public class Text {
static void fun(String s){
s="!";
}
public static void main(String[]args){
String s="*";
fun(s);
System.out.println(s);
}
}
复制代码
不能通过函数改变String吗?
嗯 ..我是想通过 s="1"把吃的内容直接f赋值给传来的s 的 是不是要用高级for 循环另外定义一个函数啊?
作者:
yekong262
时间:
2014-2-27 21:40
import java.util.*;
public class Text {
static void fun(String s)这里你接受了一个s 这个s代表的是*
{
s="!";//这句话的意思就是 *=! ;你这里都定义错了
}
public static void main(String[]args){
String s="*";
fun(s);
System.out.println(s);
}
}
复制代码
作者:
王琪
时间:
2014-2-27 21:58
我是想比如 s保存的是地址 s="12345"传进函数里 再通过重新赋值s=“7777”最后输出7777啊?
作者:
asvsass
时间:
2014-2-27 22:00
本帖最后由 asvsass 于 2014-2-27 22:10 编辑
这两个 S 都市在栈内存中的S 所以他们不是同一个S 只是名字一样而已 你把名字换换就一目了然了
import java.util.*;
public class String1 {
static void fun(String s){
s="abc";
}
public static void main(String[]args){
String s1="1";
fun(s1);
System.out.println(s1);
}
}
你调用完fun() fun() 函数结束 s值就释放了 你输出的S是主函数自己的局部变量的这个s
作者:
乔青山
时间:
2014-2-27 22:06
String s="*"; 那这个s就是常量了
fun(s);是不会改变s的值的,因为是值传递。
通过函数改变String可以,把String定义成对象,传引用到方法中就可以。
后面的问题没懂,这代码中有什么吃的内容和循环么。。。看的有点晕
作者:
我要的幸福呢
时间:
2014-2-27 22:08
public class Text {
static void fun(String str){//改变一下参数名称以作区分
str="!";
}
public static void main(String[]args){
String s="*";
fun(s);//把s作为参数传递给fun函数,只是将s的值"*"赋给了fun函数的形参str,方法体的运行与s毫无关系
System.out.println(s);
}
}
复制代码
作者:
75100313
时间:
2014-2-27 22:13
package com.mth.test;
/**
*
* @ClassName: Text
* @Description: TODO(类的作用)
* @author mth 75100313@qq.com
* @date 2014-2-27 下午10:11:13
*
*/
public class Text {
static String fun(String s1) {//参数s局部变量
s1 = "!"; //要想改变你传进来变量的值 必须返回
return s1;
}
public static void main(String[] args) {
String s = "*";
//s接受一下函数的返回值
s=fun(s);
System.out.println(s);
}
}
复制代码
作者:
flying
时间:
2014-2-27 22:40
public class Text {
static String fun(String s){
s="!";
return s;
}
public static void main(String[]args){
String s="*";
s=fun(s);
System.out.println(s);
}
}
复制代码
传进去的是字符串"!"在内存中的地址
如果想要输出 ”!“
只要将“!”的地址赋值给s就行了
作者:
牛头人图腾
时间:
2014-2-27 22:49
1、直接输出对象其实是输出对象的字符串表现形式,即调用对象的toString方法。
作者:
牛头人图腾
时间:
2014-2-27 22:57
2、由于所有对象有字符串表现形式,所以定义在了Object中。默认返回的格式:类名@哈希值 = getClass().getName() + '@' + Integer.toHexString(hashCode())。3、String类覆盖了toString方法,建立自己特有的内容,输出String类对象会输出该对象的内容。4、你上面代码运行完s应该是等于*吧,所以输出的是*。我记得是这样的,第一次回复有点乱,见谅
作者:
位俊鹏
时间:
2014-2-28 00:36
首先这个代码有问题:
1:定义一个方法, 首先要确定返回值类型,你这个应该是返回String类型;参数是String s;但你的变量名起的不太合理,容易搞混.
2:根据"问题1:"对于非void类型的就要返回,即执行结果应该交个调用者处理.返回的要接收,
作者:
王琪
时间:
2014-2-28 01:22
本帖最后由 王琪 于 2014-2-28 01:24 编辑
谢谢大家,我发了一个总结但字数太多了不让回复
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2