一.this关键字
在编程时,为了区分成员变量和局部变量,而是用this关键词
this调用的是成员变量或者成员方法
this在实际运行时,表示当前正在调用此方法的对象,在方法中可直接用this.进行调用
this表示当前对象
public Student(int number,String name,String gender){ this.number = number; this.name = name; this.gender = gender; }
public class Student {
int number;
String name;
String gender;
public Student(){
this(1025,"chc","boy");
}
public Student(int number,String name,String gender){
this.number = number;
this.name = name;
this.gender = gender;
}
public void study(){
System.out.println(this.name + "好好学习!");
}
public void exam(){
System.out.println(this.name + "认真考试!");
}
public static void main(String[] args) {
Student student1 = new Student(1023,"GY","boy");
System.out.println(student1.number);
System.out.println(student1.name);
System.out.println(student1.gender);
System.out.println("--------");
Student student2 = new Student(1024,"LLL","girl");
System.out.println(student2.number);
System.out.println(student2.name);
System.out.println(student2.gender);
System.out.println("--------");
student1.study();
student1.exam();
System.out.println("--------");
student2.study();
student2.exam();
System.out.println("--------");
Student student3 = new Student();
System.out.println(student3.number);
System.out.println(student3.name);
System.out.println(student3.gender);
System.out.println("--------");
student3.study();
student3.exam();
}
}
二.static 关键字
static修饰的变量计划书静态变量(类变量,与类一样,只有一份)
当所有类的对象的某个属性相同时,可以把他定义为静态
当类被加载时,静态变量也会被加载,优先于对象创建存在
静态的先被执行,可以被类,对象访问,非静态的使用只能通过对象
static表示静态,可以修饰成员变量,成员方法,代码块,内部类
类--class--静态代码 只有一份的存在
静态:在内存中只有一份的存在
public class Chinese{
String name;
// static修饰的变量计划书静态变量(类变量,与类一样,只有一份)
// 当所有类的对象的某个属性相同时,可以把他定义为静态的
static String country = "中国";
}
new Chinese();
name = null;
// country = "中国";
new Chinese();
name = null;
// country = "中国";
static修饰后的成员,随着类的加载而加载,先于对象而存在
static修饰的成员变量内存中只有一份,适合将所有实例都相同的属
性设计为静态(中国人类 国籍都是中国)
静态成员可以使用类名/对象名调用,一般建议使用类名访问
public class Chinese {
String name;
static String country = "中国";
public static void main(String[] args) {
System.out.println(Chinese.country); //静态变量,可通过类名直接访问
System.out.println("--------");
Chinese Chinese1 = new Chinese();
Chinese1.name = "GY";
System.out.println(Chinese1.name);
System.out.println(Chinese1.country);//静态变量,也可以通过对象名访问
System.out.println("--------");
Chinese Chinese2 = new Chinese();
Chinese2.name = "LLL";
System.out.println(Chinese2.name);
System.out.println("--------");
Chinese.country = "中"; //改变静态变量的值,在后续的使用则会发生改变
System.out.println(Chinese.country);
System.out.println(Chinese1.country);
System.out.println("--------");
}
}
三.代码块
代码块:定义在类中,类似一个没有名称的方法,分为实例代码块和静态代码块
代码块没有名字,只能在满足条件是自动由系统调用
{
}
static{
}
实例代码块:在创建对象时,被自动调用
静态代码块:在类被加载时,被自动调用
类什么时候被加载:
通过类名访问类中静态成员时,类会被加载
在一个类中使用main方法,也会加载类
创建对象也会加载类
类只会被加载一次
如果有多个实例代码块或多个静态代码快,他们会按照先后顺序执行。
实例代码块先于构造方法执行
静态代码块-->静态方法-->实例代码块-->构造方法(非静态方法)
public class Demo {
{
System.out.println("实例代码块1");
}
{
System.out.println("实例代码块2");
}
static{
System.out.println("静态代码块1");
}
static{
System.out.println("静态代码块2");
}
public static void test(){
System.out.println("静态");
}
public Demo(){
System.out.println("构造方法");
}
public static void main(String[] args) {
test();
Demo Demo1 = new Demo();
}
}