• 类的成员之一:代码块


    一.类的成员之一:代码块(属性 方法 构造器 代码块)
    1.非静态代码块(初始化块)
    ①格式:类中的一对{}
    ②在每次创建对象时执行
    ③非静态代码块的执行优先于构造器
    ④用于为对象进行初始化(通常为多个构造器中的共性内容进行初始化)
    ⑤非静态代码块可有多个,依次向下顺序执行

    为属性赋初始值的方式:①默认值(缺省值)② 直接显示赋值 ③ 构造器 ④ 代码块
                        顺序:① ②④ ③       注意:②④按顺序执行

    2.静态代码块
    ①格式:static{}
    ②随着类的加载而加载,并且只加载一次
    ③静态代码块的执行优先于构造器
    ④静态代码块中不能使用非静态成员,也不能使用this和super关键字
    ⑤静态代码块可有多个,依次向下顺序执行
     

    1. public class StaticTest {
    2. public static void main(String[] args) {
    3. Person p1=new Person();
    4. // p1.cry();
    5. Person p2=new Person("");
    6. //p2.cry();
    7. Person p3=new Person("",18);
    8. //p3.cry();
    9. }
    10. }
    11. class Person{
    12. private String name;
    13. private int age;
    14. public Person(){
    15. //cry();
    16. System.out.println("Person's Constructor....");
    17. }
    18. public Person(String name){
    19. //cry();
    20. this.name=name;
    21. }
    22. public Person(String name, int age) {
    23. //cry();
    24. this.name = name;
    25. this.age = age;
    26. }
    27. {
    28. cry();
    29. System.out.println("非静态代码块1.....");//可以多个
    30. }
    31. {
    32. cry();
    33. System.out.println("非静态代码块2.....");//顺序执行
    34. }
    35. {
    36. cry();
    37. System.out.println("非静态代码块3.....");
    38. }
    39. public String getName() {
    40. return name;
    41. }
    42. public void setName(String name) {
    43. this.name = name;
    44. }
    45. public int getAge() {
    46. return age;
    47. }
    48. public void setAge(int age) {
    49. this.age = age;
    50. }
    51. public void cry() {
    52. System.out.println("哭...");
    53. }
    54. }

    执行顺序:


    2.静态代码块
    ①格式:static{}
    ②随着类的加载而加载,并且只加载一次
    ③静态代码块的执行优先于构造器
    ④静态代码块中不能使用非静态成员,也不能使用this和super关键字
    ⑤静态代码块可有多个,依次向下顺序执行

     

     

    1. public class StaticTest {
    2. public static void main(String[] args) {
    3. Person p1=new Person();
    4. // p1.cry();
    5. Person p2=new Person("");
    6. //p2.cry();
    7. Person p3=new Person("",18);
    8. //p3.cry();
    9. }
    10. }
    11. class Person{
    12. private String name;
    13. private int age;
    14. public Person(){
    15. //cry();
    16. System.out.println("Person's Constructor....");
    17. }
    18. public Person(String name){
    19. //cry();
    20. this.name=name;
    21. }
    22. public Person(String name, int age) {
    23. //cry();
    24. this.name = name;
    25. this.age = age;
    26. }
    27. {
    28. cry();
    29. System.out.println("非静态代码块1.....");//可以多个
    30. }
    31. {
    32. cry();
    33. System.out.println("非静态代码块2.....");//顺序执行
    34. }
    35. {
    36. cry();
    37. System.out.println("非静态代码块3.....");
    38. }
    39. static{
    40. System.out.println("静态代码块1....");
    41. }
    42. static{
    43. System.out.println("静态代码块2....");
    44. }
    45. static{
    46. System.out.println("静态代码块3....");
    47. }
    48. public String getName() {
    49. return name;
    50. }
    51. public void setName(String name) {
    52. this.name = name;
    53. }
    54. public int getAge() {
    55. return age;
    56. }
    57. public void setAge(int age) {
    58. this.age = age;
    59. }
    60. public void cry() {
    61. System.out.println("哭...");
    62. }
    63. }

    Exer:

     

     

     

  • 相关阅读:
    Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock‘ (2)
    数据治理体系演进简介
    【Lilishop商城】No2-7.确定软件架构搭建六(本篇包括延时任务,会用到rocketmq、redis)
    webpack5零基础入门-10babel的使用
    使用VNC过程中遇到的问题总结
    Map.get、Map.set、Map.has方法
    基于被囊群优化的BP神经网络(分类应用) - 附代码
    #LLM入门|Prompt#1.9_总结_Summary
    云部署中的 公有云 私有云 混合云 社区云 基本概念快速掌握
    小程序之后台数据动态交互及WXS的使用 (5)
  • 原文地址:https://blog.csdn.net/m0_54397364/article/details/126290370