zoukankan      html  css  js  c++  java
  • Java参数传值?or传引用?

    O'Reilly's Java in a Nutshell by David Flanagan (see Resources) puts it best: "java manipulates objects 'by reference,' but it passes object references to methods 'by value.'"

    从这里也可以看到,David 也没那么生硬,不过是看你从哪个角度来认识这个问题,如果大家习惯c++的那种传参时的理解方式,为何不能这么比较呢?

    有人已经总结过:

    参见

    1、对象是按引用传递的
    2、Java 应用程序有且仅有的一种参数传递机制,即按值传递
    3、按值传递意味着当将一个参数传递给一个函数时,函数接收的是原始值的一个副本
    4、按引用传递意味着当将一个参数传递给一个函数时,函数接收的是原始值的内存地址,而不是值的副本
    写的没错,但是文字太多,第二条就已经把人弄糊涂了,得仔细看完4条才清楚。而且对String类型的疑惑没有解决。

    备注:对象传递时是引用传递,但是传给函数的引用是一份拷贝的引用(也就是函数外有一份引用,函数里有一份引用,两份引用都会指向内存里的对象),修改会直接改变对象的值,交换不会影响外部的引用。

    这么简单的事情,何必这么绕呢?为啥没人跟c++过不去,偏要跟Java来劲?

    三句话总结一下:

    1.对象就是传引用

    2.原始类型就是传值

    3.String等immutable类型因为没有提供自身修改的函数,每次操作都是新生成一个对象,所以要特殊对待。可以认为是传值。

    其他参考文章:

    http://www-128.ibm.com/developerworks/cn/java/l-jpointer/index.html

    http://dreamhead.blogbus.com/logs/2005/05/1189478.html

    http://www.javaeye.com/topic/12961

     
     
    哔哔叭哔哄
  • 相关阅读:
    centos7上安装JupyterHub
    我的测试第一篇博客
    TCP,SYN,FIN扫描
    nmap使用帮助翻译
    MySQL 常用函数
    MySQL 视图
    MySQL 索引
    JAVA 注解
    JAVA 反射
    spring boot MySQL极简封装
  • 原文地址:https://www.cnblogs.com/he-px/p/7448250.html
Copyright © 2011-2022 走看看