zoukankan      html  css  js  c++  java
  • java 中函数的参数传递详细介绍

     java中函数的参数传递

    总结:

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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    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 

  • 相关阅读:
    Atitit 图像处理30大经典算法attilax总结
    Atitit 图像清晰度 模糊度 检测 识别 评价算法 源码实现attilax总结
    Atitit  rgb yuv  hsv HSL 模式和 HSV(HSB) 图像色彩空间的区别
    Atitit  从 RGB 到 HSL 或 HSV 的转换
    Atitit 图像清晰度 模糊度 检测 识别 评价算法 原理
    Atitit 修改密码的功能流程设计 attilax总结
    atitit 点播系统 概览 v2 qb1.docx
    Atitit dsl exer v3 qb3 新特性
    atitit.TokenService v3 qb1  token服务模块的设计 新特性.docx
    Atitit 异常机制与异常处理的原理与概论
  • 原文地址:https://www.cnblogs.com/fnlingnzb-learner/p/7240681.html
Copyright © 2011-2022 走看看