Java基础 按数值传递

来源:互联网 发布:仿淘宝省市地区级联 编辑:程序博客网 时间:2024/06/13 12:49

总论

Java是按数值传递(call by value), 不论是原始型(primitive type),还是引用数据类型 (reference type)。本文中的引用数据类型举了两例子:String型与数组型。在Java中,String型是一种对象类(Class),即是一种引用数据类型,但它是Immutable(不可变更)。

这里附带讲下Java中的引用数据类型包含哪些子类?
引用数据类型:
1.对象类 (Class)
2.接口 (Interface)
3.数组 ([])

痛点:
对于引用数据类型,按值传递的这个说法 的理解 应为:复制了该对象的引用(reference),然后传入到函数参数中。所以您会发现,
数组型的话,将数组作为参数传入
1. 如在方法中把这个传入的引用指向别的引用,原数组不会被作用到;
2. 如在方法中修改数组中的某个值,是会作用到原数组的。
3. 上述两点如不太明白,除看下列代码片段外,还可看看本文附图。

原始型例子

String型例子

数组型例子

方便起见,把试图改变这三种类型的变量的方法都写在同一个代码片段里,供读者参考:

代码片段

class myCode{    static void setNewInt(int i) {        i = i + 33;    }    static void setNewString(String str) {        str += "cool!";    }    static void setNewArray(int[] arr1) {        int[] b = {1, 2};        arr1 = b;    }    static void setNewArrayElement(int[] arr2) {        arr2[0] = 105;    }    public static void main (String[] args) throws java.lang.Exception    {        int i = -33;        String str = "I am ";        int[] arr1 = {-4, -3};        int[] arr2 = {-19, 84};        /* Original Output ... */        System.out.print(String.format("int i is %d, String s is %s", i , str));        System.out.print(" and arr1[0], arr1[1] is: " + arr1[0] + ", " + arr1[1]);        System.out.println(" and arr2[0] is: " + arr2[0]);        /* Start Setting process... */        setNewInt(i);        setNewString(str);        setNewArray(arr1);        setNewArrayElement(arr2);        /* New Output ... */        System.out.print(String.format("Now: int i is %d, String s is %s", i , str));        System.out.print(" and arr1[0], arr1[1] is: " + arr1[0] + ", " + arr1[1]);        System.out.println(" and arr2[0] is: " + arr2[0]);    }}

您认为运行结果会是怎样?
按照法则:Java是按数值传递,作用于原始型(primitive type)和String型,那么变量 istr 的值是不会改变的。
而对于数组型,我这里就不多写了,请大家看附图。

运行结果

int i is -33, String s is I am  and arr1[0], arr1[1] is: -4, -3 and arr2[0] is: -19Now: int i is -33, String s is I am  and arr1[0], arr1[1] is: -4, -3 and arr2[0] is: 105

附图

按数值传递对数组型的两种情况

更多阅读

  1. Java String类
  2. JavaScript is call by sharing

改进意见

欢迎在评论中留下您对此博文的改进意见,谢谢您

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 父母吵架了我该怎么办 父母看孩子总是吵架怎么办 20岁父母离婚我怎么办 碰到没素质的人怎么办 父母抛弃了我该怎么办 父母说家里没钱困难怎么办 遇到素质低的老婆怎么办 孩子考试心里素质差怎么办 5岁儿童脾气不好怎么办 有一个素质差的父母怎么办 孩子对什么都无所谓怎么办 孩子在学习上无所谓怎么办 孩子对学习无所谓的态度怎么办 孩子不上进什么都无所谓怎么办 倔强的学生不理老师怎么办 一岁宝宝特别犟怎么办 孩子遇到问题喜欢发脾气怎么办 企业培养新人跑了怎么办 二年级学生读不懂题目怎么办 6岁宝宝有鼻炎怎么办 外地儿童怎么办北京医保卡 江苏联宝投资的钱怎么办 银行叫开了证券怎么办 中班心理健康我不开心了怎么办 大学生心理健康课总是抢不到怎么办 孩子成绩提不上去怎么办 孩子数学不开窍怎么办 二年级 初中孩子语文不开窍怎么办 分到的班级都是差生怎么办 初三了英语差怎么办呀 初三了英语差的很怎么办 五年级英语太差怎么办 听课效率没有自学效率高怎么办 小学生不好好写作业怎么办 带的家教成绩没有提高怎么办 学生出国学校成绩证明怎么办 学生成绩考差了班主任怎么办 高一的学生成绩跟不上怎么办 综合素质评价手册丢了怎么办 小学综合素质评价手册丢了怎么办 人体质不出汗差怎么办