入门基础 Java参数传递方式

迈克杰森

迈克杰森

2016-02-19 12:45

每个人都希望每天都是开心的,不要因为一些琐事扰乱了心情还,闲暇的时间怎么打发,关注图老师可以让你学习更多的好东西,下面为大家推荐入门基础 Java参数传递方式,赶紧看过来吧!

       其实这个问题我原来翻译(破除Java神话之二:参数是传址的 )、转帖别人的具体解释(Java 应用程序中的按值传递语义 )和专门解释( 我对《Java 应用程序中的按值传递语义》的理解 )过,不过现在看来,原来翻译或者解释的角度是有问题的,从底层的角度解释并不直观,在交流的时候也轻易引起误解,最终不能达成一致意见。下面以最终的效果来解释参数的传递方式:

  1、对于原始数据类型,也就是int、 long、char之类的类型,是传值的,假如你在方法中修改了值,方法调用结束后,那个变量的值没用改变。
  2、对于对象类型,也就是Object的子类,假如你在方法中修改了它的成员的值,那个修改是生效的,方法调用结束后,它的成员是新的值,但是假如你把它指向一个其它的对象,方法调用结束后,原来对它的引用并没用指向新的对象。
  代码如下:
  public class Tester {
      public static void main(String[] args) {
          int primitive = 2;
          changePrimitive(primitive);
          //primitive的值依然是2
          MyClass myClass = new MyClass();
          changeObject(myClass);
          //myClass仍然指向的是执行changeObject之前的那个对象
          //但是myClass.i等于3了
      }

      public static void changePrimitive(int primitive) {
          primitive = 3;
      }

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

      public static void changeObject(MyClass myClass) {
          myClass.i = 3;
          myClass = new MyClass();
      }
  }

  class MyClass {
      int i;
  }

      对于远程调用,无论是什么类型,调用结束后,传入的参数和以前没用任何变化(当然前途是直接调用远程方法,假如中间经过其它的Proxy类或者Facade类,不能保证那些类对对象没用修改)。至于是通过Local接口进行调用的,也应该属于本地调用,和上面说的情况应该是一致的。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)
展开更多 50%)
分享

猜你喜欢

入门基础 Java参数传递方式

编程语言 网络编程
入门基础 Java参数传递方式

[JAVA100例]073、传递参数

编程语言 网络编程
[JAVA100例]073、传递参数

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Java Swing入门基础

编程语言 网络编程
Java Swing入门基础

Java Swing入门基础 (转)

编程语言 网络编程
Java Swing入门基础 (转)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

通过地址栏传递参数.通过url传递参数

ASP
通过地址栏传递参数.通过url传递参数

程序间参数传递

编程语言 网络编程
程序间参数传递

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

win 10升级后桌面显示异常的解决办法

win 10升级后桌面显示异常的解决办法

HTML5的标签的代码的简单介绍 HTML5标签的简介

HTML5的标签的代码的简单介绍 HTML5标签的简介
下拉加载更多内容 ↓