【Java】类与对象 -> 参数传值

本文介绍了Java中的参数传值机制,强调了基本数据类型和引用类型参数的区别。对于基本类型,传值是原始值的拷贝,而引用类型则是引用的拷贝,方法内对参数的修改不会影响原始对象。此外,还提到了可变参数的使用,允许参数数量的灵活性。

 

目录

面向过程语言简介

面向对象语言简介

面向对象编程的三个特性

 

参数传值

传值机制

基本数据类型的参数的传值

引用类型参数的传值

可变参数


面向过程语言简介

核心是编写解决问题某个问题的代码块,代码块是程序执行时产生的一种行为。面向过程语言缺少一种最本质的概念,那就是“对象”。

面向对象语言简介

最核心的内容就是“对象”。

一个简单的理念就是:需要完成某种任务时,首先要想到,谁去完成任务,即哪个对象去完成任务;提到数据,首先想到这个数据是哪个对象的。

面向对象编程的三个特性

1.封装性 2.继承 3.多态

 

参数传值

传值机制

在Java中,方法中参数变量的值是调用者指定的值的拷贝。因此,方法如果改变参数的值,不会影响向参数“传值”的变量的值。参数得到的值类似于生活中的“原件”和“复印件”,那么改变“复印件”不能影响“原件”。

基本数据类型的参数的传值

对于基本数据类型的参数,向该参数传递的值的级别不可以高于该参数的级别。

//基本数据类型参数的传递

class Computer{
	int add(int x,int y) {
		return x+y;
	}
}

public class Example4_6 {

	public static void main(String[] args) {
		Computer com = new Computer();
		int m = 100;
		int n = 200;
		int result = com.add(m, n);
		System.out.println(result);
		result = com.add(120+m, n*10+8);
		System.out.println(result);

	}

}

引用类型参数的传值

Java的引用型数据包括:数组,对象,接口。

当参数是引用类型时,“传值”传递的是变量中存放的“引用”,而不是变量所引用的实体。

需要注意的是:对于两个相同类型的引用型变量,如果具有相同的引用,就会用相同的实体;因此,如果改变参数变量所引用的实体,就会导致原变量的实体发生相同的变化;但是,改变参数变量中存放的“引用”不会影响向其传值的变量中存放的“引用”。

Battery.java

public class Battery {
	int electricityAmount;
	Battery(int amount){
		electricityAmount = amount;
	}
}

Radio.java

public class Radio {
	void openRadio(Battery battery) {
		battery.electricityAmount = battery.electricityAmount - 10;
	}
}

Example4_7.java

package 模拟电池;

public class Example4_7 {

	public static void main(String[] args) {
		Battery nanfu = new Battery(100);
		System.out.println("南孚电池的储电量是:" + nanfu.electricityAmount);
		Radio radio = new Radio();
		System.out.println("收音机开始使用南孚");
		radio.openRadio(nanfu);
		System.out.println("目前南孚电池的使用量是:" + nanfu.electricityAmount);
	}

}
/*
南孚电池的储电量是:100
收音机开始使用南孚
目前南孚电池的使用量是:90
*/

(这个模拟电池的程序,写完以后是不是感觉和面向过程编程有一点不一样的感觉,有点微妙啊)

可变参数

是指在声明方法时不给出参数列表中从某项开始直至最后一项参数的名字和个数,但这些参数的类型必须相同。

可变参数使用“...”表示若干个参数,这些参数的类型必须相同。

public void f(int ... x)

在方法f的参数列表中,从第1个至最后一个都是int型,但连续出现的int型的参数的个数不确定。称x是方法f的参数列表中的可变参数的“参数代表”。

public void g(double a,int ... x)

称x是方法g的参数列表中的可变参数的“参数代表”。“参数代表”必须是参数列表中的最后一个

x.length等于x所代表的参数的个数。

对于类型相同的参数,如果参数的个数需要灵活的变化,那么使用参数代表可以使方法的调用更加的灵活。例如:计算若干个整数的和

public class practice {
	
	public static void main(String[] args) {
		int sum1 = getSum(1,2,3,4,5);
		int sum2 = getSum(1,1,1,11);
		System.out.println("sum1 = " + sum1);
		System.out.println("sum2 = " + sum2);
	}
	
	public static int getSum(int ... x) {
		int sum = 0;
		/*for(int i=0;i<x.length;i++) {
			sum += x[i];
		}*/
		for(int param:x) {
			sum = sum + param;
		}
		return sum;
	}
	
}
/*
sum1 = 15
sum2 = 14
*/

for(声明循环变量:参数代表){

          ...

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值