A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冯伟 中级黑马   /  2012-9-27 17:51  /  1526 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 冯伟 于 2012-9-27 22:50 编辑
  1. class Demo{
  2. public static void main(String[] args){
  3. String num = new String("Hello world");
  4. String num1 = null;
  5. method(num1,num);
  6. System.out.println(num1);
  7. }
  8. public static void method(String f1,String f2){
  9. f1 = f2;
  10. }
  11. }
复制代码
从命令行接收参数,由于参数较多,所以在main中调用方法对参数进行判断,然后将参数分别赋给各个对象,但是在main中使用时却发现没赋值成功,不知道怎么回事,希望各位能提供解决办法

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

2 个回复

倒序浏览
class Demo{
public static void main(String[] args){
String num = new String("Hello world");
String num1 = null;  //num1是局部变量
method(num1,num);
System.out.println(num1);
}
public static void method(String f1,String f2){
  f1 = f2;  //f1和f2也是局部变量
      System.out.println(f1);   //在这里测试一下,已经传过来了,出错的原因是都是局部变量,f1和num1没什么关系,你只不过是把引用传给了f1,   num1还是原来的num1
  }
}

点评

假设程序接收了多个参数,在methods中处理后怎么把值传回去?  发表于 2012-9-27 18:35

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 杨志男 于 2012-9-27 20:13 编辑
  1. package com.ithima.practice;

  2. class Demo {

  3.         static String f1,f2,f3;

  4.         public static void main(String[] args) {
  5.                
  6.                 method("Holle"," the"," itheima");
  7.                 /*这个可以写成System.out.printf(f1,f2,f3);
  8.                  * 但这是个流
  9.                  * PrintStream java.io.PrintStream.printf(String format, Object... args),可以看下文档
  10.                  */
  11.                 System.out.print(f1);
  12.                 System.out.print(f2);
  13.                 System.out.println(f3);
  14.         }
  15.         public static void method(String x,String y,String z) {
  16.                 f1=x;f2=y;f3=z;
  17.         }
  18. }
复制代码
java的参数传递永远是值传递,传递的就是一个copy,这时有两个引用,一个是原来的一个是参数声明的,但是因为引用有两种类型,一种是基本数据类型的引用,他们的copy就是原值,1就是1,2就是2,相当于两个引用都各自有了自己的值,所以你在方法里改变的只是参数的值,跟传递前引用指向的值没有关系,二种是对象引用,他们的copy值是个地址,就是两个引用都指向一个地址,你改变这个地址或者改变这个地址里面的值都是实际改变传递之前的对象值
注意下静态成员之间的调用

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马