刷题总结:Day1

Java原子性操作:

  1. 除了long和double之外的基本类型的赋值操作
  2. 所有引用reference的赋值操作
  3. java.concurrent.Atomic.*包中所有类的一切操作

Java异常类

  1. Error: 不希望由程序捕获或者是程序无法处理的错误,由Java虚拟机生成并抛出
  2. Exception: 需要被try catch捕获或者throws抛出
  3. throws: 方法名上声明要抛出异常
  4. throw: 方法内抛出异常
  5. 子类重写父类方法时异常类型要与父类方法一致或者是其子类

final重写

class Car extends Vehicle
{
    public static void main (String[] args)
    {
        new  Car(). run();
    }
    private final void run()
    {
        System. out. println ("Car");
    }
}
class Vehicle
{
    private final void run()
    {
        System. out. println("Vehicle");
    }
}

虽然Vehicle的run方法被final修饰,但是其是private方法,因此Car无法继承该方法,因此直接运行Car的run方法没有错

try-catch-finally

  1. 必须在 try 之后添加 catch 或 finally 块。try 块后可同时接 catch 和 finally 块,但至少有一个块。
  2. 必须遵循块顺序:若代码同时使用 catch 和 finally 块,则必须将 catch 块放在 try 块之后。
  3. catch 块与相应的异常类的类型相关。
  4. 一个 try 块可能有多个 catch 块。若如此,则执行第一个匹配块。即Java虚拟机会把实际抛出的异常对象依次和各个catch代码块声明的异常类型匹配,如果异常对象为某个异常类型或 其子类的实例,就执行这个catch代码块,不会再执行其他的 catch代码块
  5. 可嵌套 try-catch-finally 结构。
  6. 在 try-catch-finally 结构中,可重新抛出异常。

Object类

默认方法: getClass(), hashCode(), equals(), clone(), toString(), notify(), notifyAll(), wait(), finalize()

floor/ceil/round方法

Math.floor(-4.2) = -5.0

Math.ceil(-4.2) = -4

Math.round(-4.6) = -5 | Math.round(-4.5) = -4

Main函数

问: jre 判断程序是否执行结束的标准是?

所有前台线程执行完毕

Servlet

object类

Object o = 'f';//正确,'f'自动转换为包装类,包装类继承Object
Double d = 100;//错误,自动装箱类型不匹配,100自动装箱为Integer

JVM运行时内存

哈希冲突解决方法

  1. 开放地址法
  2. 链地址法
  3. 二次哈希
  4. 建立公共溢出区

HashMap

HashMap底层使用数组+链表+红黑树(JDK1.8)实现

  1. 当前索引数组为空,则将键值对以链表形式插入。
  2. 当前索引数组已经存在,则判断当前链表是红黑树还时链表,然后插入。如果是链表插入到最后一个,判断长度是否大于8,大于8将链表转成红黑树。
  3. 使用链地址法解决冲突

Java关键字

true、false、null都不是关键字

goto、const都是保留的关键字

abstract                continue           for            new        
switch                  default            if             package     
synchronized            do                 goto           private     
this                    break              double         implements   
protected               throw              byte           else       
import                  public             throws         case       
enum                    instanceof         return         transient  
catch                   extends            int            short       
try                     char               final          interface    
static                  void               class          finally   
long                    strictfp           volatile       const      
float                   native             super          while
boolean                 assert

类型转换

// boolean 类型不能强制转换为其他类型
int other = (int)true;

// += 有自动强转的效果
byte a = 1;
byte b = 1;
// a + b会被装换被int,导致左边byte,右边int
a = a + b;
// 可以改为
a += b;a = (byte)a + b;

猜你喜欢

转载自www.cnblogs.com/YuanJieHe/p/12741405.html