携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第23天,点击查看活动详情
代码块
使用
{}定义的一段代码。
根据代码块定义的位置以及关键字,又可分为以下四种:
- 普通代码块 定义在方法中的代码块!
class Animal{
String name;
int age;
public void speak(){
//普通代码块,在方法中
{
System.out.println("haha");
}
}
}
- 构造块 构造块:定义在类中的代码块(不加修饰符)。也叫:实例代码块。构造代码块一般用于初始化实例成员变量。
class Animal{
String name;
int age;
//构造块
{
System.out.println("构造方法");
}
}
在new一个对象时,构造块比构造构造方法先执行!
class Animal{
String name;
int age;
public Animal(){
System.out.println("构造方法");
}
//构造块
{
System.out.println("构造块");
}
}
public class Test {
public static void main(String[] args) {
Animal animal = new Animal();
}
}
- 静态块
静态块:由
static定义的代码块!一般用于初始化静态属性!
class Animal{
static String name;
//静态代码块
static {
name = "bug郭";
}
}
public class Test {
public static void main(String[] args) {
Animal animal = new Animal();
System.out.println(Animal.name);
}
}
new一个对象时,构造方法,构造块,静态代码块三者的优先级!
class Animal{
static String name;
//构造块
{
System.out.println("构造块");
}
//构造方法
public Animal(){
System.out.println("构造方法");
}
//静态代码块
static {
System.out.println("静态代码块");
}
}
public class Test {
public static void main(String[] args) {
Animal animal = new Animal();
System.out.println("=========");
Animal animal2 = new Animal();//静态代码块是否还会执行???
}
}
注意事项:
1.静态代码块只执行一次!
2.三者执行优先顺序:
静态代码块,构造块,构造方法
- 同步代码块 bug郭尚未学习到,就不做介绍!
toString方法
Object类中有一个toString方法,而我们的创建的所有类都是Object的子类,所有,我们创建的类继承了父类Object中的toString方法!
可以看到
toString方法返回我们的class的类名+'@'+哈希处理过的对象地址!
既然是父类中的方法我们就可以在子类中重写父类方法!
我们可以通过刚刚我们学习
setter和getter快捷方式直接进行重写!
重写
toString方法可以返回属性名和属性值!重写后使我们打印一个对象的属性值更快捷方便!
这就是
java中类和对象所有的内容!如有遗漏,还望指出!