面向对象14:static关键字详解
常量类型:final
public final class Person{}
- final定义后不能被继承(extends),final定义后”断子绝孙“
代码块
1. 匿名代码块
- 处于构造器之前
//2:可以用来赋初始值
{
//代码块(匿名代码块),在构造器之前
System.out.println("匿名代码块");
}
2.静态代码块
- 静态代码块,当类一加载就执行,永久只执行一次
//1:只执行一次,当第二次实例化就不执行
static{
//静态代码块,当类一加载就执行,永久只执行一次
System.out.println("静态代码块");
}
例子
package com.oop.staticDemo08;
//final:常量类型 public final class Person:final定义后不能被继承(extends),final定义后”断子绝孙“
public class Person {
//2:可以用来赋初始值
{
//代码块(匿名代码块),在构造器之前
System.out.println("匿名代码块");
}
//1:只执行一次,当第二次实例化就不执行
static{
//静态代码块,当类一加载就执行,永久只执行一次
System.out.println("静态代码块");
}
//3
public Person(){
System.out.println("构造方法");
}
public static void main(String[] args) {
Person person1 = new Person();
System.out.println("=========");
Person person2 = new Person();
}
}
结果
-
静态代码块
匿名代码块构造方法
============
匿名代码块
构造方法
静态变量和非静态变量
private static int age;//静态变量 多线程
private double score;//非静态变量
静态方法和非静态方法
public void run(){
}
public static void go(){
//静态方法和类一起产生可以任何方法内调用,非静态方法要实例化后 属性.方法 调用
}
使用
public static void main(String[] args) {
Student s1 = new Student();
System.out.println(Student.age); //静态变量可以用类名调用,对类而言内存中只有一个可以被类中的所有实例共享
//System.out.println(Student.score);//非静态变量不能用类名调用
System.out.println(s1.age);
System.out.println(s1.score);
}
例子
package com.oop.staticDemo08;
//static
public class Student {
private static int age;//静态变量 多线程
private double score;//非静态变量
public void run(){
}
public static void go(){
//静态方法和类一起产生可以任何方法内调用,非静态方法要实例化后 属性.方法 调用
}
public static void main(String[] args) {
Student s1 = new Student();
System.out.println(Student.age); //静态变量可以用类名调用,对类而言内存中只有一个可以被类中的所有实例共享
//System.out.println(Student.score);//非静态变量不能用类名调用
System.out.println(s1.age);
System.out.println(s1.score);
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人