(1)基本数据类型和引用数据类型传参的区别
public class Test {
public void calc1(int num){
num=num+1;
}
public void calc2(Student student){
student.age=student.age+1;
}
public static void main(String[] args) {
Test test=new Test();
int n=8;
test.calc1(n);
Student stu=new Student();
stu.age=18;
test.calc2(stu);
System.out.println(n+"---"+stu.age);
}
}
*int n=8;test.calc1(n);是将 int num 赋为 “n”的值,然后调用方法为clac1的方法,num=num+1; num=9; 但是main()方法中要求打印的是 System.out.println(n);,是n的值,其中变量n的并未发生改变,所以输出的还是n 即为8;但是 stu.age=18;赋值是把原对象的引用传递给另一个引用,stu.age的值会受影响
*
基本数据类型,操作传递的是变量的值,改变一个变量的值不会影响另一个变量的值。引用数据类型(类、数组和接口),赋值是把原对象的引用(可理解为内存地址)传递给另一个引用
(2)成员变量和局部变量的区别
(1)在类中定义的变量叫作成员变量(全局变量),在方法中定义的变量叫作局部变量。
(2)局部变量声明赋值以后在使用,成员变量可以不赋值,值就是默认值。例如String类型的默认值是null,
int类型的默认值是0
(3)局部变量只能在当前的方法中使用,在其他方法中不能使用。但是成员变量可以在整个类下每个方法中使用。
(4)在一个方法中局部变量和成员变量重名了,方法中的局部变量会被优先使用,如果想在此方法中使用全局变量,则需要使用this关键字。
(5)在同一个方法中,局部变量不能够重名。
(3)方法重载的特点
1.在同一个类中;
2.方法名一样,但是参数不一样
3.对返回值没有要求
比如:
B错误 因为方法名相同,但是参数列表也相同,不符合方法重载的特点
(4)构造方法
构造方法:
(1)创建对象
(2)对象中的属性赋值
构造方法的语法:
访问修饰符 构造方法的名字(构造方法参数列表){
方法体
}
其中构造方法的名字和类名一致。构造方法定义的时候,不需要指定返回值。
public Student(){
//无参构造
}
public Student(String name){
//有参构造
}
如果不想敲的话,可以使用:
构造方法的快捷方式:能够帮助快速的创建类的无参构造方法 和类的有参构造方法。
alt + shift + s ===> 倒数第3个选项(使用属性生成构造方法) ==> 最后把super()代码去掉
构造方法的个数是不定的。构造方法需要多少个参数,需要什么参数,根据你开发的时候,
创建对象的时,想给对象的哪些属性赋值。
如果在方法中调用全局变量怎么办?请使用this关键字。
this关键字的作用:
(1)this关键字能够调用属性。(可以在构造方法中调用 也可以在实例方法中调用)
(2)this关键字调用本类中的方法。 注意:不要调用成死循环了
(3)this关键字调用构造方法。如果在构造方法中使用this关键字调用其他的构造方法,this关键字应该放在构造方法的第一行。注意:请不要调用成死循环了
构造方法:
如果一个类中没有定义构造方法,系统默认会帮助我们创建一个无参构造方法。
如果一个类中已经定义了构造方法,系统不会帮助我们创建一个无参构造方法。
类中一定一定一定要创建一个无参构造方法!!!
定义一个方法的时候,如果方法上没有使用static关键字,那么这个方法就是一个实例方法。