变量
- 给成员变量赋初始值的代码写在构造方法中,其它业务代码还是去做普通方法
- 基本类型变量(变量)中装的是具体的数,引用类型变量(引用)中装的是对象
- 成员变量:写在类中方法外,作用范围为整个类
局部变量:写在方法中(包括方法的参数),作用范围为当前方法 - java规定:成员变量与局部变量是可以同名的,使用的时候默认采取的是就近原则
注意:当成员变量和局部变量同名时,若想访问成员变量,则this不能省略
构造方法
构造方法:构造函数、构造器、构建器---------------给成员变量赋初始值代码。
- 作用:给成员变量赋初始值
- 构造器与类同名,没有返回值类型(连void都没有)
- 在创建(new)对象时被自动调用
- 若自己不写构造方法,则编译器默认提供一个无参构造方法,若自己写了,则不再默认提供
- 构造方法可以重载
//学生类
public class Student {
String name;
int age;
String address;
//构造方法
Student(String name,int age,String address){
this.name = name;
this.age = age;
this.address = address;
}
}
this
this:指代当前对象,哪个对象调用方法它指的就是哪个对象只能用在方法中,方法中访问成员变量之前默认有个this.
this的用法:
- this.成员变量名----------------------访问成员变量
注意:当成员变量和局部变量同名时,若想访问成员变量,则this不能省略
- this.方法名()--------------------------调用方法(可以省略,没有什么情况下是不能省略)
- this()------------------------------------调用构造方法(一般不用----了解)即用this调用自己的构造器
null:表示空,没有指向任何对象。
若引用的值为null,则该引用不能进行任何点操作了,若操作则发生NullPointerException空
指针异常.
程序演示
//学生类
public class Student {
String name; //成员变量(整个类中)
int age;
String address;
//构造方法
Student(String name,int age,String address){ //局部变量(当前方法中)
this.name = name;//this.name指的是成员变量
//name指方法的参数,属于局部变量
this.age = age;
this.address = address;
}
//方法
void study(){
System.out.println(name+"在学习...");
}
void sayHi(){
System.out.println("大家好,我叫"+name+",今年"+age+"岁了,家住"+address);
}
}
//构造方法的演示
public class ConsDemo {
public static void main(String[] args) {
//Student zs = new Student(); //编译错误,Student类没有无参构造方法.若自己写了,则不再默认提供
Student zs = new Student("zhangsan",25,"LF");//所以必须在new对象时带参数
Student ls = new Student("lisi",24,"JMS");
zs.sayHi();
ls.sayHi();
}
}
super
- super:指代当前对象的超类对象
super的用法:
- super.成员变量名-----------------------------访问超类的成员变量
- super.方法名()----------------------------------调用超类的方法
- super()--------------------------------------------调用超类的构造方法
注意:super()调用超类构造方法,必须位于派生类构造方法的第一行
引用类型数组
- 给引用类型数组的元素赋值,需要new一下
- 若想访问对象的属性或调用方法,需要通过数组元素去打点
基本类型内存图
引用类型数组内存图
程序演示
//注意:对于引用数组而言,必须给所有元素都赋值,否则访问时会发生空指针异常
Student[] stus = new Student[3]; //创建Student数组对象
stus[0] = new Student("zhangsan",25,"LF"); //创建Student对象
stus[1] = new Student("lisi",24,"JMS");
stus[2] = new Student("wangwu",26,"SD");
System.out.println(stus[0].name); //输出第1个学生的名字
stus[1].age = 28; //修改第2个学生的年龄为28
stus[2].sayHi(); //第3个学生跟大家问好
for(int i=0;i<stus.length;i++){ //遍历学生数组
System.out.println(stus[i].name); //输出每个学生的名字
stus[i].sayHi(); //每个学生跟大家问好
}