@MRsunhuimin
2022-02-12T01:03:26.000000Z
字数 2350
阅读 153
总结
& 不管前面的条件是否正确,后面都执行
&& 前面条件正确时,才执行后面,不正确时,就不执行,就效率而言,这个更好。
||和|都是表示“或”,区别是||只要满足第一个条件,后面的条件就不再判断,而|要对所有的条件进行判断
运算符 | 含义 | 运算规则 |
---|---|---|
&& | 短路与 | 两个操作数都是true,结果才是true |
短路或 | 短路或 | 两个操作数一个是true,结果就是true |
! | 非 | 操作数为true,结果为false;操作数为false,结果为true |
i++和++i
i++先执行程序,再自己加1;++i先自己加1,再执行程序。
i--和--i
i--是先执行程序,再自己减一;--i先自己减一,再执行程序。
1. 基本数据类型,也称原始数据类型,应用双等号(==),比较的是他们的值。;equals方法不能作用于基本数据类型的变量。
2. 引用数据类型
==进行比较的时候,一般比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false。
如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;
例如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。
冒泡排序:N个数;
1.两层循环,外层循环N-1遍,控制循环的趟数,(n-1)是因为最后一趟不用比;
2.内层,相邻两数比较,大的往后走;每走完一趟,比较次数少一次;
3.循环结束,数组有序(升序);
代码:
public static void main(String[] args) {
for (int i = 0;i<test.length;i++){
for(int j = 0;j<test.length-i-1;j++){
if(test[j] > test[j+1]){
int temp = test[j];
test[j] = test[j+1];
test[j+1] = temp;
}
}
}
System.out.println(Arrays.toarray(数组名));
}
升序排序:
1. 每次比较相邻两数
2. 小的交换到前面
3. 每轮结束后最大的数交换到最后
特点:
1. 时间复杂度: O(N^2)
2. 空间复杂度: O(1)
3. 稳定性:稳定
%求余数
/求整数
- 单引号引的数据 是char类型的——》单引号只能引一个字符(表示单个字符)
- 双引号引的数据 是String类型的——》而双引号可以引0个及其以上(引用字符串)
之前一直不太明白,sql语句里为什么要写where 1=1 巴拉巴拉巴拉
提升某种执行效率?
其实,1=1 是永恒成立的,意思无条件的,也就是说在SQL语句中有没有这个1=1都可以。
这个1=1常用于应用程序根据用户选择项的不同拼凑where条件时用的。
如:web界面查询用户的信息,where默认为1=1,这样用户即使不选择任何条件,sql查询也不会出错。如果用户选择了姓名,那么where变成了where 1=1 and 姓名='用户输入的姓名',如果还选择了其他的条件,就不断在where 条件后追加 and语句就行了。
如果不用1=1的话,每加一个条件,都要判断前面有没有where 条件,如果没有就写where ...,有就写and语句,因此此时用1=1可以简化了应用程序的复杂度。
MyBatis 中为什么不建议使用 where 1=1?
几乎所有的 mapper 中都包含了一个无用的拼接 SQL:where 1=1,如果框架使用的是MyBatis,那么
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.mapper.UserMapper">
<select id="list" resultType="com.example.demo.model.User">
select * from user
where 1=1
<if test="name!=null">
and name=#{name}
</if>
<if test="password!=null">
and password=#{password}
</if>
</select>
</mapper>
MyBatis 中早已经想到了这个问题,可以将 SQL 中的 where 关键字换成 MyBatis 中的标签,并且给每个标签内都加上 and 拼接符,这样问题就解决了
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.mapper.UserMapper">
<select id="list" resultType="com.example.demo.model.User">
select * from user
<where>
<if test="name!=null">
and name=#{name}
</if>
<if test="password!=null">
and password=#{password}
</if>
</where>
</select>
</mapper>