• Java面试题之static、this关键字、变量详解


    • static翻译成中文就是:静态
      • 所有static关键字修饰的都是类相关的,类级别的
      • 所有static修饰的,都是采用“类名 . ”的方式访问,就是不用new这个类对象
      • static修饰的变量:静态变量
      • static修饰的方法:静态方法
        1. public class Student{
        2. public static void study(){
        3. System.out.println("我爱学习");
        4. }
        5. public static void main(String[] args){
        6. //因为是static修饰的静态方法,不用把Student真的new出来
        7. //直接用类名Student点.方法名study()就可以直接调用
        8. Student.study();
        9. }
        10. }

         

    • 变量的分类:
      • 在方法体中声明的变量叫做:成员变量
      • 在方法体外声明的变量叫做:成员变量 --分为-->(静态变量和实例变量)
    • static静态代码块在什么时候执行?
      • 类加载的时候执行,并且只执行一次(关于类加载,面试可能会被问到,可以去大致看一下jvm的视频了解了解大致的东西)
      • 注意:静态代码块在类加载的时候执行,并且在main方法执行之前执行(这也是jvm的知识点,面试很大概率会被问到的)
      • 静态代码块一般是从上到下顺序执行的
      • 静态代码块不是那么常用(不是每个类都需要写的东西,以前学习jdbc的时候用过)
      • 静态代码块这种语法是sun公司给Java程序员的一个特殊的时刻:类加载时刻
    • this是一个关键字,是一个引用,保存内存地址指向自身
      • this可以使用在实例方法种,也可以使用在构造方法种
      • this出现在实例方法中代表当前对象(比如当前类是学生(Student)类,this.的时候就是Student这个对象)
      • this不能使用在静态方法中
      • this大部分情况下可以省略,但是用来区分局部变量和实例变量的时候,不能省略
      • this();这种语法只能出现在构造方法第一行,表示当前构造方法调用本类的构造方法,目的是代码复用、

    this翻译过来这个,就是这个类,当前这个类,这个对象,当前的这个对象,就是你现在正在使用的这个类,也算是一种简写的方法。比如你想调用当前这个方法。

    可以看下面的代码在没有static修饰的eat()方法里,用this代表当前对象Student来调用study()方法,但是main方法用了static修饰,this就不能不用了

     因为上面出了问题,看下面这个,因为this的不可用,只能把StringTest对象创建出来,然后再去调用我们的eat方法,然后eat方法里用this调用了study方法,输出的时候就是先:学习学习然后在吃吃吃

    1. public class StringTest {
    2. public static void main(String[] args) {
    3. StringTest s = new StringTest();
    4. s.eat();
    5. //this.eat();
    6. }
    7. public void study(){
    8. System.out.println("学习学习");
    9. }
    10. public void eat(){
    11. this.study();
    12. System.out.println("吃吃吃");
    13. }
    14. }

  • 相关阅读:
    rust 中 str 与 String; &str &String
    C语言之结构体的有关知识
    2022年度收单外包机构评级预公示,评为D、E级机构如何进行异议申请
    WPF 控件专题 DockPanel 控件详解
    非线性系统的理论和方法,神经网络的非线性
    8、Java——一维数组案例代码详解
    POE 利用区块链挖掘协同执行遗传算法
    系统部署常用操作_查看硬盘大小_查看内存情况_查看某个端口是否被占用_telnet_远程scp复制拉取---Linux运维工作笔记055
    MySQL进阶语句
    Adaboost 算法【python,机器学习,算法】
  • 原文地址:https://blog.csdn.net/qq_43280993/article/details/127551844