Java基础类代码块与关键字final
代码块
类的成员之4 :代码块(或者初始化块)
代码块的作用:用来初始化类、对象
代码块如果修饰的话,只能用static
分类:静态代码块vs非静态代码块
静态代码块:
在类中可以执行多个静态代码块,多个并存时按照顺序执行
可以有输出语句
随着类的加载而执行,只执行一次
作用:初始化类的属性
静态代码块执行优先于非静态代码块的执行
静态代码块只能调用静态的属性和方法,不能调用非静态的属性和方法
非静态代码块:
可以有输出语句
随着对象的创建而执行.每创建对象就执行一次
作用可以创建对象时,对对象的属性赋值
对属性赋值的位置
默认初始化-->显示初始化/在代码块初始化(按照前后顺序)--->构造器初始化--->在代码块初始化
非静态代码块按照前后顺序执行
非静态代码块能调用静态的属性和方法,也能调用非静态的属性和方法
示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | public class BlockTest { public static void main(String[] args) { String desc = Person.desc; Person p1 = new Person(); Person p2 = new Person(); Person.info(); } } class Person{ //属性 String name; int age; static String desc= "我是人" ; //构造器 public Person(){ } public Person(String name, int age){ this .name = name; this .age = age; } //静态代码块 static { System.out.println( "hello,static bloc !" ); } static { System.out.println( "1234567" ); } //非静态的代码块 { System.out.println( "hello,非静态代码块" ); age = 9 ; name = "wee" ; System.out.println( this .age); } { System.out.println( "hello,非静态代码块00000" ); } //方法 public void eat(){ System.out.println( "吃" ); } @Override public String toString() { return "Person{" + "name='" + name + '\ '' + ", age=" + age + '}' ; } public static void info(){ System.out.println( "1234567" ); } } 测试结果 hello, static bloc ! 1234567 hello,非静态代码块 9 hello,非静态代码块 00000 hello,非静态代码块 9 hello,非静态代码块 00000 1234567 Process finished with exit code 0 |
关键字:final
在Java中声明类、变量和方法时,可使用关键字final来修饰,表示“最终的”。
final标记的类不能被继承。提高安全性,提高程序的可读性。
string类、System类、StringBuffer类
final标记的方法不能被子类重写。
比如:Object类中的getClass()。
final标记的变量(成员变量或局部变量)即称为常量。名称大写,且只能被赋值一次。
final标记的成员变量必须在声明时或在每个构造器中或代码块中显式赋值,然后才能使用。
final double MY_PI = 3.14;
final :最终的
1.可以修饰的结构;类、方法、属性
2. final 用来修饰类,被修饰的类不能称为别的父类不能被继承
Final 用来修饰方法,表示此方法不可以被重写
Final 修饰变量:此时的“变量”就称为常量
Final 修饰属性:可以考虑赋值位置:显示初始化、代码块中初始化、构造器初始化
Final 修饰局部变量:尤其是使用final修饰形参时,表明此形参时个常量,
当调用此方法时,给常量形参赋值一个形参,赋值以后,就只能在方法体内使用形参,不能重新赋值
static final 用来修饰属性方法
修饰属性:全局变量
示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | public class FinalTest { final int width = 10 ; public void doWidth(){ //width =20; } public static void main(String[] args) { FinalB f1 = new FinalB(); f1.eat( 7 ); } } final class FinalA{ } class FinalB { public void eat( final int o){ //不可以 // int o = 6; System.out.println(o); } } |
草都可以从石头缝隙中长出来更可况你呢
分类:
java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏