this总结

1、this总结:

  1.1 this是一个关键字,是一个引用,保存内存地址指向自身。

  1.2 this可以使用在实例方法中,也可以使用在构造方法中。

  1.3 this出现在实例方法中其实代表的是当前对象。

  1.4 this不能使用在静态方法中。

  1.5 this.  大部分情况下可以省略,但是用来区分局部变量和实例变量的时候不能省略。

  1.6 this() 这种语法只能出现在构造方法第一行,表示当前构造方法调用本类其他的构造方法,目的是代码复用。

 

/*
到目前为止一个类当中可以出现的:
类{
实例变量;
实例方法;

静态变量;
静态方法;

构造方法;

静态代码块;
实例语句块;

方法(){
//局部变量
int i=100;
}
}
*/

public class Review { //类
//类加载机制中,是这样的:在程序执行之前,凡是需要加载的类全部加载到JVM当中。
//先完成加载才会执行main方法。
static {
System.out.println("Review类加载时执行!");
}

//入口
//静态方法
public static void main(String[] args) {
//局部变量
int i=100;

//完成一个对象的一连串动作。
//一个学生在教室先学习,学习完成之后去餐厅吃饭。
Student s1=new Student();

//先学习,所以调用学习这个实例方法
s1.study();
Student s2=new Student();
}
}

//学生类
class Student{

static {
System.out.println("Student类加载时执行!");
}


//学号
private int no;//实例变量
//姓名
private String name;

//学生有静态变量吗?
//类级别的属性
static String job="学习";

{
System.out.println("实例语句块,构造方法执行一次,这里就执行一次");
}
//构造方法
public Student() {
//假设调用无参数的构造方法,默认创建的学生学号是100,名字是zhangsan
this(100,"zhangsan");//this()在这里也使用了。
}
//
public Student(int no, String name) {
this.no = no;//这里使用了this
this.name = name;
}

//封装
//setter and getter方法
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public Student(int no) {
this.no = no;
}
public int getNo() {
return no;
}

//提供两个实例方法
public void study(){
//私有的是可以在本类中访问的。在其它类中必须使用set和get方法。
//System.out.println(this.name+"正在努力的学习!");
//System.out.println(name+"正在努力的学习!");

//在实例方法中调用本类其它的实例方法。
//System.out.println(this.getName()+"正在努力的学习!");
System.out.println(getName()+"正在努力的学习!");

//方法执行到此处表示学习完成了,去吃饭。
//this.eat();
//this.可以省略
//编译器检测到eat()方法是实例方法,会自动在eat()方法前添加 this.
eat();

}

public void eat(){//实例方法
System.out.println(this.getName()+"在餐厅吃饭呢!!!");

//调用静态m1方法
//静态方法使用“类名.”的方式访问
// Student.m1();

//类名.可以省略吗?可以。
//java编译器会自动在m1()方法之前添加“类名.”,因为检测到m1()是一个静态方法。
m1();

}

//提供两个静态方法
public static void m1(){
System.out.println("Student's m1 method execute!");
//调用m2()方法;
m2();
}

public static void m2(){
System.out.println("Student's m2 method execute!");
System.out.println("工作性质:"+job);
//编译器检测到job是一个静态变量,所以这里会自动在job前添加:Student.
//System.out.println("工作性质:"+Student.job);
}




}
posted @ 2022-05-09 15:47  开山y  阅读(30)  评论(0编辑  收藏  举报