java第三天

来源:互联网 发布:叶玉如 知乎 编辑:程序博客网 时间:2024/06/02 01:28

public class Student{
int age;
String name;
Student (int age ,String name){
this.name=name;
this.age=age;
}
Student(){
this(15,”lili”);
}
}
public class A{
public static void main(String[] args){
Student stu=new Student(12,”Tony”);
}
}

  • Student stu=new Student(12,”Tony”);
    Student 是类名
    stu是引用,它实际上类似一个指向对象的指针,保存着stu的内存地址
    它保存在所在方法执行的栈空间中。
    new Student();在内存的堆空间中创建了一个实例化对象
    垃圾回收机制:当堆中的对象不在有任何一个引用时,对象会被回收

构造函数Constructor

Student()是Student类的构造函数,每当实例化一个对象的时候执行,在调用构造函数的时候才会给成员变量赋值。
对于没有提供构造函数的类,默认会自动提供无参数的构造函数,并且给成员变量赋默认值。
对于已经手动提供了构造函数的类则不再提供无参数构造函数。
This(实参):通过构造函数去调用另一个构造方法,必须出现在程序的第一行。主要是为了代码的复用。

public class Student{
private int age;
public void setAge(int age){
this.age=age;
}
public int getAge(){
return age;
}
}


上述代码体现了java的封装特性,在setAge()中加入约束条件可以防止不合法的年龄被设置,同时提供开放的getAge().
两个方法均为成员方法,静态方法无法调用成员变量。


This
this是一个引用类型,在堆中每一个对象都有this
this保存的内存地址指向他本身,即当前对象
this能用在构造方法和成员方法中,不能用在静态方法中

static

static用来修饰静态变量和静态方法,还可以定义静态语句块。

  1. 静态语句块
    在类加载阶段会执行,并且只执行一次
  2. 实例化语句块
    在每一次对象创建之前执行,并且是自上而下执行

成员方法

使用“引用.”的方式调用

静态方法

  1. 使用“类名.”的方式调用
  2. 静态方法不能访问非静态数据
  3. 静态方法不能使用this
  4. 静态方法没有实例对象
  5. “引用.静态方法”在运行时仍然使用“类名.”的方式访问,仅与引用类型有关,与对象无关。且即使此时引用为NULL也不影响静态方法的调用,不会触发NullPointException.

总结
o

  1. 静态方法\变量
    “类名.”访问,通过“引用.”在底层也是“类名”
  2. 成员方法\变量
    “引用.”,必须存在对象
  3. 构造方法
    创造对象,给成员变量赋值
  4. 静态语句块
    类加载执行一次,有序
  5. 实例语句块
    实现对象构造方法前执行一次,有序
  6. this()
    构造方法中调用类内其他构造方法
  7. super()
    构造方法中调用父类构造方法
0 0
原创粉丝点击