Java面试基础知识总结

基础部分:

基础语法

  1. 标识符

  2. 常量与变量

    通过final关键词修饰变量,变量赋值后,不能再修改
    Java平台无需显式的管理内存中的对象,当JRE确定对象不再被使用时将自动销毁该对象释放内存空间,这个过程,称为垃圾回收
    当变量超出作用范围,变量引用会被删除,一个没有任何引用的对象将被垃圾回收器回收
    可以通过置变量引用为null,来显式的声明删除对对象的引用,但仅是声明,并不会立即释放内存
    同一对象可能有多个引用
    垃圾回收器会在合适的时间,自动的,周期性的,释放没有引用对象占用的内存(基于CPU、内存使用情况分析)

  3. 数据类型
    在这里插入图片描述
    布尔型值具体内存占用由具体虚拟机决定
    oracle 1字节8位 openjdk 4字节 = int
    代码中,显式的固定的数据值,为字面量

    long长整型数值。长整型必须以“L”大写字母L为后缀,避免与“1”数字1混淆

    byte b = 4;
    //byte b2 =128;     //提示类型不匹配
    short s = 5;
    //short s2 = 32768;     //提示类型不匹配
    

    值传递
    所有基本类型变量不与其他变量共享值,基本数据类型为值传递,而非引用传递。因此当被"引用"的值改变时,不会影响"引用"其值的变量
    String类型变量虽然为对象,但依然为值传递
    即,8+1类型变量,均为值传递

    转换

    基本数字类型之间可以转换

    • 小转大 可以直接转换(int to double)

    • 大转小 必须声明强制转换(double to int) 向小范围转换时,可能造成数据错误或丢失

  4. 运算符

当判断8个基本数据类型的关系时,使用等式与关系运算符;返回布尔类型结果
&& ||具有短路性
优先级表:
优先级

  1. 流程控制语句

    • if-then, if-then-else, switch

      if(表达式) {
          //then代码块
      } else {
          //else代码块
      }
      

      Switch支持整数/枚举/字符串作为表达式;当匹配case中表达式时,执行相应代码块;并顺次执行之后的全部case分支直到break语句。当均不匹配时执行default

    • for, while, do-while

    • break, continue, return

  2. 方法

    组成:修饰符、方法返回类型、方法参数列表、方法体

    方法签名

    类中不能存在方法签名相同的方法,方法签名是类中一个方法区别于另一个的特征

    方法签名:方法名称,方法参数列表(方法参数数量,相应位置的参数类型)决定;与方法的各种修饰符,返回类型,参数名称等无关

    • Parameter 方法声明定义中的参数(形参)

    • Argument 方法被调用时实际传入的参数(实参)

      tips:8+1类型是传递值

    方法重载

    允许具有相同名称,但不同参数列表的,方法存在。解决了方法功能相同,但必须使用不同命名的缺陷

    this

    表示当前对象的引用;可以通过this,在实例方法或构造函数中引用当前对象的成员变量

    所有实例方法,都隐式包含一个引用当前对象的变量,名称为this。当方法引用类的实例变量时,编译器隐式的使用this获取当前对象的实例变量(编译器自动传入this对象引用)

  3. 数组

    • 数组是按顺序存放单一类型长度固定,的容器对象

    • 数组中的每一个项,称为元素

    • 数组一旦创建,就不能更改长度,即,如需增/删数组元素而改变数组长度,必须创建一个新数组

    • 通过[index]索引访问数组元素

    • 通过length成员常量****(而非方法),获取数组长度

      //静态创建
      int[] intArray2 = {10,20,30};
      int[] intArray2 = new int[]{10,20,30};
      //动态创建
      int[] a = new int[100];
      for(int i = 0;i<a.length;i++){
          a[i] = i;
      }
      
  4. 注解

    声明文档注释:使用时可查看注释信息

    /** documentation
    * 文档注释,可生成API文档
    */
    

文档注释

关键字:

面向对象:

  1. 面向对象思想

  2. 类与对象

    创建一个对象的基本过程:

    • 声明 Bicyle bicycle

      声明一个名称为bicycle,引用Bicycle类型对象的变量。仅声明了一个可以引用指定类型对象的变量,声明并不会创建一个对象,必须为其分配一个对象引用才能使用

    • 实例化 Bicycle bicycle = new

      new操作符通过为新对象分配内存,并返回该内存的引用来实例化一个类

    • 初始化Bicycle bicycle = new Bicycle(5)

      new操作符同时,调用构造函数完成对象的初始化,并把初始化数据写入内存

      对象创建过程

  3. 成员变量与局部变量 与静态

    创建对象时,在堆空间为对象开辟空间,保存属性数据。因此,类的每一个对象拥有独立内存空间以及属性数据
    类中,static修饰的变量,称为静态变量或类变量
    类的静态变量置于方法区,而非堆空间
    即,其与所在类相关,但不与类的任何对象相关
    即,其不基于类的对象而存在
    类的私有静态变量/常量,类的每一个对象均可访问
    类的公有静态变量/常量,全局可访问

    • 类中,实例级方法单向访问方法静态方法/变量/常量

    • 类中,静态方法无法访问实例级方法/变量/this等

    静态代码块仅在所在类被加载时执行,且仅执行一次,无论类实例化次数

    优先执行静态代码块,静态代码块中的变量是局部变量

  4. 匿名对象

  5. 封装

    • 基于封装思想,实体类中封装的属性数据,通过对外提供,访问器(getter/setter)实现
  6. this关键字

  7. 构造方法

  8. 继承

  9. 多态

  10. 抽象类

  11. 接口

  12. 内部类

集合:

高级知识

  1. 线程

  2. JDK

  3. 反射

  4. JVM

    jvm结构:

    Stack(栈):创建线程的同时,创建该线程的栈空间,存储执行方法的局部变量表(包括:基本数据类型字面量,以及对象的引用);操作栈(调用方法的引用)等

    Heap(堆):存储创建的对象实例,GC主要工作的地方

    Method Area(方法区):线程共享的,存储每一个类的结构信息(包括:类中的属性/方法等元数据),常量池,静态变量/常量,方法/构造函数的执行代码

  5. GC

  6. IO和NIO、AIO

版本特性

Java 8

  • 函数式编程
  • Lambda表达式
  • 接口的默认方法(默认方法 在接口中有具体的实现 default
    在接口中方法前面加上修饰符default 编译器会认为 该方法并非抽象方法 可以在接口中写实现
  • 集合Stream API
  • 新的Time API
  • 多重注解
  • Optional空引用处理

Java 9 & 10 & 11

  • JShell互交式编程
  • 增强集合stream API
  • 增强集合工厂方法
  • 增强Optional方法
  • 编译器类型推导变量
  • 新字符串加强处理方法
  • 接口私有成员变量
  • No-Op垃圾回收器
  • …………………

梗概

变量 变量的声明,命名规范
基本数据类型 8 + 1基本数据类型,默认值,范围,大小等
整数类型 基本整数类型,long类型后缀
转义符 特殊含义字符输出的处理
常量 常量的声明,命名规范
数组 数组的类型,,创建方法,索引,长度,引用传递
字面量 基本类型的字面量,值传递与引用传递
变量的作用范围 域,实例变量,类变量,类常量,局部变量,参数,默认值
算术运算符 取模,字符串拼接
等式与关系运算符 基本类型使用 == 判断值是否相等
条件运算符 布尔表达式执行条件,短路特性
运算符优先级 建议使用()括号强调有限顺序
基本数据类型转换 大范围到小范围的强制转换
注释 单行,多行,文档
If then else 表达式值与执行的代码块
switch 支持的类型,支持字符串,固定项,break,适应场景
While 表达式
For 声明方法,循环的过程
foreach 适应场景,优缺点
Break 终止的范围
Return 方法的退出,有/无返回值的声明

Classes and Objects Summary

---- Content
面向对象中的类;声明,命名规范;单继承
属性 命名规范;提供getter/setter方法,及方法的命名规范;Boolean类型属性getter方法命名
方法 方法的名称规范;声明;参数列表;方法签名;方法重载;返回值;
构造函数 声明;有参/无参;约束;
参数 形参/实参;可变长度的参数;命名规范;值传递/引用传递;
对象 对象的基本创建过程;使用方法;this关键词
垃圾回收器 Java平台处理对象的特点;对象资源释放的时机与时间
访问级别修饰符 顶级/成员级修饰符;修饰目标的可见范围;
静态变量 声明;使用场景;特点;与类实例的关系;使用方法;命名
静态方法 声明;使用场景;特点;与类实例变量/方法的关系;
常量 基本类型与引用类型常量各种的特点;命名;
静态块 作用;加载;执行顺序
静态内部类 声明创建方法;作用;使用场景
枚举 声明;使用场景
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章