static关键字和代码块
static关键字
static修饰的变量叫做静态变量
class StudentBean{ private String name; private int age; static String country; public void show(){ System.out.println("name="+name+"\t age="+age+"\t country="+country); } public StudentBean() { } public StudentBean(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
public static void main(String[] args) { StudentBean s1 = new StudentBean("张三",14); StudentBean s2 = new StudentBean("李四",18); StudentBean s3 = new StudentBean("王五",22); StudentBean.country="中国"; s1.show(); s2.show(); s3.show(); }
运行结果:
在学生类中定义一个静态变量country,在main方法中创建对象,通过类名.变量名的方式来给静态变量进行赋值。
被static修饰的静态变量,只能够被static修饰的静态方法访问
static的特点:
1、静态变量属于某个类,而不属于某个具体的对象
2、只有静态才能访问静态,而非静态变量不能够出现在静态方法中
3、访问静态成员的方式:
1.类名.成员变量
2.类名.成员方法
4、静态环境下不能出现this和super关键字
5、static能够修饰的成员(成员变量、成员方法、修饰内部类)
代码块
用“{ }”包裹的就是代码块
代码块分为三类:
1、局部代码块
定义在类的方法内,作用:限定局部变量的作用域
1 2 3 4 5 6 | public void show(){ { System.out.println( "局部代码块" ); } System.out.println( "name=" +name+ "\t age=" +age+ "\t country=" +country); } |
2、静态代码块
static修饰的代码块就称为静态代码块
作用:一般用于初始阿虎静态成员变量
静态代码快只会执行一次,在类加载的时候执行
static { /** * 静态代码块 */ System.out.println("静态代码块执行了"); country = "中国"; }
3、构造代码块
定义在类的成员变量的位置,用来抽取多个构造方法重复的代码,做成员变量的初始化操作,
会优先于构造方法执行
{ /** * 构造代码块 执行顺序在构造方法之前 */ System.out.println("构造代码块"); }
代码块执行顺序:
静态代码块>构造代码块>构造方法
构造代码块和构造方法在类对象创建的时候执行。可以执行很多次
案例:
class StudentBean{ private String name; private int age; static String country; static { /** * 静态代码块 */ System.out.println("静态代码块执行了"); country = "中国"; } { /** * 构造代码块 执行顺序在构造方法之前 */ System.out.println("构造代码块"); } public void show(){ { System.out.println("局部代码块"); } System.out.println("name="+name+"\t age="+age+"\t country="+country); } public StudentBean() { } public StudentBean(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
public static void main(String[] args) { StudentBean s1 = new StudentBean("张三",14); StudentBean s2 = new StudentBean("李四",18); StudentBean s3 = new StudentBean("王五",22); s1.show(); s2.show(); s3.show(); }
运行结果:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix