4.方法的参数传递机制

1.高频面试题

image-20200706141829174

运行结果:

image-20200706134449118

考点:

1.方法的传参机制

2.String、包装类等对象的不可变性

注意:

1.万事万物都是对象,面向对象的思想,所以int btye long double float 等基本数据类型其实本质也是一种对象,但是在java中存在一种优化机制,使基本类型可以自动装箱拆箱,使基本类型<---->包装类可以相互转化
2.缓存处理 将Long、Integer、Short、Byte、Character提供了缓存机制,可以看做将一个字节的数预先定制在系统定义的静态数组中预先缓存下来备用
预定义的数组可以调整数组的大小,但是只能上调不能下调,且只能用于Integer的调整,long...无法调剂
3.静态数组在内存中方法区中

调整JVM参数-XX:AutoBoxCacheMax=250,最大缓存值可以达到-128—250 ,只能调整上限,这和Integer缓存算法实现有关,当然这个参数只对Integer有效,Long...无法调节,通过源码可以清楚的看到这一点。

   /**
     * 调节虚拟机参数:-XX:AutoBoxCacheMax=250后,最大缓存值可以达到-128——250
     */
    @org.junit.Test
    public void test2(){
        Integer l3 = 250;
        Integer l4 = 250;
        System.out.println(l3 == l4);//true
    }

方法的参数传参机制:

1.形参是基本数据类型--传递数据值

2.实参是引用数据类型--传递地址值

**特殊的类型**:基本数据类型(自动装箱会出行创建对象) 和 String 属于对象不可变性

​ 如果一旦变量中数据发生改变,将会重新创造一个新的对象,并且由一个新的地址用于存储这个对象,并把这个地址重新装入刚才的变量中

**StringBuffer StringBuilder 并不存在不可变性**
//不可变的String
public static String appendStr(String s){
     s +="bbb";
     return s;
}
//可变的StringBuilder
public static StringBuilder appendSb(StringBuilder sb){
    return sb.append("bbb")
}

public static void main (String[] args){
    //string做参数
    String s = new String("aaa");
    String ns = Test.appendStr(s);
    System.out.println(s.toString());
    
    //StringBuilder做参数
    StringBuilder sb = new StringBuilder("aaa");
    StringBuilder nsb = Test.appendSb(sb)
    System.out.println(sb.toString())
}
output:
    aaa
    aaabbb
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值