代码块
分类
1.普通代码块
2.构造块
3.静态块
4.同步代码块
普通代码块
定义在方法中的代码块;
例:
public class test{
public static void main(String[] args){
//普通代码块
{
int x=10;
System.out.println(“x1=”+x);
}
int x=100;
System.out.println(“x2=”+x);
}
}
输出结果为:
x1=10;
x2=100;
构造块
定义在类中的代码块,也叫实例代码块。构造代码块一般用于初始化实际成员变量。
例:
class Person{
private String name;
private int age;
private String sex;
public Person(){
System.out.println(“I am Person init()!”);
}
//实例代码块
{
this.name=“小明”;
this.age=16;
this.sex=“man”;
System.out.println(“I am instance init()!”);
}
public void show(){
System.out.println(“name:”+name+“age:”+age+“sex”+sex);
}
}
public class test{
public static void main(String[] args) {
Person p1=new Person();
p1.show();
}
}
运行结果为:
I am instance init()!
I am Person init()!
name:小明age:16sexman
注意事项:实例代码块优先于构造函数执行,并且产生n个对象就调用n次构造块,一般也可用构造块完成属性的初始化操作。
静态代码块
使用static定义的代码块,一般用于初始化静态成员属性。
例:
class Person{
private String name;
private int age;
private String sex;
private static int count=0;
public Person(){
System.out.println(“I am Person init()!”);
}
//静态代码块
static {
count=10;
System.out.println(“I am static init()!”);
}
public void show(){
System.out.println(“name:”+name+“age:”+age+“sex”+sex);
}
}
public class test{
public static void main(String[] args) {
Person p1=new Person();
Person p2=new Person();
}
}
注意事项:
1.静态代码块优先于构造代码块执行,在类加载时执行;主类中的静态代码块优先于主方法执行。
2.静态代码块不论生成多少个对象,其只会执行一次,且是最先执行。
补充说明
toString方法
定义:将任意类的对象转化成字符串,展示类中的属性信息;
任意一个类中,若没有提供toString()方法,则print函数输出其地址;若提供toString()方法,则print函数输出toString的返回值;
重点:
若使用IDEA编译器,快速生成toString方法的快捷键是:alt+insert;
匿名对象
没有被任何引用关联的对象,只能使用一次。
例:
class Person{
private String name;
private int age;
public Person(String name,int age){
this.age=age;
this.name=name;
}
public void show(){
System.out.println(“name:”+name+“age:”+age);
}
}
public class test{
public static void main(String[] args) {
new Person (“caocao”,19).show();
}
}