java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java static报错到精通

新生小白学Java必看之static从报错到精通指南

作者:MOOUAN.

static是Java中用于修饰类成员的关键字,能够赋予变量、方法、代码块或内部类以类级别的共享性和独立性,这篇文章主要介绍了新生小白学Java必看之static从报错到精通的相关资料,需要的朋友可以参考下

前言

很多大一刚学 Java 的同学,最先懵、最容易报错、最搞不明白的关键字 ——绝对是 static

写代码的时候你一定遇到过:

其实 static 一点都不抽象!

本文专门针对大一 Java 新手,从零通俗讲解、带完整代码、解决所有报错、吃透 static 全部用法,重点加入执行优先级解析,看完直接从 “报错懵逼” 进阶到 “熟练使用”。

一、一句话吃透 static 核心本质

记住这两句话,你就懂了一半:

无 static:属于对象,每个对象独有一份

有 static:属于类,所有对象共享一份

通俗比喻:普通成员就像自己专属的生活用品,每个人都有自己的一份,互不干涉;被 static 修饰的成员就像教室公共设施,全班所有人共用同一份,一人修改,所有人看到的都会变。

static 的最大特点:不依赖对象,跟着类走,类一加载就存在。

二、static 可以修饰什么?

Java 中 static 只有四种用法,新手全部掌握就够用:

  1. 静态成员变量
  2. 静态成员方法
  3. 静态代码块
  4. 静态内部类

三、静态成员变量 —— 全局共享数据

核心特点

实战案例:统计对象创建次数

输出结果:3

可以看出:所有对象共用同一个静态变量,数据会累加。

四、静态成员方法 —— 不用 new 对象直接用

你天天写的 main 方法 就是最标准的静态方法!

核心特点

新手最大报错根源(必看)

在 main(静态方法)中,不能直接调用普通非静态方法!

报错:无法从静态上下文中引用非静态方法

原因:静态优先级更高、先加载,普通非静态还没创建对象,所以不能直接访问。

正确写法

直接把方法也加上 static,或者创建对象再调用。

开发规范:工具类全部用 static

工具类不需要创建对象,统一写法:私有构造 + 静态方法

五、静态代码块 —— 优先级最高、只执行一次

核心特点

必背执行优先级顺序(考试必考)

静态代码块 > main 方法 > 构造代码块 > 构造方法

演示代码

运行输出

这就是为什么有时候还没进入 main 方法,控制台就先打印内容,就是静态代码块优先级更高导致的。

六、静态内部类(了解即可)

新手只需记住三点:

七、大一新手必踩的 5 大 static 坑

  1. 局部变量不能加 static方法内部的变量,绝对不能写 static,直接编译报错!

  2. 静态方法不能使用 thisthis 指代当前对象,静态方法不属于对象,不能用。

  3. 静态不能直接访问非静态静态资源优先级高、先加载,非静态属于对象还没创建,自然访问不到。

  4. 不要随便用 static 存可变数据全局共享,多对象同时修改会互相干扰,极易产生 bug。

  5. 静态方法不存在重写静态方法是编译期绑定,没有多态,子类只是 “隐藏” 父类方法,不是重写。

八、终极总结:到底什么时候加 static?

✅ 适合加 static

❌ 不适合加 static

写在最后

static 的全部真理就一句话:

属于类就加 static,属于对象就不加!

再记住必考优先级:静态代码块 > main 方法 > 构造代码块 > 构造方法

只要你分清 对象级别类级别,懂静态优先执行规则,你再也不会报错、再也不会乱写 static。

本文适合大一 Java 新手收藏,以后碰到 static 报错、写代码犹豫,直接翻这篇就够了!

到此这篇关于新生小白学Java必看之static从报错到精通的文章就介绍到这了,更多相关Java static报错到精通内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文