2024.03.01 学习记录

本文详细解释了类变量和静态变量的概念,静态方法的特性,main()方法的调用机制,以及类何时被加载(如创建对象或使用静态成员)。还介绍了代码块(包括静态代码块和普通代码块)的执行顺序和应用,以及类加载时的构造器调用顺序。
摘要由CSDN通过智能技术生成

- 2024.03.01

面对对象高级部分

  • 类变量(静态变量):即static修饰的变量名,为同一个类的所有对象所共享,static修饰的变量在类加载的时候就初始化了,类变量是随着类的加载而创建,随着类的消亡而销毁,所以即使没有创建对象实例也可以访问类变量
  • 类方法(静态方法):类方法和普通方法都是随着类的加载而加载,将结构信息存储在方法区,类方法中无this参数,普通方法中隐含着this参数;类方法只能访问类方法和类变量
  • 非静态方法可以访问静态成员和非静态成员
  • main()方法是由JVM虚拟机调用,所以main()方法需要是public的访问权限;且JVM在调用main()时不需要创建对象,所以main()是static修饰的;形参中的数组可以接收执行java命令时,在java命令后传递给所运行的类的参数
  • 在main()方法中,可以直接访问main()方法所在类的静态方法和静态成员,但是不能直接访问该类的非静态成员,需要创建该类的对象实例后才能去访问
  • 代码块:又称初始化块,属于类的成员(即是类的一部分),不能通过对象或类显示调用,而是加载类的时或创建对象时隐式调用;代码块分为静态代码块或非静态代码块,所以代码块前的修饰符只能选择static或者不选;代码块可以相当于另一种形式的构造器(对构造器的补充机制),可以做初始化的操作;
  • 代码块应用场景:若多个构造器中有冗余代码,可以放在代码块中,提高代码的重用性,不论使用哪个构造器创建对象时,都会先调用代码块中的内容;代码块的执行会先于构造器的执行
  • static代码块随着类的加载而执行,只会执行一次,如果是普通代码块,每创建一个对象就会执行
  • 对于普通的代码块:在创建对象实例时会被隐式调用,被创建一次就调用一次,如果只是使用该类的静态成员时,普通代码块不会执行

类在什么时候会被加载?

  • 创建对象实例时(new)
  • 创建子类对象实例,父类也会被加载
  • 使用类的静态成员时(属性和方法)

创建一个对象时,一个类的调用顺序是如何的?

    1. 先调用静态代码块和静态变量初始化(这两者的优先级相同,如果有多个静态代码块和静态变量初始化,则按照定义顺序调用)
    2. 调用普通代码块和普通属性的初始化(这两者的优先级相同,如果有多个普通代码块和普通属性初始化,则按照定义顺序调用)
    3. 调用构造方法

在这里插入图片描述
在这里插入图片描述

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值