String API

java.lang.string 

• char charAt (int index)
  返回给定位置的代码单元。除非对底层的代码单元感兴趣, 否则不需要调用这个方法。
• int codePointAt(int Index)
  返回从给定位置开始的码点。
• int offsetByCodePoints(int startlndex, int cpCount)
  返回从 startlndex 代码点开始,位移 cpCount 后的码点索引。
• int compareTo(String other)
  按照字典顺序, 如果字符串位于 other 之前, 返回一个负数;如果字符串位于 other 之后,返回一个正数; 如果两个字符串相等,返回 0。
• IntStream codePoints() 
  将这个字符串的码点作为一个流返回。调用 toArray 将它们放在一个数组中。
• new String(int[] codePoints, int offset, int count) 
	用数组中从 offset 开始的 count 个码点构造一个字符串。
• boolean equals(0bject other)  
	如果字符串与 other 相等, 返回 true。    
• boolean equalsIgnoreCase( String other ) 
	如果字符串与 other 相等 (忽略大小写,) 返回 true。
• boolean startsWith( String prefix )boolean endsWith( String suffix )
  如果字符串以 suffix 开头或结尾, 则返回 true。
• int indexOf ( String str )int indexOf( String str, int fromlndex )int indexOf ( int cp)int indexOf( int cp, int fromlndex )
  返回与字符串 str 或代码点 cp 匹配的第一个子串的开始位置。这个位置从索引 0 或
  fromlndex 开始计算。 如果在原始串中不存在 str, 返回 -1。
• int 1astIndexOf( String str )
• Int 1astIndexOf ( String str, int fromlndex )int lastindexOf( int cp)int 1astindexOf( int cp, int fromlndex )
返回与字符串 str 或代码点 cp 匹配的最后一个子串的开始位置。 这个位置从原始串尾端或 fromlndex 开始计算。
    
• int length( )
  返回字符串的长度。
    
• int codePointCount( int startlndex, int endlndex ) 5.0
  返回 startlndex 和 endludex-l 之间的代码点数量。没有配成对的代用字符将计入代码点。
• String replace( CharSequence oldString,CharSequence newString)
  返回一个新字符串。这个字符串用 newString 代替原始字符串中所有的 oldString。可以用 String 或 StringBuilder 对象作为 CharSequence 参数。
• String substring( int beginlndex )
• String substring(int beginlndex, int endlndex )
  返回一个新字符串。这个字符串包含原始字符串中从 beginlndex 到串尾或 endlndex-l的所有代码单元。
• String toLowerCase( )
• String toUpperCase( )
  返回一个新字符串。 这个字符串将原始字符串中的大写字母改为小写,或者将原始字符串中的所有小写字母改成了大写字母。
• String trim( )
  返回一个新字符串。这个字符串将删除了原始字符串头部和尾部的空格。
• String join(CharSequence delimiter, CharSequence... elements ) 8
  返回一个新字符串, 用给定的定界符连接所有元素。

Examples:

String greeting = "Hello";
String s = greeting.substring(0,3); //"Hel"
String all = String.join("/","S","M","L","ML"); // all is "S/M/L/ML"
s.equals(t); //s和t是否相等
s.equalsIgnoreCase(t); //不区分大小写是否相等
int[] codePoints = str.codePoints().toArray(); //依次查看每一个码点

StringBuilder API

• StringBuilder()
构造一个空的字符串构建器。
• int length()
返回构建器或缓冲器中的代码单元数量。
• StringBuilder append(String str)
追加一个字符串并返回 this.
• StringBuilder append(char c)
追加一个代码单元并返回 this。
• StringBuilder appendCodePoint(int cp)
追加一个代码点,并将其转换为一个或两个代码单元并返回 this 。
• void setCharAt(int i ,char c)
将第 i 个代码单元设置为 c。
• StringBuilder insert(int offset,String str)
在 offset 位置插入一个字符串并返回 this。
• StringBuilder insert(int offset,Char c)
在 offset 位置插入一个代码单元并返回 this。
• StringBuilder delete(1 nt startindex,int endlndex)
删除偏移量从 startindex 到-endlndex-1 的代码单元并返回 this。
• String toString()
返回一个与构建器或缓冲器内容相同的字符串
StringBuilder builder = new StringBuilder();
builder.append(str);
String completedString = builder.toString();

Scanner API

java.util.Scanner

• Scanner (InputStream in)
  用给定的输入流创建一个Scanner对象,常用System.in、Path.of
• String nextLine()
  读取输入的下一行内容
• String next()
  读取输入的下一个单词,以空格作为分隔符
• int nextInt()double nextDouble()
  读取并转换下一个表示整数或浮点数的字符序列
• boolean hasNext()
  检测输入中是否还有其他单词
• boolean hasNextInt()boolean hasNextDouble()
  检测是否还有下一个表示整数或浮点数的字符序列

Examples:

Scanner in = new Scanner(System.in);
String name = in.nextLine();

输出

文件读取、写入:

Scanner in = new Scanner(Path.of("myfile.txt", StandardCharsets.UTF_8))
String line = in.nextLine()
PrintWriter out = new PrintWriter("file.txt", StandardCharsets.UTF_8)
out.printf(line)

格式化输出:格式说明符,参数替换

创建格式化字符串:

String message = String.format("Hello, %s. Next year, you will be %d", name, age)

当前启动目录位置

String dir = System.getProperty("user.dir")

MATH API

import static java.lang.MATH.*

大数类型

java.math.BigInteger

BigInteger a = BigInteger.valueOf(100);
BigInteger reallyBig = new BigInteger("22222222333333444444455555555555555")
BigInteger add(BigInteger other)
• BigInteger subtract(BigInteger other)
• BigInteger multiply(BigInteger other)
• BigInteger divide(BigInteger other)
• BigInteger mod(BigInteger other)
  和、差、积、商、余数
• BigInteger sqrt()int compare(BigInteger other)
  相等返回0,小于返回负数,大于返回正数
• static BigInteger valueOf(long x)
  返回值等于x的大整数

Java.math.BigDecimal

类似,略

Arrays

java.util.Arrays

static String toString(xxx[] a)
  返回包含a中元素的一个字符串,这些元素用中括号包围,并用逗号分隔
• static xxx[] copyOf(xxx[] a, int end)static xxx[] copyOf(xxx[] a, int start, int end)
  返回与a类型相同的一个数组
• static void sort(xxx[] a)
  排序
• static int binarySearch(xxx[] a, xxx v)static int binarySearch(xxx[] a, int start, int end, xxx v)
  二分查找v,若找到返回相应下标,否则返回一个负数值r, -r-1为v应插入的位置
• static void fill(xxx[] a, xxx[] b)
  将数组所有数据元素设置为v
• static boolean equals(xxx[] a, xxx[] b)
  是否相等

数据类型

基本数据类型

**整型:**int,short,long,byte

长整型数值有一个后缀L或l,十六进制数值有一个前缀0x或0X,八进制有一个前缀0,二进制前有一个0b或0B。

浮点类型: float和double

float类型的数值后面有一个后缀F或f,没有后缀F的浮点数值总是默认为double类型。

特殊浮点数:

正无穷大 Double.POSITIVE_INFINITY
负无穷大 DOUBLE.MEGATIVE_INFINITY
Nan DOUBLE.NaN

区分代码单元和替代区域

局部变量、常量

对于局部变量,如果可以从变量的初始值推断出它的类型,就不再需要声明类型,只需要使用关键字var

var vacationDays = 12

利用关键字final指示常亮,常量名使用全大写

final double CM_PER_TNCH = 2.54

使用关键字static final设置一个类常量

枚举类型

enum Size {SMALL, MEDIUM, LARGE, EXTRA_LARGE}
Size s = Size.MEDIUM

强制类型转换

double x = 0.007
int nx = (int) x

逻辑运算符和位运算符

&&		||		 !
&		|		^		~

控制流程

条件语句:if <condition> statement

循环语句:while <condition> statementdo statement while <condition>

for循环:for (int i = 0; i < 10; i++)

switch语句:switch (choice) {case 1: ... default}

数组

int[] a = new int[100]
int[] smallPrimes = {2,3,4,5,6}
array.length()
// for each循环:
for (variable : collection) statement
// example
for (int element: a)
  System.out.printlb(element)