0%

grammar

Language

Specification

Naming

Syntax

Pointer

Handler

Reference

Keyword

final

final关键字的作用

  • 修饰类:代表类不可以继承
  • 修饰字段:代表字段初始化后不能修改引用
  • 修饰方法:代表方法不可以被重写

final变量初始化的时机

  • 声明时立即初始化
  • 声明后通过构造方法初始化
  • 声明时通过代码块初始化

final和finalize的区别

  • final是一个关键字
  • finally是异常处理时的必执行块
  • finalize是Object类的一个方法

this和super

implements和extends

Class

Interface(接口)

Abstract Class(抽象类)

Inner Class(内部类)

Anonymous Class(匿名类)

Enum Class(枚举类)

Constructor

new Constructor

Creator

Builder

Builder.build

Of

Field

字段是类或者实例的属性

  • 静态字段(属于类)
  • 实例字段(属于实例)

Variable

变量是对象的引用,字段都属于变量

变量分类如下

  • 成员变量
    • 静态变量
    • 实例变量
  • 局部变量
    • 形参变量
    • 方法局部变量
    • 代码块局部变量

变量范围如下

  • 全局变量(global variable):全局范围,java中没有
  • 模块变量(module variable):模块范围,java中没有
  • 类属变量(class variable):类属范围,java中又叫静态变量(static variable)
  • 实例变量(instance variable):实例范围,java中又叫非静态变量(non-static variable)
  • 局部变量(local variable):方法和代码块范围

ps:java中的静态变量(static variable)和 实例变量(instance variable)都属于成员变量(member variable)

Property

支持Getter-Setter的字段叫属性

Getter-Setter

Getter-Setter的规则梳理

  • is开头后面的第一个字母大写(去掉is前缀)
  • 第一个字母小写和第二个字母小写(首字母大写)
  • 第一个字母小写和第二个字母大写(不变)
  • 第一个字母大写和第二个字母小写(不变)
  • 第一个字母大写和第二个字母大写(不变)
  • 全部的字母大写(不变)
  • 下划线(去掉下划线且后面的字母大写)

规则总结如下

  • is开头后面的第一个字母大写(去掉is前缀)
  • 第一个字母小写和第二个字母小写(首字母大写)
  • 第一个字母或者第二个字母大写(不变)

ps:字段名称建议使用两个小写字母开头,布尔类型不建议使用is开头

Getter-Setter的常用场景

  • Lombok
  • Json(Spring)
  • Sql(Mybatis)

Getter-Setter的常见问题

  • java的Getter-Setter规则
  • idea的的Getter-Setter规则
  • Lombok的Getter-Setter规则(和java的有差异)
  • Jackson字段映射时用的是Getter-Setter方法反射还是字段反射(两种都支持)
  • Mybatis字段映射时用的是Getter-Setter方法反射还是字段反射(只支持Getter-Setter方法反射)
  • Jackson序列化时is前缀丢失(布尔类型不建议使用is开头)

Method

Function

闭包

Operator

异或的逻辑

  • 同为0
  • 异为1

异或的作用

  • 与0异或:原位保留
  • 与1异或:原位取反

位相关的操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/**
* Set the specified bit to 1
*
* @param originByte Raw byte value
* @param bitIndex bit index (From 0~7)
* @return Final byte value
*/
public static byte setSpecifiedBitTo1(byte originByte, int bitIndex) {
return originByte |= (1 << bitIndex);
}

/**
* Set the specified bit to 0
*
* @param originByte Raw byte value
* @param bitIndex bit index (From 0~7)
* @return Final byte value
*/
public static byte setSpecifiedBitTo0(byte originByte, int bitIndex) {
return originByte &= ~(1 << bitIndex);
}

/**
* Invert the specified bit
*
* @param originByte Raw byte value
* @param bitIndex bit index (From 0~7)
* @return Final byte value
*/
public static byte setSpecifiedBitToReverse(byte originByte, int bitIndex) {
return originByte ^= (1 << bitIndex);
}

/**
* Get the value of the specified bit
*
* @param originByte Raw byte value
* @param bitIndex bit index (From 0~7)
* @return Final byte value
*/
public static byte getSpecifiedBitValue(byte originByte, int bitIndex) {
return (byte) ((originByte) >> (bitIndex) & 1);
}

Other

只想买包辣条