Integer与Long
面试题
== 与 equals的区别?
Integer与Long的JAVA缓存?
BigDecimal
使用金额计算时使用。
new BigDecimal()时,如果使用float或者double还是会引发精度丢失,因为赋值时就已经是精度丢失的。一般用String进行赋值。
日期处理以及格式化
使用java8的时间及处理类。
1 2 3 4 5
| LocalDate localDate = LocalDate.now(); LocalTime localTime = LocalTime.now(); LocalDateTime localDateTime = LocalDateTime.now(); ZoneId zoneId = ZoneId.of("Europe/Paris"); ZonedDateTime zonedDateTime = ZonedDateTime.now(zoneId);
|
1 2 3
| LocalDateTime start = LocalDateTime.of(2022, 1, 1, 12, 0); LocalDateTime end = LocalDateTime.now(); Duration duration = Duration.between(start, end);
|
1 2 3
| LocalDate startDate = LocalDate.of(2022, 1, 1); LocalDate endDate = LocalDate.now(); Period period = Period.between(startDate, endDate);
|
1
| Instant instant = Instant.now();
|
1 2
| DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String formattedDateTime = localDateTime.format(formatter);
|
或者使用第三方的一些时间类库:
Joda-Time
需要把第三方jar引入到项目的classpath下
1 2 3
| DateTime dt = new DateTime(); LocalDate localDate = new LocalDate();
|
数组
多个相同的类型的引用。
1 2 3 4 5 6
| String[] a1 = new String[10]; String[] a2 = {"a", "b", "c"}; System.out.println(a2[0]); System.out.println(a2[1]);
System.out.println(a2[3]);
|
数组工具类Arrays:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| int[] intArray = {5, 2, 9, 1, 5}; Arrays.sort(intArray);
int index = Arrays.binarySearch(intArray, 5);
int[] array1 = {1, 2, 3}; int[] array2 = {1, 2, 3}; boolean isEqual = Arrays.equals(array1, array2);
int[] filledArray = new int[5]; Arrays.fill(filledArray, 42);
int[] originalArray = {1, 2, 3, 4, 5}; int[] copiedArray = Arrays.copyOf(originalArray, 3);
String[] stringArray = {"apple", "banana", "orange"}; List<String> stringList = Arrays.asList(stringArray);
int[] arr = {1, 2, 3, 4, 5}; IntStream stream = Arrays.stream(arr);
|
面试题
数组与集合的区别。
Math
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
| 基本数学运算:
Math.abs(double a):返回参数的绝对值。 Math.ceil(double a):返回不小于参数的最小整数。 Math.floor(double a):返回不大于参数的最大整数。 Math.round(float a):将参数四舍五入为最接近的整数。 Math.max(double a, double b):返回两个参数中的较大值。 Math.min(double a, double b):返回两个参数中的较小值。 指数和对数运算:
Math.exp(double a):返回自然对数的底数e的幂次方。 Math.log(double a):返回参数的自然对数。 Math.pow(double a, double b):返回a的b次方。 三角函数:
Math.sin(double a)、Math.cos(double a)、Math.tan(double a):分别返回参数的正弦、余弦和正切值。 Math.asin(double a)、Math.acos(double a)、Math.atan(double a):分别返回参数的反正弦、反余弦和反正切值。 角度和弧度转换:
Math.toDegrees(double angrad):将参数从弧度转换为角度。 Math.toRadians(double angdeg):将参数从角度转换为弧度。 随机数生成:
Math.random():返回一个[0.0, 1.0)范围内的伪随机浮点数。 其他常用方法:
Math.sqrt(double a):返回参数的平方根。 Math.cbrt(double a):返回参数的立方根。 Math.abs(int a)、Math.abs(long a):返回整数或长整数的绝对值。
|
Random
1 2
| Random random = new Random(); int randomInRange = random.nextInt(10);
|
random实例方法在内部维护了一个种子(seed),如果在多线程中使用一个random会造成生成的随机数不对。
多线程中不使用一个random,或者使用ThreadLocalRandom 或者加锁。
集合
Collection、List、Set、Map、Deque等。
这里是面试的重灾区。
面试题
常用的集合类有哪些?使用的什么数据结构?
HashMap的数据结构?HashMap的java 7 与 java8的区别?
HashMap的扩容。
本地IO
File、InputStream、OutputStream、Reader、Writer、BufferedReader、BufferedWriter、ObjectOutputStream、ObjectInputStream。
这些一般在文件上传,文件下载、生成文件、解析文件时使用。