Java形参赋值与变长形参

本文介绍了Java中值传递规则,包括基本数据类型、引用数据类型和String类的特性,并通过冒泡排序和圆的半径案例进行说明。此外,还详细讲解了形参长度可变的方法,阐述了变长形参的概念,并通过打印字符串的案例进行演示。

目录

一、值传递规则

1.基本数据类型

2.引用数据类型

3.String类

4.案例:冒泡排序中的值交换

5.案例:圆的半径

二、形参长度可变的方法

1.变长形参概念

2.案例:打印字符串


上一篇:Java的递归方法与方法的重载_SleepLeaf的博客-CSDN博客

 

 

 

一、值传递规则

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]);
		}
	}
}

打印结果:

 

 

-------------------------------------------完结✿✿ヽ(°▽°)ノ✿-----------------------------------------------

谢谢观看!

欢迎评论!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值