01_代码块的概述和分类
A:代码块概述
B:代码块分类
根据位置和声明的不同,可以分为局部代码块,构造代码块,静态代码块,同步代码 C:常见代码块的应用
a:局部代码块
在方法中出现;限定变量生命周期,及早释放,提高内存利用率 b:构造代码块(初始化块)
在类中方法外出现;多个构造方法中相同的代码块存放到一起,每次调用构造都执行,并且在构造方法前执行;每创建一次对象就会执行一次,优先于构造方法执行 c:静态代码块
在类中方法外出现,加了static修饰 在类中方法外出现,并加上static修饰;用于给类进行初始化,在加载的时候就执行,并且只执行一次 一般用于加载驱动
public class Demo1 {
public static void main ( String[ ] args) {
{
int x = 10 ;
System. out. println ( "局部代码块" + x) ;
}
Student s1 = new Student ( ) ;
System. out. println ( "----------------------" ) ;
Student s2 = new Student ( "张三" , 23 ) ;
System. out. println ( s2. getName ( ) + "..." + s2. getAge ( ) ) ;
}
}
class Student {
private String name;
private int age;
public Student ( ) {
}
public Student ( String name, int age) {
this . name = name;
this . age = age;
}
public String getName ( ) {
return name;
}
public int getAge ( ) {
return age;
}
{
System. out. println ( "构造代码块!" ) ;
}
}
public class Demo1 {
public static void main ( String[ ] args) {
{
int x = 10 ;
System. out. println ( "局部代码块" + x) ;
}
Student s1 = new Student ( ) ;
System. out. println ( "----------------------" ) ;
Student s2 = new Student ( "张三" , 23 ) ;
System. out. println ( s2. getName ( ) + "..." + s2. getAge ( ) ) ;
}
}
class Student {
private String name;
private int age;
public Student ( ) {
}
public Student ( String name, int age) {
this . name = name;
this . age = age;
}
public String getName ( ) {
return name;
}
public int getAge ( ) {
return age;
}
{
study ( ) ;
}
public void study ( ) {
System. out. println ( "学生学习" ) ;
}
}
public class Demo1 {
public static void main ( String[ ] args) {
{
int x = 10 ;
System. out. println ( "局部代码块" + x) ;
}
Student s1 = new Student ( ) ;
System. out. println ( "----------------------" ) ;
Student s2 = new Student ( "张三" , 23 ) ;
System. out. println ( s2. getName ( ) + "..." + s2. getAge ( ) ) ;
}
}
class Student {
private String name;
private int age;
public Student ( ) {
}
public Student ( String name, int age) {
this . name = name;
this . age = age;
}
public String getName ( ) {
return name;
}
public int getAge ( ) {
return age;
}
{
study ( ) ;
}
public void study ( ) {
System. out. println ( "学生学习" ) ;
}
static {
System. out. println ( "静态代码块" ) ;
}
}
02_代码块面试题
class Demo1 {
public static void main ( String[ ] arge) {
{
int x = 3 ;
System. out. println ( "1,普通代码块内的变量x=" + x) ;
}
int x = 1 ;
System. out. println ( "主方法内的变量x=" + x) ;
{
int y = 7 ;
System. out. println ( "2,普通代码块内的变量y=" + y) ;
}
}
}
class Demo2 {
{
System. out. println ( "第一代码块" ) ;
}
public Demo2 ( ) {
System. out. println ( "构造方法" ) ;
}
{
System. out. println ( "第二构造块" ) ;
}
public static void main ( String[ ] args) {
new Demo2 ( ) ;
new Demo2 ( ) ;
}
}
class Code {
{
System. out. println ( "Code的构造块" ) ;
}
static {
System. out. println ( "Code的静态代码块" ) ;
}
public Code ( ) {
System. out. println ( "Code的构造方法" ) ;
}
}
public class Demo3 {
{
System. out. println ( "222222222" ) ;
}
static {
System. out. println ( "Demo3的静态代码块" ) ;
}
public Demo3 ( ) {
System. out. println ( "Demo3的构造方法" ) ;
}
public static void main ( String[ ] args) {
System. out. println ( "Demo3的主方法" ) ;
new Code ( ) ;
new Code ( ) ;
new Demo3 ( ) ;
new Demo3 ( ) ;
}
}
class Demo1_Code {
{
System. out. println ( "哈哈哈哈哈" ) ;
}
public static void main ( String[ ] args) {
{
int x = 10 ;
System. out. println ( x) ;
}
Student s1 = new Student ( ) ;
System. out. println ( "-------------------------------" ) ;
Student s2 = new Student ( "张三" , 23 ) ;
System. out. println ( "-------------------------------" ) ;
}
static {
System. out. println ( "主方法中的静态代码块" ) ;
}
}
class Student {
private String name;
private int age;
public Student ( ) {
System. out. println ( "空参构造" ) ;
}
public Student ( String name, int age) {
this . name = name;
this . age = age;
System. out. println ( "有参构造" ) ;
}
{
System. out. println ( "构造代码块" ) ;
}
static {
System. out. println ( "静态代码块" ) ;
}
}
class Demo2_Student {
{
System. out. println ( "222222222222222222222" ) ;
}
public static void main ( String[ ] args) {
System. out. println ( "我是main方法" ) ;
Student s1 = new Student ( ) ;
s1. study ( ) ;
System. out. println ( "-----------------------" ) ;
Student s2 = new Student ( ) ;
s2. study ( ) ;
}
static {
System. out. println ( "Demo2_Student 静态代码块" ) ;
}
}
class Student {
static {
System. out. println ( "Student 静态代码块" ) ;
}
{
System. out. println ( "Student 构造代码块" ) ;
}
Student ( ) {
System. out. println ( "Student 构造方法" ) ;
}
public void study ( ) {
System. out. println ( "学生学习" ) ;
}
}