千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:重庆千锋IT培训  >  技术干货  >  一文了解Java开发中的静态代码块和静态类、静态导入

一文了解Java开发中的静态代码块和静态类、静态导入

来源:千锋教育
发布人:lxl
时间: 2023-04-06 10:58:38

  关于static,还有其他的一些内容,比如静态类、静态代码块和静态导入等,接下来给大家继续分析讲解。我们一起来看看这些内容都是怎么用吧。

  一. 静态代码块

  概念

  由static修饰的代码块称为静态代码块,每个类中可以有多个静态代码块,每个静态代码块都只会在类加载时执行一次。对那些只需要进行一次操作的初始化代码,就可以放在静态代码块中执行。静态代码块具有如下特性:

  ● 静态代码块类似于是一个方法,但它不可以在方法中调用,也不能存在于任何方法体中;

  ● 静态代码块可以写在类中的任何地方,一个类中也可以有多个静态代码块;

  ● 静态代码块在类加载时执行;

  ● 静态代码块优先于动态代码块执行;

  ● 如果类中包含多个静态代码块,则JVM虚拟机会按它们在类中出现的先后顺序依次执行,每个静态代码块只会被执行一次;

  ● 静态代码块与静态方法一样,不能直接访问类的实例变量和实例方法,需要通过类的实例对象来访问。

  语法

  静态代码块的语法格式如下:

  static {

  //代码内容

  }

  静态代码块的语法格式比较奇特,static关键字后面直接跟一个{ }花括号,这就是静态代码块。我们可以在这个静态代码中编写若干代码,效果类似于是一个方法。

  案例

  3.1 定义User类

  我们先来定义一个User类,在该类中定义一个静态代码块,一个非静态代码块,还有一个构造方法。在Java中,按照代码执行时间的早晚:

  静态代码块 > 非静态代码块 > 构造方法 > 普通方法

  我们要记住以下几点:

  ● 静态代码块,在类被加载时就会自动调用,且只会被调用一次。

  ● 非静态代码块,在对象被创建时自动调用,每次创建对象时都会执行。

  ● 而构造方法,每创建一个对象就会执行一次。

静态代码块和静态类、静态导入

  3.2 定义测试类

  接下来我们再定义一个测试类,在这里创建3个User对象。

静态代码块和静态类、静态导入

  3.3 执行结果分析

  上面的代码执行结果如下图所示:

静态代码块和静态类、静态导入

  在上述代码中,我们创建了3个User对象。其中,无论构造几次对象,一个类中的一个static静态代码块都只会执行一次,所以在构造第一个User对象时num是10。然后执行非静态代码块,num变成11,age等于20。接着执行构造方法。num=12,age=21。

  之后开始构造第2个对象,此时只执行非静态代码块和构造方法,不会再执行静态代码块。因为num是静态属性,所以第2个user对象继续共享num变量,num=13;而因为age是成员变量,所以age是一个新的成员变量,age仍然是20。接着执行构造方法,num=14,age=21。

  最后创建第3个User对象,过程和上述一样。

  二. 静态内部类

  概念

  在Java中,我们可以在一个类的内部定义另一个类,也就是A类里面可以嵌套一个B类,这个内部的B类就叫做内部类。而内部类根据是否带有static关键词,可以分为静态内部类和非静态内部类。

  其中,静态内部类使用 static关键字修饰。对于静态内部类,我们可以直接访问,不需要创建外部类来访问它。

  注意,对于内部类,壹哥会在后面进行专门的讲解,所以此处我们大家先有个印象即可。

  语法

  静态内部类的语法格式如下:

  public class 外部类 {

  //代码...

  static class 内部类{

  //代码...

  }

  }

  3. 案例

  3.1 定义静态内部类

  这里壹哥先简单定义一个静态内部类,后面我们在学习内部类时再专门讲解。在这个静态内部类中,壹哥定义了一个方法,来访问外部类中的普通属性和静态属性。我们要记住以下几点:

  ● 静态内部类访问外部类的成员变量时,需要先创建外部类对象;

  ● 非静态内部类可以直接访问使用外部类的成员变量,如同使用本类中的变量;

  ● 所有的内部类访问外部类的静态变量时,可以直接通过"外部类.静态变量"的形式访问。

图片9

  3.2 定义测试类

  我们再定义一个测试类,看看内部类对象是怎么调用的。

静态代码块和静态类、静态导入

  三. 静态导入

  概念

  JDK 1.5之后,Java中新增了一种静态导入的语法,用于导入指定类中的某个静态变量、静态方法或全部的静态变量和静态方法。如果一个类中的方法全都是使用 static 声明的静态方法,我们就可以通过import static的方式进行导入,这种导包方式就叫做静态导入。

  语法

  我们要使用import static语句进行静态导入,根据导入数量的多少,会有两种情况:

  ● 部分导入:导入部分静态变量或静态方法;

  ● 全部导入:导入全部静态变量或静态方法。

  2.1 部分导入

  部分导入是指利用静态导入的语法,导入指定类中单个的静态变量或静态方法。语法格式如下:

  import static package.ClassName.fieldName|methodName;

  package要导入的包名,ClassName类名,fieldName是静态变量名或methodName静态方法名。

  2.2 全部导入

  全部导入是指利用静态导入的语法,导入指定类中全部的静态变量或静态方法。语法格式如下:

  import static package.ClassName.*;

  上面的星号是java中的一种通配符,代表所有导入的静态变量或静态方法名。

  我们要注意,import static语句要放在Java代码的 package 语句之后、类定义之前,与普通的import语句平级。

  3. 案例

  这里设计一个简单的案例,给大家演示一下静态导入的使用。我们之前进行输出的时候,经常使用System.out.println("");语句,其实这样就挺麻烦,每次都要写System.out,实际上我们只需要调用println()方法就可以了。而println()就是一个静态方法,所以我们就可以使用静态导包来简化操作了。

静态代码块和静态类、静态导入

  至此,就把static静态变量、静态常量、静态代码块、静态类、静态导入等相关的内容给大家全部介绍完毕了。这些都是我们开发时很常用的内容,希望各位初学者,要把static相关的内容牢牢掌握。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

java的输入语句—— Scanner类

2023-05-04

java数据库操作常识事务的四大特性

2023-05-04

DML数据操作之增加或删除数据

2023-05-04

最新文章NEW

socket是什么?有什么作用?

2023-05-04

Java常量定义是什么

2023-04-28

一分钟带你学多线程

2023-04-28

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>