Java基础关键字static,final,this,main 等

时间:2021-09-14 18:21:15

1,this关键字

this代表对象,用于所属对象的引用。哪个对象在调用this所在函数,this就代表哪个对象。

一般的,如果功能内部用到了调用该功能的对象,可以用this表示。另外,this语句还可以用于构造函数间的调用。

this+"." 调用成员数学和成员方法;

this+"()"调用本类对应参数的构造函数;

注:用this调用构造函数,必须定义在构造函数的第一行。因为构造函数是用于初始化的,所以初始化动作一定要执行。否则编译失败。

2,Static关键字

1,想要实现对象中的共性数据的对象共享。可以将这个数据进行静态修饰。

 

2,被静态修饰的成员,可以直接被类名所调用。也就是说,静态的成员多了一种调用方式。类名.静态方式。

 

3,静态随着类的加载而加载。而且优先于对象存在。

 

3,static修饰静态成员变量和静态成员函数。

1,成员变量:数据共享时设置共享数据静态化。

注:成员变量和静态成员变量的区别:

成员变量是对象特有的数据,同一对象不同成员可有不同数据。静态变量为对象共享数据,即同一对象不同成员数据共享,或者相同。

成员变量属于对象,也是实例变量;静态变量属于类,也称为类变量

成员变量存于堆内存;静态变量存在方法区

成员变量随着对象创建存在,对象回收消失;成员变量随着类加载而存在,随着类消失而消失

成员变量只能被对象调用,也可以被类名调用

Demo:

 1 package com.hpioneer.Demo;
 2 
 3 public class Test_Person {
 4     public static void main(String[] args) {
 5         SPerson p1 = new SPerson();
 6         p1.name = "AA";
 7         p1.nation = "中国";
 8         System.out.println(p1.toString()); //AA 中国
 9 
10         SPerson p2 = new SPerson();
11         p2.name = "MM";
12         //p2.nation = "美国";
13         System.out.println(p2.toString());//MM 中国
14 
15         SPerson.nation = "美国";
16         System.out.println(SPerson.nation); //美国
17     }
18 
19 
20 }
21 class SPerson{
22     String name;
23     static String nation = "中国";
24 
25     @Override
26     public String toString() {
27         return "SPerson{" +
28                 "name='" + name + '\'' +
29                 ", nation="+nation
30                 ;
31     }
32 }

2,成员函数:方法中没有调用特有的数据便可设置为静态。先加载静态代码块,而且只执行一次,如果和主函数在同一类中,优先于主函数执行

静态代码块:一个有静态关键字标示的一个代码块区域。在类中定义。

 

 

Demo:

 1 package com.hpioneer.Demo;
 2 
 3 public class JavaTest {
 4 
 5     static {
 6         System.out.println("Demo2_Student静态代码块");
 7     }
 8 
 9     public static void main(String[] args) {
10         System.out.println("我是main方法");
11 
12         Student s1 = new Student();
13         Student s2 = new Student();
14         Student s3 = new Student();
15     }
16 }
17 
18 class Student{
19     static
20     {
21         System.out.println("Student 静态代码块");
22     }
23     {
24         System.out.println("Student 构造代码块");
25     }
26     public Student(){
27         System.out.println("Student 构造方法");
28     }
29 }

静态代码块、构造代码块、构造函数同时存在时的执行顺序:静态代码块 --> 构造代码块 --> 构造函数;

 

 

4,main关键字

用于定义主函数。主函数为该类是否能够独立运行的判定,是程序的入口,被JVM调用。