13.方法和方法重载

本文介绍了Java中的方法传参差异,基本数据类型传值,引用数据类型传址。讲解了构造方法的无参和有参形式,以及构造方法在对象初始化中的作用。此外,还探讨了方法重载的概念和要求,以及成员变量与局部变量的作用域和区别。
摘要由CSDN通过智能技术生成

1.方法传参

基本数据类型和引用数据类型数据在传参时区别

通过以下代码来体会

public class StudentTest {
       
		// 定义calc1方法
		public void calc1(int n) {
			n = n + 1;
			System.out.println(n);
		}

        //定义calc2方法
		public void calc2(Student student) {
			student.age = student.age + 1;
			System.out.println("方法内的学生年龄:"+student.age);
		}

	//main函数测试
	public static void main(String[] args) {

		//创建StudentTest类对象
		StudentTest test = new StudentTest();
		int n=8;
		System.out.println(n);//8
		test.calc1(n);//调用calc1方法,将n的值传递给形参n,并执行calc1方法的代码,执行结果是9
		System.out.println(n);//8,参数是基本数据类型时,传递的是值,相当于拷贝一份传递给形参
			
		System.out.println("------------------");
			
		Student stu=new Student();
		stu.age=18;
			
		System.out.println(stu.age);//18
			
			
		test.calc2(stu);//调用calc2方法,将对象stu传递给student,并执行calc2方法的代码,执行结果是19
		ystem.out.println(stu.age);//19,参数类型是引用数据类型,传递的是地址,会影响stu.age的值
		}
	}

可以得出结论:

基本数据类型,操作传递的是变量的值,改变一个变量的值不会影响另一个变量的值。

引用数据类型(类、数组和接口),赋值是把原对象的引用(可理解为内存地址)传递给另一个引用

2.构造方法

无参构造方法:

访问权限修饰符   构造方法名(){};

特点:

1.无返回值类型,连void也不写;

2.构造方法名和类名一样;

3.每创建一个类,系统就会为这个类自动添加一个无参构造方法(默认存在的)。

有参构造方法:

访问权限修饰符   构造方法名(参数列表){

        初始化代码;

}

 注:当你在类中添加了其他的构造方法,默认的无参构造方法就会被覆盖掉,如果还需要使用,需要手动添加。

作用:无论有参无参,构造方法的作用就是创建对象,即对象初始化。

代码演示:

构造方法:

public class Student {
	String name;
	int age;
	char gender;
	double height;
	double weight;
	
	//手动添加无参构造方法
	public Student(){};
	
	//有参构造方法
//	public Student(String str,int a,char g,double h,double w){
//		name=str;
//		age=a;
//		gender=g;
//		height=h;
//		weight=w;
//	}
	
	//形参做到见名知意,可以这么写
	//使用关键字this:表示一个对象,表示当前对象,谁调用这个构造方法,this就表示谁
	//this();表示调用构造方法,写在{}中的第一行
	//this.方法名();调用普通方法
	public Student(String name,int age,char gender,double height,double weight){
		this.name=name;
		this.age=age;
		this.gender=gender;
		this.height=height;
		this.weight=weight;
	}
	//属性很多时,可以右击鼠标-->Source--->Generate Constructor using Fields...快速构造

补充:关键字this的用法

调用属性:this表示一个对象,当前对象,通过this.属性名调用;

调用方法:this.方法名();

调用构造方法:this();      或者     this.(参数列表);

注:调用构造方法时。如果使用,必须是构造方法中第一条语句。

创建对象:

public static void main(String[] args) {
		//使用系统默认的无参构造方法创建对象
		Student stu1=new Student();
		stu1.name="张翰";
		stu1.age=22;
		stu1.gender='男';
		stu1.height=183;
		stu1.weight=70;
		
		//使用有参方法创建对象
		Student stu2=new Student("王二", 22, '男', 183, 70);
		//输出对象stu2的姓名属性值
		System.out.println(stu2.name);
	}

3.方法重载

在同一个类中,多个方法的方法名相同,参数列表不同,这种现象称之为方法重载。

特点:

1、在同一个类中;

2、方法名相同;

3、参数列表不相同(包括参数个数、参数顺序、参数类型);

4、与返回值和访问修饰符无关。

4.成员变量和局部变量

变量声明的位置决定变量作用域,变量作用域确定可在程序中按变量名访问该变量的区域。

成员变量:又称全局变量,定义在类中,方法外。

局部变量:定义在方法和结构中的变量,只能作用在方法中或者定义它的结构中。

成员变量和局部变量的区别

作用于域不同:

局部变量的作用域仅限于定义它的方法;

成员变量的作用域在整个类内部都是可见的

初始值不同:

Java会给成员变量一个初始值;

Java不会给局部变量赋予初始值,使用前必须要先初始化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值