• 类的成员之一:代码块


    一.类的成员之一:代码块(属性 方法 构造器 代码块)
    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:

     

     

     

  • 相关阅读:
    hive从入门到放弃(三)——DML数据操作
    Win11如何添加默认打印机?
    HttpClient笔记
    当zk某个节点坏掉如何修复
    redux connect组件在手工传入参数时报错
    【RocketMQ中生产者生产消息的高可用机制、消费者消费消息的高可用机制、消息的重试机制、死信队列于死信消息】
    基于YOLOv8深度学习的无人机视角地面物体检测系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标检测
    【LeetCode】3. 无重复字符的最长子串
    【实操】基于ChatGPT构建知识库
    国家开放大学 平时作业训练题
  • 原文地址:https://blog.csdn.net/m0_54397364/article/details/126290370