代码块
概念:用{}括起来的一段代码,在不同的位置有不同的名称,不同的作用,不同
的执行时机。
局部代码块
静态代码块
构造代码块(初始代码块、动态代码块)
局部代码块
位置:方法中
作用:限定局部变量的作用域范围,限定变量的生命周期;
在局部代码块中声明的变量,只能在局部代码块中使用。
package com. DaYu;
public class Demo01 {
public static void main ( String[ ] args) {
int a = 12 ;
{
int b = 23 ;
a = 13 ;
System. out. println ( a) ;
System. out. println ( b) ;
}
System. out. println ( a) ;
}
}
构造代码块
位置:类中方法外
作用:1.加载时机:每次创建对象的时候,由jvm自动调用;
2.在构造方法之前执行,并且每次调用都会执行一次构造代码块;
3.可以将所有构造方法都要执行的内容提取到构造代码块中。
静态代码块
位置:类中方法外,被static修饰的构造代码块
作用:1.随着类的加载而执行,同时可以给静态变量进行初始化赋值;
2.用于只需要执行一次的代码,如驱动加载;
3.类只加载一次,所以静态代码块只执行一次,并且执行的时机最早。
package com. DaYu;
public class Demo03 {
public static void main ( String[ ] args) {
Person1 p = new Person1 ( ) ;
System. out. println ( p. name + " " + Person1. age) ;
Person1 p2 = new Person1 ( "二毛" ) ;
System. out. println ( p2. name+ " " + Person1. age) ;
}
}
class Person1 {
String name;
static int age;
{
name = "大毛" ;
System. out. println ( "构造代码块执行了" ) ;
}
static {
age = 13 ;
System. out. println ( "静态代码块执行了" ) ;
}
public Person1 ( ) {
System. out. println ( "空参构造执行了" ) ;
}
public Person1 ( String name) {
super ( ) ;
this . name = name;
System. out. println ( "有参构造执行了" ) ;
}
}
结果:
静态代码块执行了
构造代码块执行了
空参构造执行了
大毛 13
构造代码块执行了
有参构造执行了
二毛 13
final关键字
表示最终的,不可改变的。
可以修饰变量、方法和类
final修饰局部变量,只能赋值一次。
final修饰的成员变量,没有默认值,只能赋值一次,可以直接赋值,可以在构造
代码块中进行赋值,如果没有在构造代码块中赋值,那么每个构造方法中都
必须进行赋值。
final修饰静态变量,也叫作常量,没有默认值,只能赋值一次,可以在静态代码
块中进行赋值,也可以直接赋值。
final修饰的方法,特点和静态方法一样,可以被重载,但是不能被重写。
final修饰的类,不能被继承,没有子类。
package com. DaYu;
public class Demo04 {
public static void main ( String[ ] args) {
}
}
class Person {
String name;
final int age;
{
}
public Person ( ) {
age = 10 ;
}
public Person ( String name) {
age = 10 ;
this . name = name;
}
}