我是靠谱客的博主 平常大山,这篇文章主要介绍Static关键字和空指针访问异常,现在分享给大家,希望可以做个参考。

一:static:
        1、static翻译为“静态”
        2、所有static关键字修饰的都是类相关的,类级别的。
        3、所有static修饰的,都是采用“类名.”的方式访问。
        4、static修饰的变量:静态变量
        5、static修饰的方法:静态方法

变量的分类:
        变量根据声明的位置进行划分:
            在方法体当中声明的变量叫做:局部变量。
            在方法体外声明的变量叫做:成员变量。

成员变量又可以分为:实例变量,静态变量。

二:实例方法和静态方法和空指针异常原因:

复制代码
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
class VarTest{ // 以下实例的,都是对象相关的,访问时采用“引用.”的方式访问。需要先new对象。 // 实例相关的,必须先有对象,才能访问,可能会出现空指针异常。 // 成员变量中的实例变量 int i; // 实例方法 public void m2(){ // 局部变量 int x = 200; } // 以下静态的,都是类相关的,访问时采用“类名.”的方式访问。不需要new对象。 // 不需要对象的参与即可访问。没有空指针异常的发生。 // 成员变量中的静态变量 static int k; // 静态方法 public static void m1(){ // 局部变量 int m = 100; } }

什么时候变量声明为实例的,什么时候声明为静态的?
        如果这个类型的所有对象的某个属性值都是一样的,
        不建议定义为实例变量,浪费内存空间。建议定义
        为类级别特征,定义为静态变量,在方法区中只保留
        一份,节省内存开销。
    
    一个对象一份的是实例变量。
    所有对象一份的是静态变量。

重点:加static的变量叫做静态变量
           静态变量在类加载时初始化,不需要new对象,静态变量的空间就开出来了。
           静态变量存储在方法区。

实例和静态访问的区别:

实例的:一定需要使用“引用.”来访问。用new创建引用对象

静态的:
        建议使用“类名.”来访问,但使用“引用.”也行(不建议使用"引用.")。
        静态的如果使用“引用.”来访问会让程序员产生困惑:程序员以为是实例的呢。
    
    结论:
        空指针异常只有在什么情况下才会发生呢?
            只有在“空引用”访问“实例”相关的,都会出现空指针异常。

总结实例:

复制代码
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
50
51
52
53
54
55
public class StaticTest04{ public static void main(String[] args){ // 这是比较正规的方式,静态方法采用“类名.” StaticTest04.doSome(); //对象 StaticTest04 st = new StaticTest04(); // 用“引用.”访问 st.doSome(); // 空引用 st = null; // 不会出现空指针异常 st.doSome(); // 这个代码在最终执行的时候还是会转变为:StaticTest04.doSome(); // 实例方法doOther() // 对象级别的方法(先new对象,通过“引用.”来访问) //错误: 无法从静态上下文中引用非静态 方法 doOther() //StaticTest04.doOther(); StaticTest04 st2 = new StaticTest04(); st2.doOther(); // 空引用 st2 = null; // 空引用调用实例方法会出现什么问题?空指针异常。 //st2.doOther(); } // 静态方法(静态方法不需要new对象,直接使用“类名.”来访问) // 但是也可以使用“引用.”来访问,不建议用。(因为其他程序员会感到困惑。) public static void doSome(){ System.out.println("静态方法doSome()执行了!"); } // 实例方法(实例相关的都需要new对象,使用"引用."来访问。) public void doOther(){ System.out.println("实例方法doOther执行了!"); } } // 从第一天开始讲解HelloWorld到目前为止,一个类当中一共就写过这些东西。 /* 类{ // 实例相关的都是需要new对象的,通过"引用."访问。 实例变量; 实例方法; // 静态相关的都是采用“类名.”访问。也可以使用“引用.”,只不过不建议。 静态变量; 静态方法; } */

最后

以上就是平常大山最近收集整理的关于Static关键字和空指针访问异常的全部内容,更多相关Static关键字和空指针访问异常内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部