目录
一、值传递规则
1.基本数据类型
基本数据类型在使用等号赋值时,传递的数据是栈空间的数据,而非堆空间中的;
基本数据类型的栈空间存放的是具体的数据,因此赋值时也是具体的数据。
2.引用数据类型
引用数据类型在栈空间存放的是地址值,因此赋值时传递的是地址值;
如果改变了地址值指向的堆空间的数据,则栈空间地址值指向该堆空间的变量的数据都会改变;
因此引用数据类型是可以改变堆空间的数据的。
3.String类
String类型比较特殊,String类实参赋值给形参后,再在方法内将新的数据赋值给形参时,数据会生成新的地址值并赋予形参,实参的地址值并不会发生改变。
因此String类型的实参不会因为形参在方法内被重新赋值后改变。
4.案例:冒泡排序中的值交换
1)目标:构造一个方法替换掉冒泡排序中的值交换部分。
2)代码实现:
主代码:
import java.util.Arrays;
public class ValueTransmit {
public static void main(String[] args){
Tools test = new Tools();
int[] irr = new int[]{1, 10, 3, 20, 5, 30, 7};//定义数组
System.out.println(Arrays.toString(irr));//打印数组
test.bubble(irr);//使用冒泡排序的方法给数组irr排序
System.out.println(Arrays.toString(irr));//打印排序后的数组
}
}
类文件代码:
public class Tools {
//将数组元素从小到大排序
public void bubble(int[] irr){
for(int i = 0 ; i < irr.length ; i++){
for(int j = 0; j < irr.length -i -1 ; j++){
if(irr[j] > irr[j+1]){
swap(irr, j);
}
}
}
}
//交换数组相邻元素值的方法
public void swap(int[] arr, int i){
int temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
输出结果:
5.案例:圆的半径
1)目标:构造这样的一个方法,输入圆的半径后,可以打印出1到这个数之间整数的圆的面积
2)代码实现:
主代码:
public class ValueTransmit {
public static void main(String[] args){
ValueTransmit vt = new ValueTransmit();//创建主代码体的对象
Circle o = new Circle();//创建圆类的对象
vt.printArea(o, 7);//将创建好的圆的对象带人,并将7赋值给形参输入
}
//实现打印圆的面积的方法
public void printArea(Circle o,int r){
System.out.println("半径\t\t面积");
for(int i = 1; i <= r; i++){
o.radius = i;
System.out.println(o.radius + "\t\t" + o.getAreas());
}
}
}
类文件代码:
public class Circle {
double radius;//属性:半径
public double getAreas(){//获取面积的方法
return Math.PI * radius * radius;
}
}
3)输出结果:

二、形参长度可变的方法
1.变长形参概念
它可以有多个形参,或者1个、0个形参,数量是不确定的,相当于没有定义长度的数组。
2.案例:打印字符串
1)目的:通过打印多个字符串来体验变长形参方法
2)代码实现:
主代码:
public class Overload {
public static void main(String[] args){
TheMax test = new TheMax();//声明对象test
test.var("小松鼠","咖啡猫","米奇");
}
}
类文件代码:
public class TheMax {
//遍历所有字符串
public void var(String ... sr){
for(int i = 0; i < sr.length ; i++){
System.out.println(sr[i]);
}
}
}
打印结果:
、
-------------------------------------------完结✿✿ヽ(°▽°)ノ✿-----------------------------------------------
谢谢观看!
欢迎评论!
本文介绍了Java中值传递规则,包括基本数据类型、引用数据类型和String类的特性,并通过冒泡排序和圆的半径案例进行说明。此外,还详细讲解了形参长度可变的方法,阐述了变长形参的概念,并通过打印字符串的案例进行演示。

565

被折叠的 条评论
为什么被折叠?



