------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
1. 运算符
1.1 比较运算符
![](https://i-blog.csdnimg.cn/blog_migrate/b1fb6bd3498cb0a19d2be6b3b7c56ced.jpeg)
注意:
1、比较运算符的结果都是boolean型,也就是要么是true,要么是false。
2、比较运算符“==”不能误写成“=” 。
示例1:
示例1:
运行结果:
![](https://i-blog.csdnimg.cn/blog_migrate/9710831f3592f0cd116101666d3e6d15.jpeg)
1.2 逻辑运算符
![](https://i-blog.csdnimg.cn/blog_migrate/462e561542af505ce5bb506c483dbdc7.jpeg)
逻辑运算符用于连接两个boolean类型的表达式。
"&"符号的运算特点:
true & true = true;
true & false = false;
false & true = false;
false & false = false;
"&"符号运算规律:
运算的两边只要有一个是false,结果肯定是false。只有两边都为true,结果才是true。
示例1:
运行结果:
true & true = true;
true & false = false;
false & true = false;
false & false = false;
"&"符号运算规律:
运算的两边只要有一个是false,结果肯定是false。只有两边都为true,结果才是true。
示例1:
运行结果:
![](https://i-blog.csdnimg.cn/blog_migrate/3fcf224c958d378efe18d9bf01dc67ed.jpeg)
"|"符号的运算特点:
true | true = true;
true | false = true;
false | true = true;
false | false = false;
"|"符号运算规律:
运算的两边只要有一个是true,结果肯定是true。
只有两边都为false,结果是false。
示例2:
运行结果:
true | true = true;
true | false = true;
false | true = true;
false | false = false;
"|"符号运算规律:
运算的两边只要有一个是true,结果肯定是true。
只有两边都为false,结果是false。
示例2:
运行结果:
![](https://i-blog.csdnimg.cn/blog_migrate/29c15fa4e0aaa4c0c5533cf971dd0e5f.jpeg)
"^"符号的运算特点:
true ^ true = false;
true ^ false = true;
false ^ true = true;
false ^ false = false;
"^"符号运算规律:
^符号的两边结果如果相同,结果是false。两边的结果不同,结果是true。
true ^ false = true;
false ^ true = true;
false ^ false = false;
"^"符号运算规律:
^符号的两边结果如果相同,结果是false。两边的结果不同,结果是true。
示例3:
运行结果:
![](https://i-blog.csdnimg.cn/blog_migrate/bd84222eaf6daf17d830dfb4672ece54.jpeg)
"!"符号运算规律:
true = false
!false = true
!!true = true
示例4:
运行结果:
true = false
!false = true
!!true = true
示例4:
运行结果:
![](https://i-blog.csdnimg.cn/blog_migrate/cd69e2a23971a431f4e39d5351d86809.jpeg)
P.S.
&&:和&运算的结果是一样的,但是运算过程有点小区别。
&:无论左边的运算结果是什么,右边都参与运算。
&&:当左边为false时,右边不参加运算,这样可以提升效率。
||:和|运算的结果是一样的,但是运算过程有点小区别。
|:无论左边的运算结果是什么,右边都参与运算。
||:当左边为true时,右边不参加运算,这样可以提升效率。
使用&&和||比使用&和|更高效一些。
逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6 。
&&:和&运算的结果是一样的,但是运算过程有点小区别。
&:无论左边的运算结果是什么,右边都参与运算。
&&:当左边为false时,右边不参加运算,这样可以提升效率。
||:和|运算的结果是一样的,但是运算过程有点小区别。
|:无论左边的运算结果是什么,右边都参与运算。
||:当左边为true时,右边不参加运算,这样可以提升效率。
使用&&和||比使用&和|更高效一些。
逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6 。
1.3 位运算符
![](https://i-blog.csdnimg.cn/blog_migrate/dd3f3b70f7bc02e4c9d85068159bec8a.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/5c47bbe67795bc7d1bb6352217aed8ff.jpeg)
P.S.
位运算是直接对二进制位进行运算。
与运算例子:
6 & 3 = 2
110
& 011
-------
010
示例:
![](https://i-blog.csdnimg.cn/blog_migrate/75cb1deceae331cc522eacc07adddb50.jpeg)
P.S.
用“与运算”可以很方便提取某一二进制数的其中几位数。
用“与运算”可以很方便提取某一二进制数的其中几位数。
或运算例子:
6 | 3 = 7
110
| 011
--------
111
6 | 3 = 7
110
| 011
--------
111
示例:
![](https://i-blog.csdnimg.cn/blog_migrate/9da056c0960b3d9f4ec1a2ad6f2ac650.jpeg)
异或运算例子:
6 ^ 3 = 5
110
^ 011
-------
101
示例:
运行结果:
6 ^ 3 = 5
110
^ 011
-------
101
示例:
运行结果:
![](https://i-blog.csdnimg.cn/blog_migrate/cc79dce508797cc083b4a5aa1e3610e3.jpeg)
P.S.
一个数异或同一个数两次,结果还是这个数。
一个数异或同一个数两次,结果还是这个数。
例子:
6 ^ 3 ^ 3 = 6
6 ^ 3 = 5
110
^ 011
-------
101
^ 011
-------
110
6 ^ 3 ^ 3 = 6
6 ^ 3 = 5
110
^ 011
-------
101
^ 011
-------
110
技巧:
利用异或运算可以实现对数据简单地进行加密,例如对一幅图片的所有数据异或3进行加密,那么这幅图片就无法查看了。解密只需要再对图片的数据执行异或3操作即可。
取反运算:
取反操作就是对二进制数值的每一位0变1,1变0。
示例:
![](https://i-blog.csdnimg.cn/blog_migrate/8c02efb7bb93763b717fb6325d6189bf.jpeg)
左移运算例子:
3 << 2 = 12 相当于 3 * 2(2) = 12
00000000000000000000000000000011
00000000000000000000000000001100
3 << 3 = 24 相当于 3 * 2(3) = 24
00000000000000000000000000000011
00000000000000000000000000011000
示例:
运行结果:
3 << 2 = 12 相当于 3 * 2(2) = 12
00000000000000000000000000000011
00000000000000000000000000001100
3 << 3 = 24 相当于 3 * 2(3) = 24
00000000000000000000000000000011
00000000000000000000000000011000
示例:
运行结果:
![](https://i-blog.csdnimg.cn/blog_migrate/845638c35d5eb5288b66869ecf2fba03.jpeg)
总结:
左移几位其实就是该数据乘以2的几次方。
<<:可以完成2的次幂运算。
右移运算例子:
6 >> 1 = 3 相当于 6/2(1)=3
00000000000000000000000000000110
00000000000000000000000000000011
6 >> 2 = 1 相当于 6/2(2) = 1
00000000000000000000000000000110
00000000000000000000000000000001
示例:
运行结果:
左移几位其实就是该数据乘以2的几次方。
<<:可以完成2的次幂运算。
右移运算例子:
6 >> 1 = 3 相当于 6/2(1)=3
00000000000000000000000000000110
00000000000000000000000000000011
6 >> 2 = 1 相当于 6/2(2) = 1
00000000000000000000000000000110
00000000000000000000000000000001
示例:
运行结果:
![](https://i-blog.csdnimg.cn/blog_migrate/ff5897ed62e753ac4dfff385fc5364c0.jpeg)
总结:
右移几位其实就是该数据除以2的几次幂。
附:
以上例子中括号表示次幂的意思。
P.S.
>>:对于高位出现的空位,原来高位是什么,就用什么补这个空位。
>>>:无符号右移,数据进行右移时,高位出现的空位,无论原高位是什么,空位都用0补。
练习:
1. 最有效率的方式算出2乘以8等于几?
答案:
运行结果:
右移几位其实就是该数据除以2的几次幂。
附:
以上例子中括号表示次幂的意思。
P.S.
>>:对于高位出现的空位,原来高位是什么,就用什么补这个空位。
>>>:无符号右移,数据进行右移时,高位出现的空位,无论原高位是什么,空位都用0补。
练习:
1. 最有效率的方式算出2乘以8等于几?
答案:
运行结果:
![](https://i-blog.csdnimg.cn/blog_migrate/e5a72cc3c33d80c59c0b220162aa5ce6.jpeg)
2. 对两个整数变量的值进行互换(可以使用第三方变量)。
答案:
运行结果:
![](https://i-blog.csdnimg.cn/blog_migrate/99dc0f1180e8a09734933d062e78522b.jpeg)
3. 对两个整数变量的值进行互换(不可以使用第三方变量)。
答案1:
![](https://i-blog.csdnimg.cn/blog_migrate/ab6f61f806b600fe6ec8f8281aad018e.jpeg)
答案2:
![](https://i-blog.csdnimg.cn/blog_migrate/678d1743ce4fd8a30b722cdbd1668dc9.jpeg)
1.4 三元运算符
格式:
(条件表达式) ? 表达式1 : 表达式2;
如果条件为true,运算后的结果是表达式1;
如果条件为false,运算后的结果是表达式2。
(条件表达式) ? 表达式1 : 表达式2;
如果条件为true,运算后的结果是表达式1;
如果条件为false,运算后的结果是表达式2。
示例1:
![](https://i-blog.csdnimg.cn/blog_migrate/6643ac137c3a2d0400c8a38358013af6.jpeg)
示例2:获取两个整数中的较大的整数。
![](https://i-blog.csdnimg.cn/blog_migrate/45af2c0cd803206b397ceb98913bf2fc.jpeg)
示例3: 获取三个整数中的较大的整数。
运行结果:
![](https://i-blog.csdnimg.cn/blog_migrate/1779a7f31e8766fed00f05af45add32e.jpeg)
注意
表达式:就是具有一定语法规则的语句。
表达式:就是具有一定语法规则的语句。
2. 程序流程控制
2.1 判断结构
if语句
格式一:
if ( 条件表达式 )
{
执行语句;
}
示例:
运行结果:
{
执行语句;
}
示例:
运行结果:
![](https://i-blog.csdnimg.cn/blog_migrate/13904621c61094ed66e64552b224d23d.jpeg)
P.S.
1、如果if语句中只有一条语句,那么可以不写大括号。不过初学者一定要写括号,以免出错。
2、如果if语句没写大括号,if就只能控制离它最近的单条语句。
示例:
![](https://i-blog.csdnimg.cn/blog_migrate/e5e3c626ae814673fa6f3748cee2b1cb.jpeg)
格式二:
if ( 条件表达式 )
{
执行语句;
}
else
{
执行语句;
}
示例1:
运行结果:
![](https://i-blog.csdnimg.cn/blog_migrate/530781f3c39b00e62f3716dcb100ee2b.jpeg)
示例2:
![](https://i-blog.csdnimg.cn/blog_migrate/4d9e9d8b864d7f0508581d5dcf0b8065.jpeg)
P.S.
三元运算符就是if else语句的简写格式。
例如:b = a > 1 ? 100 : 200;就可以实现和上面同样的功能。
简写格式什么时候用?
当if else运算后,有一个具体的结果时,可以简化写成三元运算符。
三元运算符就是if else语句的简写格式。
例如:b = a > 1 ? 100 : 200;就可以实现和上面同样的功能。
简写格式什么时候用?
当if else运算后,有一个具体的结果时,可以简化写成三元运算符。
格式三:
if(条件表达式)
{
执行语句;
}
else if (条件表达式)
{
执行语句;
}
……
else
{
执行语句;
}
示例:
if(条件表达式)
{
执行语句;
}
else if (条件表达式)
{
执行语句;
}
……
else
{
执行语句;
}
示例:
![](https://i-blog.csdnimg.cn/blog_migrate/89369f66e558811e6639178376205eea.jpeg)
P.S.
if( 表达式 )后面切忌加上分号,否则表示无论表达式为true或者false,都不执行任何语句。
示例:
![](https://i-blog.csdnimg.cn/blog_migrate/f3d2773592b7e944c0bcfb769dd6d2df.jpeg)
说明:由于if( false );语句后面加了分号,因此不执行任何操作。{ System.out.println("Hello World"); }为局部代码块。
局部代码块:局部代码块可以定义局部变量的生命周期。
示例:
运行结果:
![](https://i-blog.csdnimg.cn/blog_migrate/b22c5ebdbc8829a06bde99974244b306.jpeg)
说明:变量m是局部变量,生命周期仅在局部代码块括号中,当代码执行到局部代码块右括号外,变量m便消失了。局部代码块外的代码当然也就访问不到变量m了。
if语句特点:
1、每一种格式都是单条语句。
2、第二种格式与三元运算符的区别:三元运算符运算完一定要有值出现。好处是:可以写在其他表达式中。
3、条件表达式无论写成什么样子,只看最终的结构是否是true或者false。
1、每一种格式都是单条语句。
2、第二种格式与三元运算符的区别:三元运算符运算完一定要有值出现。好处是:可以写在其他表达式中。
3、条件表达式无论写成什么样子,只看最终的结构是否是true或者false。
练习1:根据用户定义的数值不同,打印对应的星期。
![](https://i-blog.csdnimg.cn/blog_migrate/6ba96d4d5b386e58a849077843f5e8ad.jpeg)
练习2:根据用于指定月份,打印该月份所属的季节。
运行结果:
![](https://i-blog.csdnimg.cn/blog_migrate/fdb65360dd96f0d762193e43aa25b0f1.jpeg)
2.2 选择结构
switch语句
格式:
switch(表达式)
{
case 取值1:
执行语句;
break;
case 取值2:
执行语句;
break;
…...
default:
执行语句;
break;
}
switch语句特点:
1、switch语句选择的类型只有四种:byte,short,int,char。
2、case与default没有顺序。先执行第一个case,没有匹配的case执行default。
3、结束switch语句的两种情况:①遇到break,②执行到switch语句结束。
4、如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾结束。
5、进入switch语句后,执行顺序是先执行case,然后从上到下,最后再执行default。即使default放在case上面,执行顺序也不变。
示例1:
运行结果:
![](https://i-blog.csdnimg.cn/blog_migrate/f8e03ff89cf7c45f551e6400f5fb2d45.jpeg)
示例2:
![](https://i-blog.csdnimg.cn/blog_migrate/51c7e169926bbf23303d4527b3a450f4.jpeg)
示例3:部分case和default中没有break语句的情况。
运行结果:
![](https://i-blog.csdnimg.cn/blog_migrate/b60d91449b6f06ad202ad9a0ba561eb6.jpeg)
示例4:
![](https://i-blog.csdnimg.cn/blog_migrate/bf90befac3d21a89489760b1e87b7cb8.jpeg)
示例5:多个case同一种处理方式的情况。
运行结果:
![](https://i-blog.csdnimg.cn/blog_migrate/2d0e5708a9efc629378b37908dc5e8f0.jpeg)
if和switch语句的应用:
if:
1. 对具体的值进行判断。
2. 对区间判断。
3. 对运算结果是boolean类型的表达式进行判断。
switch:
1. 对具体的值进行判断。
2. 值的个数通常是固定的。
对于几个固定的值判断,建议使用switch语句,因为switch语句会将具体的答案都加载进内存,效率相对高。
关键词:while,do while,for。
while语句格式:
while( 条件表达式 )
{
执行语句;
}
if:
1. 对具体的值进行判断。
2. 对区间判断。
3. 对运算结果是boolean类型的表达式进行判断。
switch:
1. 对具体的值进行判断。
2. 值的个数通常是固定的。
对于几个固定的值判断,建议使用switch语句,因为switch语句会将具体的答案都加载进内存,效率相对高。
2.3 循环结构
关键词:while,do while,for。
while语句格式:
while( 条件表达式 )
{
执行语句;
}
![](https://i-blog.csdnimg.cn/blog_migrate/e71041bb7bdec5976380899c550097eb.jpeg)
P.S.
一定要注意不要写while(x < 3);这样的语句,后面的分号就是循环体,代表不执行任何语句,这个循环就成了一个死循环。
do while语句格式:
do
{
执行语句;
}while( 条件表达式 );
示例:
![](https://i-blog.csdnimg.cn/blog_migrate/b8b2d0852c52dd47300c8eeeaf3c1df8.jpeg)
while和do while的区别:
do while语句的特点:无论条件是否满足,循环体至少执行一次。
while如果条件不满足,循环体一次都不会执行。
do while语句的特点:无论条件是否满足,循环体至少执行一次。
while如果条件不满足,循环体一次都不会执行。
练习1:
获取1到10,10个数字的和。
![](https://i-blog.csdnimg.cn/blog_migrate/2a79a40355d65e982626c6decded3b4f.jpeg)
练习2:1~100之间,6的倍数出现的次数。
![](https://i-blog.csdnimg.cn/blog_migrate/8cb1d7fe03f88e9e64434654835c45f8.jpeg)
for语句格式:
for(初始化表达式;循环条件表达式;循环后的操作表达式)
{
执行语句;(循环体)
}
{
执行语句;(循环体)
}
for里面的三个表达式运行的顺序,初始化表达式只读一次,判断循环条件,为真就执行循环体,然后再执行循环后的操作表达式,接着继续判断循环条件,重复找个过程,直到条件不满足为止。
示例:
![](https://i-blog.csdnimg.cn/blog_migrate/da56887a57253b411c5770e8c1ca3630.jpeg)
P.S.
for循环的初始化表达式、循环后的操作表达式可以是多个表达式,通过逗号分隔。
例如:
for(int a = 1,b =2; a < 2 & b < 3; a++,b++){
}
练习1:
for(int a = 1,b =2; a < 2 & b < 3; a++,b++){
}
练习1:
运行结果:
运行结果:
![](https://i-blog.csdnimg.cn/blog_migrate/e652418272f03b48dfaddc64f432dfbb.jpeg)
1、while与for可以互换,区别在于for为了循环而定义的变量在for循环结束就在内存中释放,而while循环使用的变量在循环结束后还可以继续使用。
下面通过两个例子对比:
示例1:
下面通过两个例子对比:
示例1:
![](https://i-blog.csdnimg.cn/blog_migrate/90c1e4f7add9b5c3317cb41c81352a15.jpeg)
示例2:
![](https://i-blog.csdnimg.cn/blog_migrate/a607816b0cc159aee484ce08a3a8982a.jpeg)
2、最简单无限循环格式:while(true) , for(;;),无限循环存在的原因是并不知道循环多少次,而是根据某些条件,来控制循环。
3、在使用循环时候,一定要明确哪些语句需要参与循环,哪些不需要。循环通常情况下,需要定义条件,需要控制次数。
3、在使用循环时候,一定要明确哪些语句需要参与循环,哪些不需要。循环通常情况下,需要定义条件,需要控制次数。