java中关于Integer 和java 中方法参数传递的几个问题

import java.lang.String;

 public class Test {

     public static void main(String[] args) {

         int[] a = { 1, 2 };

 // 调用swap(int,int) 典型的值传递

         swap(a[0], a[1]);

         System.out.println("swap(int,int):a[0]=" + a[0] + ",   a[1]=" + a[1]); //输出为swap(int,int):a[0]=1, a[1]=2

 

 // ----------------------------------------------------------------------------------------------------------------------------

         // 引用传递,直接传递头指针的引用。改变就是改变相应地址上的值

         swap(a, 1);

         System.out    .println("swap(int [],int):a[0]=" + a[0] + ",   a[1]=" + a[1]); //输出为 swap(int [],int):a[0]=2, a[1]=1

 // ----------------------------------------------------------------------------------------------------------------------------

         Integer x0 = new Integer(a[0]);

         Integer x1 = new Integer(a[1]);

         // 调用swap(Integer,Integer)

         swap(x0, x1);

         System.out.println("swap(Integer,Integer):x0=" + x0 + ",   x1=" + x1); //输出为 swap(Integer,Integer):x0=2, x1=1

 // ----------------------------------------------------------------------------------------------------------------------------

         // intValue和valueof的区别和联系

         // intvalue返回的是int值,而 valueof 返回的是Integer的对象,它们的调用方式也不同

         int x = x0.intValue();

         Integer s = Integer.valueOf(x0);

         /*

          * x == s输 出为true 这里面涉及到一个自动打包解包的过程,如果jdk版本过低的话没有这个功能的,所以输出的是false

          * 现在新版本的jdk都有自动打包解包功能了

          */

         System.out.println("compare:int=" + x + ",   Integer=" + s + "  "+ (x == s)); //输出为 compare:int=2, Integer=2 true

 // ----------------------------------------------------------------------------------------------------------------------------

         StringBuffer sA = new StringBuffer("A");

         StringBuffer sB = new StringBuffer("B");

         System.out.println("Original:sA=" + sA + ",   sB=" + sB); //输出为 Original:sA=A, sB=B

  append(sA, sB); 33 System.out.println("Afterappend:sA=" + sA + ", sB=" + sB); //输出为 Afterappend:sA=AB, sB=B

     }

     public static void swap(int n1, int n2) {

         int tmp = n1;

         n1 = n2;

         n2 = tmp;

     }

     public static void swap(int a[], int n) {

         int tmp = a[0];

         a[0] = a[1];

         a[1] = tmp;

     }

 // Integer 是按引用传递的,但是Integer 类没有用于可以修改引用所指向值的方法,不像StringBuffer

     public static void swap(Integer n1, Integer n2) { // 传递的是a 的引用,但引用本身是按值传递的

         Integer tmp = n1;

         n1 = n2;

         n2 = tmp;

     }

 // StringBuffer和Integer一样是类,同样在方法中是引用传递,但是StringBuffer类有用于可以修改引用所指向值的方法,如.append

     public static void append(StringBuffer n1, StringBuffer n2) {

         n1.append(n2);

         n2 = n1;

     }

 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xp9802

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值