变量

  1. 给成员变量赋初始值的代码写在构造方法中,其它业务代码还是去做普通方法
  2. 基本类型变量(变量)中装的是具体的数,引用类型变量(引用)中装的是对象
  3. 成员变量:写在类中方法外,作用范围为整个类
    局部变量:写在方法中(包括方法的参数),作用范围为当前方法
  4. 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

  1. super:指代当前对象的超类对象
    super的用法:
  • super.成员变量名-----------------------------访问超类的成员变量
  • super.方法名()----------------------------------调用超类的方法
  • super()--------------------------------------------调用超类的构造方法

注意:super()调用超类构造方法,必须位于派生类构造方法的第一行

引用类型数组

  • 给引用类型数组的元素赋值,需要new一下
  • 若想访问对象的属性或调用方法,需要通过数组元素去打点

基本类型内存图

java中对象使用的心得_java

 引用类型数组内存图

java中对象使用的心得_java中对象使用的心得_02

 

程序演示

//注意:对于引用数组而言,必须给所有元素都赋值,否则访问时会发生空指针异常
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(); //每个学生跟大家问好
}