局部变量和成员变量
局部变量和成员变量的比较,我们从以下四个方面:
-
在类中定义的位置不同
- 局部变量 方法或者方法的形参
- 成员变量 方法外 类中成员位置
-
在内存中的位置不同
- 局部变量 栈上
- 成员变量 堆中的对象中
-
生命周期不同
- 局部变量 随着方法的进出栈而存在而销毁
- 成员变量 对象创建以后 对象销毁就没了
-
初始化值不同
- 局部变量 没有默认的初始化值,需要手动初始化
- 成员变量 有默认的初始值
- char \u0000
- boolean false
-
作用范围
- 局部变量 只在方法范围内生效
- 成员变量 对象当中,整个类的成员方法都可以使用,在普通的加static的方法中,不能使用
局部变量和成员变量的比较:
1.在类中定义的位置不同 a. 局部变量: 定义在类中方法体之内,或者方法的形参的位置 b. 成员变量: 类中,方法之外 2.在内存中的位置不同 a. 局部变量: 栈中 b. 成员变量: 存储在堆上的,对象中的 3.生命周期不同 a. 局部变量: 随着方法进栈而创建,随着方法出栈而销毁 b. 成员变量: 随着对象的创建而创建,随着对象的销毁而销毁 4.初始化值不同 a. 局部变量: 必须在使用之前手动赋予初值 b. 成员变量: jvm会赋予默认初值 5.作用范围不同 a. 局部变量:只在方法内部起作用 b. 成员变量:整个类都可以使用
this关键字
- 引例
- 创建一个汽车类,有颜色和速度两个属性,行为是可以跑
- 然后在成员方法中调用属性,调用该方法
- 在成员方法的形参列表中,定义和属性同名的局部变量,再次调用该方法
总结:
1,使用对象调用成员方法时,java会自动把该对象传给成员方法,由this关键字来接收。(这意味着可以通过this调当前对象的成员变量和成员方法)
2,也就是说,成员方法中,默认有一个this来代表当前对象。(在成员方法和main方法中打印引用和this是一个结果)
3,不同对象的this代表不同对象
4,this关键字可以用来区分成员变量和局部变量



构造方法(constructor)
例子:
创建一个教师类,有课程和年龄两个属性,行为时可以睡觉
思考一下,我们给成员变量赋值的语句,是不是显得冗余?
怎么改进?
能不能“出厂”的时候就设定好呢?
构造方法:在Java程序设计语言中,必须使用构造器来进行创建对象
- 构造方法是一种特殊方法,用来创建初始化对象(实例)
语法:
public 类名(参数){
//方法体
}






注意:
1,没有返回值,并且方法名是首字母大写的(因为类名是首字母大写)
2,new对象的时候,自动调用这个方法
3,Java默认提供无参构造方法,但是如果你提供了一个有参的构造方法,那么就没有默认的无参构造了—>我们写代码时,应该直接把无参构造提供了
4,构造方法最大的作用是在new对象时给对象的属性赋值
5,构造方法可以重载,重载时可以活用this关键字,调用已有的构造方法
-
a,只能在构造方法中,用this调用另一个构造方法
-
b,如果使用this调用别的构造方法,那么这条语句必须在该构造方法的第一行
6,构造方法无法通过普通方法的调用方式调用
标准类制作

Student
public class Student {
//成员变量
private String name;
private int age;
//构造方法
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
//成员方法
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
public void show() {
System.out.println(name + "," + age);
}
}
StudentDemo
public class StudentDemo {
public static void main(String[] args) {
//无参构造方法创建对象后使用setXxx()赋值
Student s1 = new Student();
s1.setName("林青霞");
s1.setAge(30);
s1.show();
//使用带参构造方法直接创建带有属性值的对象
Student s2 = new Student("林青霞",30);
s2.show();
}
}
1444

被折叠的 条评论
为什么被折叠?



