java 中函数的参数传递详细介绍

 更新时间:2016年11月17日 11:58:19   投稿:lqh  
这篇文章主要介绍了 java 中函数的参数传递详细介绍的相关资料,需要的朋友可以参考下

 java中函数的参数传递

总结:

  1.将对象(对象的引用)作为参数传递时传递的是引用(相当于指针)。也就是说函数内对参数所做的修改会影响原来的对象。
  2.当将基本类型或基本类型的包装集作为参数传递时,传递的是值。也就是说函数内对参数所做的修改不会影响原来的变量。
  3.数组(数组引用))作为参数传递时传递的是引用(相当于指针)。也就是说函数内对参数所做的修改会影响原来的数组。
  4.String类型(引用)作为参数传递时传递的是引用,只是对String做出任何修改时有一个新的String对象会产生,原来的String对象的值不会做任何修改。(但是可以将新的对象的       引用赋给原来的引用,这样给人的表面现象就是原来的对象变了,其实没有变,只是原来指向它的引用指向了新的对象)。

package StringTest; 
 
class A{ 
  int a=1; 
  char b='A'; 
  public A(){} 
  public A(int _a,char _b){ 
    this.a=_a; 
    this.b=_b; 
  } 
  public String toString(){ 
    return "a="+this.a+",b="+this.b; 
  } 
} 
 
 
public class ReferenceTest { 
  public static A changeA(A classa){ 
    classa.a=2; 
    classa.b='B'; 
    return classa; 
  } 
   
  public static String changeString(String str){ 
     System.out.println(str.hashCode()); 
     str=str.toLowerCase(); 
     System.out.println(str.hashCode()); 
     return str; 
  } 
   
  public static int changeint(int a){ 
    a=a+1; 
    return a; 
  } 
   
  public static Integer changeInteger(Integer a){ 
    a=new Integer(9); 
    return a; 
  } 
   
  public static int[] changeintarray(int a[]){ 
    a[0]=10; 
    return a; 
  } 
   
  public static void printArray(int a[]){ 
    for(int i=0;i<a.length;i++){ 
      System.out.print(a[i]+" "); 
    } 
    System.out.println(); 
  } 
   
  public static void main(String[] args) { 
    //自定义的对象传递的是引用 
    A a=new A(); 
    A b=changeA(a); 
    System.out.println(a); 
    System.out.println(b);  
    System.out.println("----------------------"); 
    //String对象作为参数传递的也是引用(只是String对象的值不能变,每一个修改String对象的值都会重新创建一个新的String对象用以保存修改后的值,原来的值不会变) 
    String str1="HUHUALIANG"; 
    System.out.println(str1.hashCode()); 
    String str2=changeString(str1); 
    System.out.println(str2.hashCode()); 
    System.out.println(str1); 
    System.out.println(str2);  
    System.out.println("----------------------"); 
    //基本类型是值传递 
    int inta=8; 
    int intb=changeint(inta); 
    System.out.println(inta); 
    System.out.println(intb);  
    System.out.println("----------------------"); 
    //基本类型的包装集作为参数传递的是值而不是引用 
    Integer c=new Integer(1); 
    Integer d=changeInteger(c); 
    System.out.println(c); 
    System.out.println(d);  
    System.out.println("----------------------"); 
    //数组传递的是引用 
    int [] arraya={0,1,2,3}; 
    int [] arrayb=changeintarray(arraya); 
    printArray(arraya); 
    printArray(arrayb); 
  } 
} 

运行结果:

a=2,b=B
a=2,b=B
----------------------
711139030
711139030
226046678
226046678
HUHUALIANG
huhualiang
----------------------
8
9
----------------------
1
9
----------------------
10 1 2 3
10 1 2 3

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • java将数据写入内存,磁盘的方法

    java将数据写入内存,磁盘的方法

    下面小编就为大家分享一篇java将数据写入内存,磁盘的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • 一文带你看懂Android动画的实现原理

    一文带你看懂Android动画的实现原理

    动画是 Android 应用程序中重要的交互特性,ndroid 提供了多种动画效果,包括平移、缩放、旋转和透明度等,它们可以通过代码或 XML 来实现,本文将介绍 Android 动画的原理和实现方法,并提供一些示例,需要的朋友可以参考下
    2023-07-07
  • windows定时器配置执行java jar文件的方法详解

    windows定时器配置执行java jar文件的方法详解

    这篇文章主要给大家介绍了关于windows定时器配置执行java jar文件的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • 将bean注入到Spring中的方式总结

    将bean注入到Spring中的方式总结

    在Java的Spring框架中,将bean注入到容器中是核心概念之一,这是实现依赖注入的基础,Spring提供了多种方式来将bean注入到容器中,本文给大家总结了将bean注入到Spring中的几种方式,需要的朋友可以参考下
    2023-12-12
  • java反射获取和调用方法

    java反射获取和调用方法

    本篇内容主要给大家详细讲解了java反射获取方法以及调用方法,需要的朋友参考学习一下吧。
    2017-12-12
  • 实例讲解Java设计模式编程中的OCP开闭原则

    实例讲解Java设计模式编程中的OCP开闭原则

    这篇文章主要介绍了Java设计模式编程中的开闭原则,开闭原则的大意被作者总结为用抽象构建框架,用实现扩展细节,需要的朋友可以参考下
    2016-02-02
  • 关于ThreadLocal和InheritableThreadLocal解析

    关于ThreadLocal和InheritableThreadLocal解析

    这篇文章主要介绍了关于ThreadLocal和InheritableThreadLocal解析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-03-03
  • Java 虚拟机栈详解分析

    Java 虚拟机栈详解分析

    在线程创建时,JVM会为每个线程创建一个单独的栈空间。JVM的栈内存不需要是连续的。JVM在栈上会进行两个操作:压入和弹出栈帧。对于一个特定的线程来说,栈被称为运行时栈。这个线程调用的每个方法会被存储在响应的运行时栈里,包括了参数,局部变量,计算媒介和其他数据
    2021-11-11
  • Java对象Serializable接口实现详解

    Java对象Serializable接口实现详解

    这篇文章主要介绍了Java对象Serializable接口实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • 在MyBatis-Plus中关闭SQL日志输出的方法

    在MyBatis-Plus中关闭SQL日志输出的方法

    在使用MyBatis-Plus开发Java应用程序时,随着项目的复杂性提升,SQL日志的输出可能会导致日志文件变得庞大,影响系统的性能和可维护性,本文将介绍如何在Spring Boot项目中关闭MyBatis-Plus的SQL日志输出,感兴趣的朋友一起看看吧
    2025-04-04

最新评论