java小知识点汇总

154 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

java 的局部变量一定要初始化,没有默认值;类变量可以不用初始化有默认值

局部变量:定义在方法体(函数,包括主函数)之中

类变量:定义在类中,方法体之外

Math.pow(a,b)的返回值为double类型

List的add方法

  • 方法一

add(E e)在列表尾部加入指定元素。如果 List 集合对象由于调用 add 方法而发生更改,则返回 true;否则返回 false。可以不考虑返回值直接添加

  • 方法二

void add(int index, E e) 在列表指定位置插入元素,并将处于当前位置的元素及其后面的元素的索引位置加一

匿名内部类方法初始化

List<Integer> list = new ArrayList<>(){{
    add(1);
    add(10);
    add(6);
    add(5);
}};
System.out.println(list);//打印list

List.of方法初始化

List<Integer> list = List.of(1,10,6,5);
System.out.println(list);

Arrays.asList方法初始化

List<Integer> list = Arrays.asList(1,10,6,5);//生成的list不能修改,add元素会报错
System.out.println(list);

Arrays.asList方法初始化可变化的List

List<Integer> list = new ArrayList<>(Arrays.asList(1,10,6,5));
list.add(7);
System.out.println(list);

对List进行排序

List<Integer> list = new ArrayList<>(Arrays.asList(1,10,6,5));
System.out.println(list);
list.sort(null);
System.out.println(list);

使用Collections.sort方法对list进行排序

List<Integer> list = new ArrayList<>(Arrays.asList(1,10,6,5));
System.out.println(list);
Collections.sort(list);
System.out.println(list);

格式化输出小数点后8为的float

import java.lang.String;
float f = 1;
System.out.println(String.format("%.8f",f));

&和&&的区别

  • &和^,<<,<<<,|同属于位运算符,其中&是按位与,例如,1&1=1,1&0=0
  • &&是逻辑运算符,处理真假值,例如,true&&true=true。

mybatis中的CDATA标签的用法

  • 在mapper文件中写sql语句时,遇到特殊字符时,如:< 等,建议使用

Http跨域OPTIONS请求

跨域资源共享标准新增了一组 HTTP 首部字段,允许服务器声明哪些源站有权限访问哪些资源。另外,规范要求,对那些可能对服务器数据产生副作用的 HTTP 请求方法(特别是 GET 以外的 HTTP 请求,或者搭配某些 MIME 类型的 POST 请求),浏览器必须首先使用 OPTIONS 方法发起一个预检请求(preflight request),从而获知服务端是否允许该跨域请求。服务器确认允许之后,才发起实际的 HTTP 请求。在预检请求的返回中,服务器端也可以通知客户端,是否需要携带身份凭证(包括 Cookies 和 HTTP 认证相关数据)。

OPTIONS请求报错

由于预检请求(OPTIONS请求)不会包含Cookie信息(浏览器本身的实现决定其是否发送Cookie,前端无法控制,并且Chrome是不发送的),因此被权限拦截器提前结束,没有输出包含指定头部信息的响应。而一个被浏览器认为合格的预检请求响应必须包含如下的Http头部。(
预检请求Options的执行顺序在拦截器之后,因此预检请求被拦截,导致出错,)