建设一个网站流程图,电脑传奇游戏哪个好玩,手把手教你制作网页,运营好网站前言
在上一篇文章中给大家讲解了static静态关键字#xff0c;以及静态变量、静态常量和静态方法等内容。但是关于static#xff0c;还有其他的一些内容#xff0c;比如静态类、静态代码块和静态导入等#xff0c;接下来给大家继续分析讲解。我们一起来看看这些内容都是怎…前言
在上一篇文章中给大家讲解了static静态关键字以及静态变量、静态常量和静态方法等内容。但是关于static还有其他的一些内容比如静态类、静态代码块和静态导入等接下来给大家继续分析讲解。我们一起来看看这些内容都是怎么用吧。
全文大约【3300】字不说废话只讲可以让你学到技术、明白原理的纯干货本文带有丰富的案例及配图可以让你更好地理解和运用文中的技术概念并可以给你带来具有足够启迪的思考......
一. 静态代码块
1. 概念
由static修饰的代码块称为静态代码块每个类中可以有多个静态代码块每个静态代码块都只会在类加载时执行一次。对那些只需要进行一次操作的初始化代码就可以放在静态代码块中执行。静态代码块具有如下特性
● 静态代码块类似于是一个方法但它不可以在方法中调用也不能存在于任何方法体中
● 静态代码块可以写在类中的任何地方一个类中也可以有多个静态代码块
● 静态代码块在类加载时执行
● 静态代码块优先于动态代码块执行
● 如果类中包含多个静态代码块则JVM虚拟机会按它们在类中出现的先后顺序依次执行每个静态代码块只会被执行一次
● 静态代码块与静态方法一样不能直接访问类的实例变量和实例方法需要通过类的实例对象来访问。
2. 语法
静态代码块的语法格式如下
static {
//代码内容
}
静态代码块的语法格式比较奇特static关键字后面直接跟一个{ }花括号这就是静态代码块。我们可以在这个静态代码中编写若干代码效果类似于是一个方法。
3. 案例
3.1 定义User类
我们先来定义一个User类在该类中定义一个静态代码块一个非静态代码块还有一个构造方法。在Java中按照代码执行时间的早晚
静态代码块 非静态代码块 构造方法 普通方法
我们要记住以下几点
● 静态代码块在类被加载时就会自动调用且只会被调用一次。
● 非静态代码块在对象被创建时自动调用每次创建对象时都会执行。
● 而构造方法每创建一个对象就会执行一次。 3.2 定义测试类
接下来我们再定义一个测试类在这里创建3个User对象。 3.3 执行结果分析
上面的代码执行结果如下图所示 在上述代码中我们创建了3个User对象。其中无论构造几次对象一个类中的一个static静态代码块都只会执行一次所以在构造第一个User对象时num是10。然后执行非静态代码块num变成11age等于20。接着执行构造方法。num12age21。
之后开始构造第2个对象此时只执行非静态代码块和构造方法不会再执行静态代码块。因为num是静态属性所以第2个user对象继续共享num变量num13而因为age是成员变量所以age是一个新的成员变量age仍然是20。接着执行构造方法num14age21。
最后创建第3个User对象过程和上述一样。
二. 静态内部类
1. 概念
在Java中我们可以在一个类的内部定义另一个类也就是A类里面可以嵌套一个B类这个内部的B类就叫做内部类。而内部类根据是否带有static关键词可以分为静态内部类和非静态内部类。
其中静态内部类使用 static关键字修饰。对于静态内部类我们可以直接访问不需要创建外部类来访问它。
注意对于内部类会在后面进行专门的讲解所以此处我们大家先有个印象即可。
2. 语法
静态内部类的语法格式如下
public class 外部类 {
//代码...
static class 内部类{
//代码...
}
}
3. 案例
3.1 定义静态内部类
这里先简单定义一个静态内部类后面我们在学习内部类时再专门讲解。在这个静态内部类中定义了一个方法来访问外部类中的普通属性和静态属性。我们要记住以下几点
● 静态内部类访问外部类的成员变量时需要先创建外部类对象
● 非静态内部类可以直接访问使用外部类的成员变量如同使用本类中的变量
● 所有的内部类访问外部类的静态变量时可以直接通过外部类.静态变量的形式访问。 3.2 定义测试类
我们再定义一个测试类看看内部类对象是怎么调用的。 三. 静态导入
1. 概念
JDK 1.5之后Java中新增了一种静态导入的语法用于导入指定类中的某个静态变量、静态方法或全部的静态变量和静态方法。如果一个类中的方法全都是使用 static 声明的静态方法我们就可以通过import static的方式进行导入这种导包方式就叫做静态导入。
2. 语法
我们要使用import static语句进行静态导入根据导入数量的多少会有两种情况
● 部分导入导入部分静态变量或静态方法
● 全部导入导入全部静态变量或静态方法。
2.1 部分导入
部分导入是指利用静态导入的语法导入指定类中单个的静态变量或静态方法。语法格式如下 上面的星号是java中的一种通配符代表所有导入的静态变量或静态方法名。
我们要注意import static语句要放在Java代码的 package 语句之后、类定义之前与普通的import语句平级。
3. 案例
我们在这里设计一个简单的案例给大家演示一下静态导入的使用。我们之前进行输出的时候经常使用System.out.println();语句其实这样就挺麻烦每次都要写System.out实际上我们只需要调用println()方法就可以了。而println()就是一个静态方法所以我们就可以使用静态导包来简化操作了。 四. 结语
至此我们就把static静态变量、静态常量、静态代码块、静态类、静态导入等相关的内容给大家全部介绍完毕了。这些都是我们开发时很常用的内容所以希望各位初学者要把static相关的内容牢牢掌握。最后壹哥再来给大家简单总结一下本文要点
● 静态成员属于所有实例对象都“共享”的字段是类中的“公共财产”
● 调用静态方法不需要实例对象静态方法中不能使用this和super
● 静态方法中可以访问静态变量和其他静态方法
● 静态方法一般是在工具类中定义
● 掌握静态代码块的写作方式
● 掌握静态内部类的调用方式
● 掌握静态导入的使用方式。