块与静态块和常量

**

1.块与静态块

**
在Java类中,有两种初始化块: 静态初始化块和非静态初始化块。它们都是定义在类中,用大括号{}括起来,静态代码块在大括号外还要加上static关键字。

非静态初始化块(构造代码块):
作用:给对象进行初始化。对象一建立就执行,且优先于构造函数的运行。
静态初始化块:
作用:给类进行初始化。随着类的加载而执行,且只执行一次。
以后不管实例化多少个对象,也不会在执行。

构造函数、非静态初始化块、静态代码块的区别:
相同点:都是用于初始化,三者的执行顺序依次是:静态代码块>构造代码块>构造函数。
不同点:1、必须在应用程序一启动时就执行一次的代码,放在静态块中。
2、初始化共通属性(不能接收参数)。
3、初始化本对象属性(可以接收参数)。
**

2.常量

**
常量定义
有一些数据是固定值,逻辑上要求值不能改变。比如:PI、一周七天等。
如何保证变量的值在运行期无法被改变?——使用常量

定义常量:
1、使用final关键词定义常量
2、常量的值在运行期间恒定不变
3、常量标识符在程序中只能被引用,而不能被重新赋值
4、基本数据类型常量,其值不能被改变。
5、引用数据类型常量,其指向不能被改变。
6、如果属性声明为常量,那么没有默认初始值。
7、final修饰类时,表示这个类不能被继承,final修饰方法时,表示这个方法不能被重写。
(String就是一个final类)

常量使用规范
在实际开发中,使用常量要注意:
1、常量一律全部大写。
2、一般在一个接口中定义项目中所使用的全部常量。在Java 接口中声明的变量在编译时会自动加上static final的修饰符,即声明为常量,因而Java接口通常是存放常量的最佳地点。

package staticTest;

public class Person {
	
	private static String type;
	private int age ;
	private String name;

	//块
	{
		age = 1;//共通的
		System.out.println("这是一个块");
	}
	
	//静态块
	static{
		type = "";
		System.out.println("这是一个静态块");
	}
	
	public Person(){
		System.out.println("这是父类构造方法");
	}
	//构造方法
	public Person(String name){
		this.name = name;//个人所独有
		System.out.println("这是一个构造方法");
	}
	
	public void say(){
		final int num = 10;
	}
}
package staticTest;

public class Student extends Person{//监控Student被实例化了几个对象

	{
		System.out.println("这是一个子类块");
	}
	
	static
	{
		System.out.println("这是一个子类静态块");
	}
	String name;
	int age;
	
	
	public Student(){
		System.out.println("这是一个子类构造函数");
	}
	
	public static void doStudy(){
		System.out.println("正在学习");
		//冒泡排序
		//单例模式
		//jdbc模板代码
		//三段代码背下来
	}
}
package staticTest;

public interface CommonInfo {

	//标准声明常量方式
	public static final double PI = 3.1415926;
}
package staticTest;

public class Test01 {

	public static void main(String[] args) {
		
		Person zhangsan = new Student();
		System.out.println(CommonInfo.PI);

	}//静态块只调用一次,在第一次创建时调用,以后再也不创建
	//用来初始化静态属性

}

在这里插入图片描述在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值