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不会给局部变量赋予初始值,使用前必须要先初始化。