[C] stdint.h

内含用typedef表示的各种类型。类型格式如下:

[u]int_[least/fast](8/16/32/64)_t

其中[]中的可填可不填,()中的内容必填。

举个例子:uint_least32_t表示无符号、长度至少32位的整型。

如果只想用可以存储最大数值的类型,请使用(int和max之间没有下划线):

[u]intmax_t

此外,该头文件还包含用宏表示的,上述类型可以存储的最大(小)值。只需要把对应类型全部变为大写,再根据需要把最后的T变为MIN/MAX即可。比如uint_least32_t能储存的最大值为UINT_LEAST32_MAX。

该头文件还有用于转换数字类型的宏:

[U]INT(8/16/32/64/MAX)_C(x)

其中x表示要转换的值(不要跟表示类型的符号)。

比如UINT32_C(45)可能会将45转换成45U。

[Java] Stream.collect(,,)

Stream 中的成员方法

<R> R collect(Supplier<R> supplier,
                  BiConsumer<R, ? super T> accumulator,
                  BiConsumer<R, R> combiner)

以及对应各种基本类型流的成员方法(比如int的)

<R> R collect(Supplier<R> supplier,
                  ObjIntConsumer<R> accumulator,
                  BiConsumer<R, R> combiner)

其中 supplier 用于提供集合,比如以下两种方式均可用作 supplier;

ArrayList<T>::new;
()->list;// list 为事先声明的集合

accumulator 用于将把 Stream 中的对象加入到集合中(用例:List::add)

combiner 用于并行处理,只有 Stream 是允许并行的(调用parallel())才起作用

对于并行流,这个方法会把流的对象加入多个集合中,最后根据情况把这些集合中的对象添加到 supplier 所提供的集合中(用例:List::addAll)

[Java] 基本类型运算返回类型

a θ b

  • θ为+、-、*、/等涉及数字运算的运算符
  • 返回a,b两者中最大的类型,如果这个类型小于int(byte、short、char)则返回int

x ? a : b

  • 如果两者类型一样则返回这个类型
  • 如果不一样,返回最大的类型,另外如果这个类型小于long
    • 如果其中一个类型为int,则优先返回另一个类型
    • 如果其中一个类型为char,则返回int