作用:对成员变量进行快速初始化
限定局部变量的作用域
public void show() { // 局部代码块 { int x = 100; System.out.println(x); } // 局部代码块 { int x = 200; System.out.println(x); } synchronized(new Object()) { } }可以抽取多个构造代码块的共性代码,简化程序
在构造方法前执行
每次创建对象都会执行
// 构造代码块 { System.out.println("我是构造代码块1"); // System.out.println(add()); } //在成员变量的位置static修饰的代码块
不管创建多少次对象,只执行一次
执行时机:类中任意成员被访问,静态代码块必然执行(在类被调用时执行,先于类中成员)
可以初始化静态成员
class CodeBlock { int a; int b; static int c; static { System.out.println("我是静态代码块1"); c = 100; } } //因为静态成员属于类,与对象无关,所以可以用静态代码块初始化由于在创建对象之前执行,并且只执行一次,所以通常会把预加载的代码放到静态代码块中(e.g. :数据库的连接, Xml,JSON等配置文件的读取)
包的本质就是文件夹;实现可对java文件的管理;解决了同包下重名问题
同包下的类不需要导包
java.lang包下的所有类都不需要导入,系统会帮我们导入
如果一个类没有声明包,意味着这个类将是孤立的类,其他包都无法访问默认包下的所有类,一般先建包再建类
如果在同一个类下使用两个不同包下的同名类的时候,需要使用类路径
com.sxt.thisdemo.Student s = new com.sxt.thisdemo.Student(); com.sxt.packagedemo.Student s2 = new com.sxt.packagedemo.Student();包的声明必须出现在Java文件的第一句,仅且只有一句
在书写类名的时候不要和系统的类重名
如果需要导入一个包下所有的类,可以使用**通配符 ***
import java.util.*;JDK常见一些包:
包名:作用java.lang包含一些Java语言核心类,如String、Math、Integer、System和Thread,提供常用功能。java.net包含执行与网络相关的操作的类。java.awt包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)。java.io包含能提供多种输入/输出功能的类。java.util包含一些实用工具类,如定义系统特性、使用与日期日历相关的函数。