static关键字的作用:
用来修饰成员变量和方法,被修饰的成员是属于类的,而不单单是属于某个对象的,也就是说,可以不靠对象来调用。
首先我们来介绍类变量
当static修饰成员变量时,该变量称为类变量,该类的每个对象都共享同一个类变量的值,任何
对象都可以更改该变量的值,但也可以在不创建该类对象的情况下,通过类名对类变量进行操作
命名格式
static 数据类型 变量名;
static int age;
下面我们来举个例子,让大家体会体会类变量的作用
就比如梁山有108位好汉我们给这108位好汉按照次序每人一个编号,这就需要使用到类变量
定义一个Person类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
public class Person { private int age; private String name; private int id; private static int count= 1 ; public int getId() { return id; } @Override public String toString() { return "Person{" + "age=" + age + ", name='" + name + '\ '' + ", id=" + id + '}' ; } public void setId( int id) { this .id=count; count++; } public Person( int age, String name) { this .age = age; this .name = name; this .id=count; count++; } public Person() { } public int getAge() { return age; } public void setAge( int age) { this .age = age; } public String getName() { return name; } public void setName(String name) { this .name = name; } } |
主函数
1
2
3
4
5
6
7
8
9
|
public class Test { public static void main(String[] args) { Person one = new Person( 18 , "及时雨宋江" ); System.out.println(one); Person two = new Person( 18 , "卢俊义" ); System.out.println(two); } } |
结果
我们看到id的数值在不断的+1,这是因为他们的id都等于了一个公共的类变量
接下来我们来介绍静态方法
静态方法即类中使用static修饰的方法,该方法使用类名可以直接调用,不需要创建类的对象
定义格式
修饰符 static 返回置类型 方法名 (参数列表){
//执行语句
}
示例
1
2
3
|
public static void eat(){ System.out.println( "吃饭了" ); } |
使用静态方法的注意事项
静态方法只可以直接访问类变量与静态方法
静态方法不能访问普通成员变量或成员方法
静态方法中不可以使用this关键字(因为this代表的是使用该方法的对象,而静态方法是属于类的,this无从指向,所以不可以使用)
下面我们写一段代码来使用一下静态方法
1
2
3
4
5
|
public class Person2 { public static void test(){ System.out.println( "这是静态方法" ); } } |
1
2
3
4
5
6
7
8
9
10
|
public class Test { public static void main(String[] args) { System.out.println( "这是使用类名调用的:" ); Person2.test(); Person2 person2 = new Person2(); System.out.println( "这是使用对象调用的:" ); person2.test(); } } |
运行结果
下面我们从内存的角度来讲讲静态的原理
先上代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
public class Teacher { private int age; private String name; private static String subject= "math" ; public Teacher( int age, String name) { this .age = age; this .name = name; } public Teacher() { } @Override public String toString() { return "Teacher{" + "age=" + age + ", name='" + name + '\ '' + '}' ; } public int getAge() { return age; } public void setAge( int age) { this .age = age; } public String getName() { return name; } public void setName(String name) { this .name = name; } public static String getSubject() { return subject; } public static void setSubject(String subject) { Teacher.subject = subject; } } |
1
2
3
4
5
6
|
public class Test { public static void main(String[] args) { Teacher wang = new Teacher( 18 , "wang" ); Teacher li = new Teacher( 19 , "li" ); } } |
小结:普通成员变量操作各自空间,静态变量操作共享空间
静态代码块,敲重点!!!这个在我们后面学习中会经常使用到
什么是静态代码块呢?
定义在成员位置,使用static修饰的代码块{}
位置:类中方法外
执行随着类的加载而执行且只执行一次,优先于main方法和构造方法的执行
格式
1
2
3
4
|
public class Person { static { } } |
这里就不深究了后面的文章我找几乎再说说
以上就是static关键字的一些基础知识,如有错误请各位批评指正
到此这篇关于JAVA Static关键字的用法的文章就介绍到这了,更多相关JAVA Static关键字内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://www.cnblogs.com/pjhaymy/p/13255734.html