ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

尚硅谷面试题第一季笔记

2020-06-13 13:02:34  阅读:607  来源: 互联网

标签:初始化 面试题 变量 静态 子类 代码 第一季 实例 硅谷


运算底层

1591757701268

Singleton单例设计模式

  • 单例设计模式,即某个类在整个系统中只能由一个实例对象可被获取和使用的代码模式。

  • 例如 JVM 运行环境的Runtime类,单例:唯一实例

  • 要点:

      1. 某个类只能有一个实例
        • 构造器私有化
      1. 必须自行创建这个实例
        • 含有一个该类的静态变量来保存这个唯一的实例
      1. 必须自行向整个系统提供这个实例
        • 对外提供获取该实例对象的方式:(1)直接暴露(2)用静态变量的get方法获取
  • 常见形式:

    • 1591759618221

    • 饿汉式: 在类初始化时直接创建对象,不存在线程安全问题。不论使用与否都会创建实例对象INSTANCE

      • 直接实例化1591761467560
      • 枚举式:1591759882188
      • 静态代码块式:1591760135423
          • 静态代码块和实例对象会合成一个clinit方法,避免线程安全问题
    • 懒汉式: 延迟创建对象

      • (1)1591764010736

      • (2)用静态内部类实现

        1591773703387

  • 如果是饿汉式,枚举形式最简单

  • 如果是懒汉式,静态内部类形式最简单

类初始化和实例初始化等

类初始化(先)

    1. main方法所在的类需要先加载和初始化
    1. 一个子类要初始化需要先初始化父类
    1. 一个类初始化就是执行 client() :
      • 该方法由静态类变量显示赋值代码和静态代码块组成,先后执行父类后,再执行子类
      • 类变量显示赋值和静态代码块代码从上到下顺序执行
      • 该方法只执行一次

实例初始化

  • 1591776835801

  • 子类的构造器自动先调用父类的构造器。

  • 非静态方法前面都有一个默认的对象this,this在构造器(或)中表示正在创建的对象,如果是创建对象执行的是子类重写的代码,则先执行子类的重写方法。

1591797539173

  • 例子:1591867649296

    1591867669708

方法的参数传递机制

  • Java对于整型类 Integer 和 整型类数组 IntegerCache 在程序启动时已经缓存了分别为[-128,127]的整数和数组,并且保存在栈中,超出这个范围则放在堆中
  • String、Integer在栈中存放的是地址,分别指向常量池、堆中的地址
  • 形参是基本数据类型:传递数据值
  • 实参是引用数据类型:传递地址值,String、包装类等对象不可变性

1591875098681

1591875105742

循环迭代

1591882943374

1591883153414

局部变量和成员变量

  • 局部变量在方法体{},形参,代码块{}中
  • 成员变量在类中方法外,分为 类变量(有static修饰),实例变量(无static修饰)
  • 修饰符:
    • 成员变量:public, protected, private, final, static, volatile, transient
    • 局部变量:final
  • 局部变量在栈,实例变量在堆, 类变量在方法区

1591933360831

  • 一个类实例对象在创建时会执行() 这个隐藏方法,自动执行类中的非静态代码块

  • 栈的生命周期最短,在一个线程执行完就会弹出栈

1591938813457

标签:初始化,面试题,变量,静态,子类,代码,第一季,实例,硅谷
来源: https://www.cnblogs.com/JayV/p/13113589.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有