JAVA_12 面向对象-static与代码块

一、静态的概述和特点

static:是一个关键字,用于修饰成员变量和成员方法
特点:

	被所有的对象所共享;
	可以使用类名调用
	静态的加载优先于对象
	随着类的加载而加载

二、静态的注意事项

1、静态方法可以调用静态的成员变量
StaticDemo.java

public class StaticDemo{
	public static void main(String[] args){
		Student.graduate = "zkku";
		Student.study();
	}
} 

Student.java

public class Student{
	private String name;
	private int age;
	static String graduate;
	public static void study(){
		System.out.println(graduate);
	}
}

2、静态方法可以调用静态的成员方法
Student.java

public class Student{
	private String name;
	private int age;
	static String graduate;
	public static void study(){
		System.out.println(graduate);
		sleep();
	}
	public static void sleep(){
		System.out.println("sleep");
	}
}

3、静态方法不可以调用非静态成员变量
Student.java

public class Student{
	private String name;
	private int age;
	static String graduate;
	public static void study(){
		System.out.println(name);//报错,静态成员方法优先于name对象加载,此时study静态方法加载时,name对象还未加载
	}
	public static void sleep(){
		System.out.println("sleep");
	}
}

4、静态方法不可以调用非静态成员方法(同3)
5、静态方法只能调用静态的成员
6、非静态方法可以调用静态的成员方法、变量;也可以调用非静态的成员方法、变量
7、静态的方法中是否有this对象?无

三、静态的优缺点以及应用场景

优点:

对对象的共享数据提供单独空间的存储,节省空间,没有必要每一个对象都存储一份
可以直接被类名调用,不在堆内存创建对象

缺点:

访问出现局限性(静态虽好,但只能访问静态)

应用场景:

Math
	static double PI     π的值
	static double abs(double a)  返回绝对值
	static double ceil(double a)  天花板,即向上取整
	static double floor(double a)  地板,即向下取整
	statiac long round(double a) 四舍五入
	static double max(double a, double b) 找最大值
	static double min(double a, double b) 找最小值
	static double pow(double a, double b) 返回第一个参数的第二个参数次幂
	static double random() 返回一个随机数,且是一个大于0,小于1的数

四、自定义工具类

通过static,自定义工具类

五、代码块的概述

在Java中,使用{}括起来的代码被称为代码块
代码块的分类:

局部代码块:存在方法中,控制变量的生命周期(代码域)
构造代码库:提取构造方法中的共性,每次创建对象都会执行,并在构造方法执行之前执行
	输出:
				构造代码块
				无参构造
				构造代码块
				有参构造
静态代码块:随着类的加载而加载,只加载一次,加载类时需要做的一些初始化,比如加载驱动
	输出:
				静态构造代码块
				无参构造
				有参构造
同步代码块(多线程)

猜你喜欢

转载自blog.csdn.net/weixin_43801116/article/details/107383418