Java面试中常用的API及Codinb Pad中常常注意不到的点(非常详尽)

经常在做OA/面试遇到下面的情况“
忘记函数名,忘记main函数怎么写,忘记如何穿参数,忘记如何定义类,总之之前因为做leetCode除了写核心代码之外啥都不记得了 一旦在面试中遇到这种情况 就很搞心态,一个明明很简单的东西整不出来。

1 如何写main函数?
main函数要在类里面,格式为Public static void main(String arg[]) {}
2 大多数对象都有的常见的方法:
equals(), toString().一个用于比较 一个用于打印出来
3 打印结果中含有变量或者数字

System.out.println("results is:" + res);
System.out.println("%d - %d\n", 1, 2);

4 comparable 和comparator接口
comparable接口的函数是compareTo(T that)
comparator接口得函数是compare(T a, T b)
5 Iterable 和Iterator接口
iterable的核心就是iterator, iterator也是抽象接口,但是里面定义了next() hasNext() remove()等多个重要函数

6 对String的相关操作
1 把某些不是String的数据转换成String
String s = new String(char_array);
String s = another_string.substring(start, end);
String s = primitive_wrapper.toString() //Integer, Double, Long Character类型数据转化为String
String s = String.valueOf(primitive_value) //int double long char类型转化器
Integer num = Integer.valueOf() //只要能转换成integer的东西都能往里面放 比如string,Long等等
int num = Integer.parseInt(reference_value) //引用类型-基本类型转换器
总而言之 就是valueOf 和parseInt二分天下 valueOf返回引用类型 而parseInt返回原始类型 但是因为这两者都是static函数 因此要用类名.method name进行访问
2 String trim()
3 int IndexOf() / int lastIndexOf() //感觉不是很常用 但是

7 StringBuilder的构建
1 我们可以新建一个stringBuidler或者我们可以直接把一个String变为StringBuilder而不用一个接着一个的append
StringBuilder sb = new StringBuilder(str);
2 或者我们可以直接sb.append(String str) //此外还可以append StringBuidler char[] 等等
3 删除的话可以删除range或者删除index在某个位置的
delete() deleteCharAt()
insert(int index, T t)l
reserse()
substring() //对你没看错 stringBuilder也有substring()

8 字符串之间的比较:
两种方法:
str1.equals(str2): bool
str1.compareTo(str2): 返回两字符串第一个不相同的字母之间的ASCII吗的差值。
千万不能用==!!!
如果需要Ingorne case: str1.compareToIgnoreCase(str2)

9 包装类和基本类型的相互转化:
int->Integer: new Integer(int num), Integer.valueOf(int num)
Integer->int: Integer.parseInt()//这个可以将任何合法类型转换成Integer integer_obj.intValue() //这个只能在Integer身上用

10 Math
Math.pow(2, n)
Math.sqrt(n)
Math.floor() Math.ceil()
Math.round()

11 Java不可变类型数据结构:
Array和String
初始化Array:
方法1: int[] a = new int[10];
Arrays.fill(a, -1);
方法2:int[] b = new int[]{1,2,3};

12 Array和Array List之间的转化:
List int_list = Arrays.asList(int[] nums); //注意一定要是用List来承接而不是ArrayList

13 初始化一个2D array,外面固定长度 里面不固定长度”
List[] array = new List[10]; //因为这个本质上是一个array 所以定义的时候按照int[] 来,只不过换了数据类型而已
初始化一个2D array 外面不固定长度 里面固定长度(就像图的表示一样 里面全都是node-node对)
List<int[]> list = new ArrayList<>() //本质是一个List 所以只是把数据类型换了而已
初始化一个真正的2D array
int[][] map = new int{{}.{},{}};

14 Collections针对的是引用类型数据 但是Arrays是array的工具类 两者同属于Collection框架
因此两者有很多相用的函数:
fill sort binarySearch, 但是Arrays没有reverse.

15 用遍历器遍历:

Iterator<E> it = c.iterator();
if (it.hasNext()) {
ret = it.next();
}

16 对List做slice:
subList(int start, int end): List

17 Set and Map:
set.add()
map: put()

18 获取长度:
size() : most common
length: array
length: length(): string

19 在初始化的时候自定义排序方法:
1 如果只需要反序 那么只需要把Collections.reverseOrder()作为比较器传入构造器参数中。
在这里插入图片描述
2 如果我们需要更细致的定义比较器 那么我们可以自己实现comparable接口 或者自定义comaprator with lambda function/
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

20 Java中如何使用Enum类
在这里插入图片描述

21 Java Random类
在这里插入图片描述

posted @ 2020-11-21 04:14  EvanMeetTheWorld  阅读(40)  评论(0)    收藏  举报