static关键字
static静态的
成员修饰符 : 只能修饰成员位置的内容,不能修饰局部
修饰变量 : 静态变量|类变量
修饰方法 : 静态方法|类方法
修饰块 : 静态块
修饰类 : 静态内部类
静态内容的使用:
1.跟随类名使用
类名.静态变量名
类名.静态方法名(参数列表);
2.跟随对象使用
引用.静态变量名
引用.静态方法名(参数列表);
例如:
public class Class001_Static {
//成员位置: 类中方法外
//实例变量
int i = 1;
//静态变量
static int j = 2;
//静态方法
public static void main(String[] args) {
//测试静态内容使用方式
System.out.println(j); //本类中可以省略类名直接使用
System.out.println(Class001_Static.j);
Class001_Static cs = new Class001_Static();
Class001_Static cs2 = new Class001_Static();
System.out.println(cs.j);
//测试实例变量的使用
System.out.println(cs.i);
//System.out.println(Class001_Static.i);
cs.j++;
cs2.j++;
System.out.println(cs.j); //4
System.out.println(cs2.j); //4
System.out.println(Class001_Static.j); //4
}
}
成员变量 :
被static修饰的变量 称为静态变量|类变量
不被static修饰的变量 称为实例变量
成员方法:
被static修饰的方法称为静态方法|类方法
不被static修饰的方法 称为 实例方法
块(block):
block 块:
{} 块 自成作用域
分类 | 位置 | 作用 | 执行时机 |
局部代码块|普通代码块 | {}定义在方法中 | 1) 作用域看待 2) 语义化 | 跟随方法的调用而执行 |
构造块 | {}定义在类中方法外 | 1) 成员内容的初始信息,比构造器中的代码跟早执行 2) 对对象的某些内容进行初始 | |
静态块 | static修饰{},定义在类中方法外 | 1) 会为静态内容进行初始化 2) 信息的配置,资源的加载 | 在类第一次加载完成之后执行 |
public class Class001_Block {
static int i ;
int j = 1;
public Class001_Block(){
System.out.println("构造器");
}
//构造块
{
System.out.println("构造块1");
System.out.println(i);
System.out.println(this.j); //当前new的对象
// 造块 : {}定义在类中方法外 跟随new一起使用
}
{
System.out.println("构造块2");
}
{
System.out.println("构造块3");
}
//静态块
static{
System.out.println("静态块1");
System.out.println(i);
//非静态的成员变量j不能直接在静态内容中使用,需要跟随对象
//System.out.println(j);
}
static{
System.out.println("静态块2");
i = 1000;
}
static{
System.out.println("静态块3");
}
public static void main(String[] args) {
System.out.println("main");
//局部
//int i =1;
//局部代码块
{
int i = 10;
System.out.println(i);
}
System.out.println(i);
new Class001_Block();
}
}
debug工具
debug的作用:
1.追踪程序的执行流程
2.定位异常出现的位置
3.观察程序运行期间变量变化的情况
4.根据程序的执行流程学习第三方框架的源码
步骤:
1.打断点
在行号的后面单击设置断点,单击取消断点
2.debug运行
step over F8 下一步跳过
如果遇到方法的调用,不进入,直接跳过进入下一行 step into F7 步入
如果下一步遇到自定义方法的调用,进入方法跟随执行,如果是jdk提供的方法,不会进入
Force step into alt+shift+F7 强制步入
如果是jdk提供的方法,会强制进入跟随执行
step out shift+F8 跳出
如果执行在方法的调用中,下一步直接调出到方法调用的位置
Run to Cursor 运行到光标所在位置