1.Integer 与 int 区别:
(1) 数据类型不同:int是基本数据类型 Integer是包装数据类型
(2)默认值不同: int的默认值是0,Integer的默认值是null
(3)内从中的存储方式不同:int在内存中直接存储的数据, 而Integer实际存储的是对象引用,当new一个Integer时实际上是生成一个指针指向此对象
(4)变量的比较方式不同:int可以使用 == 来比较两个变量是否x相等,而Integer一定要使用equals来比较两个变量是否相等
2.== 和 euqals的区别?
对于==来说:
如果比较的是基本数据类型变量,比较两个变量的值是否相等。(数据类型不一定相同)
如果比较的是引用数据类型变量,比较两个对象的地址值是否相等,即两个引用是否指向同一个地址。
布尔类型不能参与运算符==比较
对于equals来说:如果类中重写了equals方法,比较内容是否相等(比如:String类、Date、File、包装类都重写了Object类的equals方法)
3.java异常
抛出异常会中断当前方法的执行,但是否会中断整个程序的执行取决于异常是否被捕获和处理。如果异常被捕获并得到了处理,那么程序会从异常处理语句的后面继续执行。但如果异常没有被捕获或者处理不当,那么程序会终止执行。
在Java中,如果一个方法抛出了一个未经处理的异常,那么这个方法的执行会立即终止,控制权转移到调用方法的位置,如果调用方法也没有处理这个异常,那么异常会继续向上传递,直到被捕获和处理为止。如果异常一直没有被捕获和处理,那么程序会终止执行。
因此,在编写代码时,我们需要在合适的位置捕获和处理异常,以保证程序的正常执行。
在Java中,所有的异常都可以被处理,但是不同的异常类型需要使用不同的处理方式。
一般情况下,Java中的异常分为两类:受检查异常(Checked Exception)和非受检查异常(Unchecked Exception)。
受检查异常必须在代码中显式地处理或者在方法签名中声明抛出异常,否则代码就无法编译通过。例如,IOException、SQLException等都是受检查异常。
而非受检查异常则不需要在代码中显式地处理或声明抛出异常。这种异常通常是由程序错误引起的,例如NullPointerException、ArrayIndexOutOfBoundsException等。
对于受检查异常,我们必须使用try-catch语句捕获并处理异常,或者在方法签名中声明抛出异常。如果我们不处理这些异常,代码就无法编译通过。
而对于非受检查异常,我们可以选择捕获并处理异常,也可以不处理异常。如果我们不处理这些异常,程序会在出现异常时终止执行。
需要注意的是,Error是一种特殊的非受检查异常,通常表示系统或虚拟机错误。这种异常通常无法被处理,程序会在出现异常时直接终止执行。
4.一条完整的SELECT语句内部的执行顺序是这样的:
1. FROM子句组装数据(包括通过ON进行连接);
2. WHERE子句进行条件筛选;
3. GROUP BY分组;
4. 使用聚集函数进行计算;
5. HAVING筛选分组;
6. 计算所有的表达式;
7. SELECT 的字段;
8. ORDER BY排序;
其中 聚集函数:"聚集函数是以值是一个集合(集或者多重集)为输入、返回单个值得函数。
SQL提供了五个固有聚集函数。
平均值:avg
最小值:min
最大值:max
总和:sum
计数:count"
HAVING筛选分组:在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。
HAVING 子句可以让我们筛选分组后的各组数据。
5.union 和 union all 区别
区别1:取结果的交集
1、union: 对两个结果集进行du并集操作,不包括重复行,相当于distinct,同时进行默认规则的排序
2、union all:对两个结果集进行并集Q操作,包括重复行,即所有的结果全部显示,不管是不是重复;
区别2:获取结果后的操作
1、union:会对获取的结果进行排序操作
2、union all:不会对获取的结果进行排序操作
区别3:
1、union看到结果中ID=3的只有一条
select*from student2 where id<4
union
select*from student2 where id>2 and id<6
2、union all 结果中ID=3的结果有两个
select*from student2 where id<4
union all
select*from student2 where id>2 and id<6
总结
union all只是合并查询结果,并不会进行去重和排序操作,在没有去重的前提下,使用union all的执行效率要比union高
6.
工作中经常会遇到,查询返回空,如果没有判空处理,一不小心就会空指针异常。加上if判断处理也可以,但是jdk1.8有更优雅的处理方式。
public static void main(String[] args) {
List<string> list = null;
List<string> newList = Optional.ofNullable(list).orElse(Lists.newArrayList());
newList.forEach(x->System.out.println(x));
}
先解释代码含义:如果list集合不为空,将ist集合赋值给newlist:如果list集合为空创建一个空对象集合陆值给newlist,保证list集合水远
不为空,也就避免了空指针异常。(为了更好的理解,分开写了,比较庸俗,实际工作中都是一行搞定,哈哈哈)
public string getsystemVariableValueById(StringvariableType,String variableKey) {
OnlineSalesSystemVariable variable = this.getsystemVariableById(variableType variablekey);
return Optional.ofNullable(variable).map(systemVariable -> variable.getVariableValue()).orElse(null);
}
java 基础
于 2023-07-20 10:51:54 首次发布