Java_学习笔记_002(static 关键字、代码块)

static 关键字

  • static 方法只允许调用static属性或者static 方法;
  • 普通方法允许调用static属性或者static方法;
  • 普通方法或属性的调用是在实例化对象之后的,而静态属性或者方法可以在实例化对象之前通过类名来修改或者调用。
  • static方法或者属性只有在回避实例化对象调用并且描述公共属性的情况下才考虑使用static方法或者属性。

class Book {
    private String title ;
    private static int count = 0 ;

    public Book() {
        this("NO Title - " + count++);    //  使用静态变量 实现无参时自动编号书名
    }
    public Book(String title) {
        this.title = title ;
    }

    public String showInf() {
        return this.title;
    }
}
public class JavaDemo {
    public static void main(String[] args) {
        System.out.println(new Book("Java").showInf());
        System.out.println(new Book("c++").showInf());
        System.out.println(new Book().showInf());
    }
}

在程序之中使用“{}”定义的结构称为代码块,根据代码块出现的位置以及定义的关键字不同

代码块可以分为: 普通代码块、构造代码块、静态代码块、同步代码块(多线程)

 

普通代码块

定义在一个方法之中的代码块

可以在一个方法之中进行结构的拆分,防止相同变量名所带来的相互影响。

public class JavaDemo {
    public static void main(String[] args) {
        {
            int x = 50;
            System.out.println(x);
        }
        int x = 100;
        System.out.println(x);
    }
}

构造代码块

构造代码块是定义在类中的。

构造块会优先于构造方法执行,并且每一次实例化新对象的时候都会调用构造块中的代码

package com.itheima;
class Book {
    public Book() {
        System.out.println("构造方法执行");  
    }
    {
        System.out.println("构造块执行");
    }
}
public class JavaDemo {
    public static void main(String[] args) {
        new Book();
    }
}
运行结果:

构造块执行
构造方法执行

静态代码块

主要指的是static关键字定义的代码块,静态块的定义要考虑到两种情况:

在主类中定义静态块  优先于主方法执行

public class JavaDemo {
    static {
        System.out.println("主类中静态代码块执行,用于进行一些准备工作");
    }
    public static void main(String[] args) {
        System.out.println("main方法执行");
    }
}
运行结果:

主类中静态代码块执行,用于进行一些准备工作
main方法执行

在其他类中定义静态块  静态块优先于构造块执行 不管有多少个实例化对象出现  静态代码块只会执行一次!目的是为类中静态属性初始化...

package com.itheima;
class Book {
    public Book() {
        System.out.println("构造方法执行");  
    }
    static {
        System.out.println("静态块执行");
    }
    {
        System.out.println("构造块执行");
    }
}
public class JavaDemo {
    public static void main(String[] args) {
        new Book();
    }
}
运行结果:

静态块执行
构造块执行
构造方法执行

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值