java值传递和引用传递
来源:互联网 发布:淘宝网页版登录首页 编辑:程序博客网 时间:2024/05/17 22:16
1)值传递
在方法调用中,实参会把他的值传递给形参,形参只是用实参的值初始化一个临时的存储单元,因此形参与实参虽然有着相同的值,但是却有着不同的存储单元,因此对形参的改变不影响实参的值
2)引用传递
在方法调用中,传递的是对象(也可以看做对象的地址),这时形参和实参指向同一块存储单元,因此对形参的修改就会影响实参的值
1 原始数据类型在传递参数时都是按值传递,包装类型在传递参数时是按引用传递的。
java中处理8个基本的数据类型(byte、short、int、long、boolean、char、float、double)用的是值传递,其他所有类型都用的是引用传递。
8个基本类型的包装类型都是不可变量。
2 引用也是按值传递的,引用的传递可以理解为传递了一个地址
//测试不可变量在传递参数的变化。public static void testPassParameter(String s1,StringBuffer s2,int i){s1+="world";s2.append("world");i=i+2;}//测试引用也是按值传递的。public static void testPassParameter(StringBuffer ss3,StringBuffer ss4){ss3.append(" world");ss4=ss3;}public static void main(String[] args) {//测试1int i=0;String s1="hello ";StringBuffer s2=new StringBuffer("hello");testPassParameter(s1,s2,i);System.out.println("i的值"+i+" String的值"+s1+" StringBuffer的值"+s2);//测试2StringBuffer s3=new StringBuffer("hello");StringBuffer s4=new StringBuffer("hello");testPassParameter(s3,s4);System.out.println(" S2的值"+s3+" S4的值"+s4);}输出结果为:
i的值0 String的值hello StringBuffer的值helloworld
S2的值hello world S4的值hello
s4的值为hello的原因:在testParameter函数中调用ss4=ss3时,相当于修改了函数内部的局部变量ss4,使ss4的地址等于ss3的地址,但是对s4的地址的值没有影响。
阅读全文
0 0
- java中的“值传递”和“引用传递”
- java值传递和引用传递
- java中的值传递和引用传递
- Java中的值传递和引用传递
- Java值传递和引用传递
- Java值传递和引用传递
- java中的值传递和引用传递
- java中的值传递和引用传递
- java中的值传递和引用传递
- Java中的值传递和引用传递
- java中的值传递和引用传递
- java--值传递和引用传递
- java中的值传递和引用传递
- java中的值传递和引用传递
- java中的值传递和引用传递
- java中的值传递和引用传递
- java中的值传递和引用传递
- java中的值传递和引用传递
- Bash scripts-II
- 符号表
- SpringBoot系列之三全局异常的捕获处理
- 二级列表实现CheckBox单选及全选
- map遍历删除异常:ConcurrentModificationException
- java值传递和引用传递
- 萌新程序媛笔记-第1章-程序设计入门
- 计算几何练习1
- 火车进站 一个入栈序列的所有出栈顺序
- 《程序员面试宝典第四版》笔记3
- 今天来聊聊序列化与烦序列化
- windows-caffe入门之用CPU训练自己的数据
- Java基础学习笔记 第二部分 part 2
- Servlet里的几种方法