黑马程序员技术交流社区
标题: 【阳哥笔记】极速秒杀Java基础之笔记系列—Day03(基础语法)! [打印本页]
作者: 阳哥忠粉 时间: 2015-6-1 22:51
标题: 【阳哥笔记】极速秒杀Java基础之笔记系列—Day03(基础语法)!
1.6.3 比较运算符
P.S.
1、比较运算符的结果都是boolean型,也就是要么是true,要么是false。
2、比较运算符“==”不能误写成“=” 。
示例1:
- class OperatorDemo
- {
- public static void main(String[] args){
- System.out.println( 3 > 2 );
- System.out.println( 3 == 2 );
- }
- }
复制代码 运行结果:
1.6.4 逻辑运算符
逻辑运算符用于连接两个boolean类型的表达式。
"&"符号的运算特点:
true & true = true;
true & false = false;
false & true = false;
false & false = false;
"&"符号运算规律:
运算的两边只要有一个是false,结果肯定是false。
只有两边都为true,结果才是true。
示例1:
- class OperatorDemo
- {
- public static void main(String[] args){
- int x = 6;
- System.out.println( x > 2 & x < 5 );
- }
- }
复制代码 运行结果:
"|"符号的运算特点:
true | true = true;
true | false = true;
false | true = true;
false | false = false;
"|"符号运算规律:
运算的两边只要有一个是true,结果肯定是true。
只有两边都为false,结果是false。
示例2:
- class OperatorDemo
- {
- public static void main(String[] args){
- int x = 3;
- System.out.println( x > 2 | x < 5 );
- }
- }
复制代码 运行结果:
"^"符号的运算特点:
true ^ true = false;
true ^ false = true;
false ^ true = true;
false ^ false = false;
"^"符号运算规律:
^符号的两边结果如果相同,结果是false。
两边的结果不同,结果是true。
示例3:
- class OperatorDemo
- {
- public static void main(String[] args){
- int x = 3;
- System.out.println( x > 2 ^ x < 5 );
- }
- }
复制代码 运行结果:
"!"符号运算规律:
true = false
!false = true
!!true = true
示例4:
- class OperatorDemo
- {
- public static void main(String[] args){
- int x = 3;
- System.out.println( ! ( x > 2 ) );
- }
- }
复制代码 运行结果:
P.S.
&&:和&运算的结果是一样的,但是运算过程有点小区别。
&:无论左边的运算结果是什么,右边都参与运算。
&&:当左边为false时,右边不参加运算,这样可以提升效率。
||:和|运算的结果是一样的,但是运算过程有点小区别。
|:无论左边的运算结果是什么,右边都参与运算。
||:当左边为true时,右边不参加运算,这样可以提升效率。
使用&&和||比使用&和|更高效一些。
逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6 。
1.6.5 位运算符
P.S.
位运算是直接对二进制位进行运算。
与运算例子:
6 & 3 = 2
110
& 011
-------
010
示例:
- class OperatorDemo
- {
- public static void main(String[] args){
- System.out.println( 6 & 3 );
- }
- }
复制代码 运行结果:
P.S.
用“与运算”可以很方便提取某一二进制数的其中几位数。
或运算例子:
6 | 3 = 7
110
| 011
--------
111
示例:
- class OperatorDemo
- {
- public static void main(String[] args){
- System.out.println( 6 | 3 );
- }
- }
复制代码 运行结果:
异或运算例子:
6 ^ 3 = 5
110
^ 011
-------
101
示例:
- class OperatorDemo
- {
- public static void main(String[] args){
- System.out.println( 6 ^ 3 );
- }
- }
复制代码 运行结果:
P.S.
一个数异或同一个数两次,结果还是这个数。
例子:
6 ^ 3 ^ 3 = 6
6 ^ 3 = 5
110
^ 011
-------
101
^ 011
-------
110
技巧:
利用异或运算可以实现对数据简单地进行加密,例如对一幅图片的所有数据异或3进行加密,那么这幅图片就无法查看了。解密只需要再对图片的数据执行异或3操作即可。
取反运算:
取反操作就是对二进制数值的每一位0变1,1变0。
示例:
- class OperatorDemo
- {
- public static void main(String[] args){
- System.out.println( ~6 );
- }
- }
复制代码 运算结果:
左移运算例子:
3 << 2 = 12 相当于 3 * 2(2) = 12
00000000000000000000000000000011
00000000000000000000000000001100
3 << 3 = 24 相当于 3 * 2(3) = 24
00000000000000000000000000000011
00000000000000000000000000011000
示例:
- class OperatorDemo
- {
- public static void main(String[] args){
- System.out.println( 3 << 2 );
- System.out.println( 3 << 3 );
- }
- }
复制代码 运行结果:
总结:
左移几位其实就是该数据乘以2的几次方。
<<:可以完成2的次幂运算。
右移运算例子:
6 >> 1 = 3 相当于 6/2(1)=3
00000000000000000000000000000110
00000000000000000000000000000011
6 >> 2 = 1 相当于 6/2(2) = 1
00000000000000000000000000000110
00000000000000000000000000000001
示例:
- class OperatorDemo
- {
- public static void main(String[] args){
- System.out.println( 6 >> 1 );
- System.out.println( 6 >> 2 );
- }
- }
复制代码 运行结果:
总结:
右移几位其实就是该数据除以2的几次幂。
附:
以上例子中括号表示次幂的意思。
P.S.
>>:对于高位出现的空位,原来高位是什么,就用什么补这个空位。
>>>:无符号右移,数据进行右移时,高位出现的空位,无论原高位是什么,空位都用0补。
练习:
1. 最有效率的方式算出2乘以8等于几?
答案:
- class OperatorDemo
- {
- public static void main(String[] args){
- System.out.println( 2 << 3 );
- }
- }
复制代码 运行结果:
2. 对两个整数变量的值进行互换(可以使用第三方变量)。
答案:
- class OperatorDemo
- {
- public static void main(String[] args){
- int a = 3,b = 5;
- //开发时,使用第三方变量的形式,因为阅读性强。
- int c;
- System.out.println( "a = " + a + ",b = " + b );
- c = a;
- a = b;
- b = c;
- System.out.println( "a = " + a + ",b = " + b );
- }
- }
复制代码 运行结果:
3. 对两个整数变量的值进行互换(不可以使用第三方变量)。
答案1:
- class OperatorDemo
- {
- public static void main(String[] args){
- int a = 3,b = 5;
- int c;
- System.out.println( "a = " + a + ",b = " + b );
- //这种方式不要用,如果两个整数的数值过大,会超出int范围,会强制转换,数据会变化。
- a = a + b;
- b = a - b;
- a = a - b;
- System.out.println( "a = " + a + ",b = " + b );
- }
- }
复制代码 运行结果:
答案2:
- class OperatorDemo
- {
- public static void main(String[] args){
- int a = 3,b = 5;
- int c;
- System.out.println( "a = " + a + ",b = " + b );
- a = a ^ b;
- b = a ^ b;
- a = a ^ b;
- System.out.println( "a = " + a + ",b = " + b );
- }
- }
复制代码 运行结果:
1.6.5 三元运算符
格式:
(条件表达式) ? 表达式1 : 表达式2;
如果条件为true,运算后的结果是表达式1;
如果条件为false,运算后的结果是表达式2。
示例1:
- class OperatorDemo
- {
- public static void main(String[] args){
- int x = 3,y;
- y = ( x > 1 ) ? 100 : 200;
- System.out.println( "y = " + y );
- }
- }
复制代码 运行结果:
示例2:获取两个整数中的较大的整数。
- class OperatorDemo
- {
- public static void main(String[] args){
- int a = 3,b = 5;
- int max = a > b ? a : b;
- System.out.println( max );
- }
- }
复制代码 运行结果:
示例3:获取三个整数中的较大的整数。
- class OperatorDemo
- {
- public static void main(String[] args){
- int o = 4,p = 5,q = 10;
- int temp = o > p ? o : p;
- int max = temp > q ? temp : q;
- System.out.println( max );
- }
- }
复制代码 运行结果:
作者: bin2015 时间: 2015-6-1 23:43
谢谢阳哥分享
作者: thoris 时间: 2015-6-1 23:51
继续跟着复习~
作者: 时光匆匆 时间: 2015-6-2 07:25
太赞了,一天更一章的节奏啊
作者: 阜南lxd 时间: 2015-6-2 07:25
挺详细的!
作者: 夏尔 时间: 2015-6-2 07:35
每天都能看到 真好
作者: zhanglaoda1989 时间: 2015-6-2 08:25
继续!!!
作者: vvipqiqi 时间: 2015-6-2 09:11
超详细。
作者: 嘉Ming 时间: 2015-6-2 09:16
对复习很有帮助,顶起
作者: tougboy 时间: 2015-6-2 09:46
路过 学习 谢谢
作者: InterDoly 时间: 2015-6-2 10:05
每天都可以查漏补缺
作者: qian0217wei 时间: 2015-6-2 17:22
问下,这是毕老师的视频笔记还是刘毅的!
作者: langxiao505 时间: 2015-6-2 17:45
阳哥加油!伪前排!
作者: 小囧 时间: 2015-6-2 18:35
巩固了基础哈
作者: sky930722 时间: 2015-6-2 22:19
笔记很详细,谢谢阳哥
作者: 唐海 时间: 2015-6-2 22:23
收藏了,以后回来看
作者: 城北一直晴。 时间: 2015-6-3 19:09
很不错啊,受益颇多。
作者: 15383016390 时间: 2015-6-3 19:17
期待更新,,,,,,
作者: danlyalex 时间: 2015-6-4 08:17
怎么下载啊?我都是复制粘贴然后自己改板式..好麻烦
作者: tougboy 时间: 2015-6-4 09:17
阳哥 真男人
作者: Sky丶 时间: 2015-6-4 19:54
本帖最后由 Sky丶 于 2015-6-4 19:56 编辑
- <div class="blockcode"><blockquote>class IfDemo//这个应该是阳哥你想表达的代码 原程序只要大于1 输出都是a 这个程序就没必要用if语句了
- {
- public static void main(String[] args){
- int x = 3;
- if( x > 4 )
- System.out.println("a");
- else if( x > 3 )
- System.out.println("b");
- else if ( x > 2 )
- System.out.println("c");
- else if( x > 1)
- System.out.println("d");
-
- System.out.println("over");
- }
- }
复制代码
阳哥辛苦了,我来帮你找错误 (PS:其实我是复习 前面学的都忘了)
-
QQ截图20150604193403.png
(58.49 KB, 下载次数: 29)
作者: 乌卡卡 时间: 2015-6-5 13:06
受益,基础知识虽然很早学过,但是这样归纳的笔记让我快速记忆
作者: wx_iAuO26mH 时间: 2015-6-6 11:28
本帖最后由 wx_iAuO26mH 于 2015-6-6 11:30 编辑
学习中 这个地方少一个 ! 符号C:\Users\Administrator\Desktop
-
QQ截图20150606112240.gif
(3.55 KB, 下载次数: 27)
作者: wx_iAuO26mH 时间: 2015-6-6 12:39
看过 自己以前不注意的小细节 都知道了 懂了
作者: 海角秋风 时间: 2015-6-6 12:45
很详细,需要保留下来。。。
作者: 李俊超 时间: 2015-6-7 00:59
for循环的案例很不错,很是受用:分享下
循环结构for语句的格式: for(初始化表达式语句;判断条件语句;控制条件语句) {
循环体语句;
}
执行流程:
a:执行初始化语句
b:执行判断条件语句,看其返回值是true还是false
如果是true,就继续执行
如果是false,就结束循环
c:执行循环体语句;
d:执行控制条件语句
e:回到B继续。
注意事项:
初始化表达式语句只执行一次
a:判断条件语句无论简单还是复杂结果是boolean类型。
b:循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不能省略。建议永远不要省略。
c:一般来说:有左大括号就没有分号,有分号就没有左大括号
作者: 微尘爱笑 时间: 2015-6-7 10:51
好好学习,天天向上。
作者: 小囧 时间: 2015-6-7 15:47
我又看了一遍,倒数第二个程序好像应该这样class whileDemo
作者: 小囧 时间: 2015-6-7 15:48
刚刚发失败了,我再发一次
*/
class whileDemo
{
public static void main(String[] args){
//打印1~10十个数字
int x = 1;
while(x < 11)
{
System.out.println("x = " + x);
x++;
}
}
}
作者: 老徐 时间: 2015-6-7 20:59
看完了 好顶赞,明天就要学循环了
作者: Jackie7 时间: 2015-6-7 22:09
明天的内容,再复习+预习一次。
作者: cyd1058 时间: 2015-6-9 00:27
阳哥,比较运算符列表中4>=3,结果显示为false,是不是笔误?
作者: Jackie7 时间: 2015-6-9 22:29
今儿就学的这个。再复习一遍。
作者: 新缘 时间: 2015-6-10 06:21
赞一个。
作者: 小悟空et 时间: 2015-6-10 11:02
SwitchDemo 月份的那个,没有加break;吧
作者: 大爱卓生 时间: 2015-6-10 14:10
简直就是如虎添翼!!!
作者: New_PS 时间: 2015-6-10 23:08
受教 好东西
作者: thoris 时间: 2015-6-11 20:20
switch判断的升级要不要加进去 枚举 字符串都可以判断
作者: Jackie7 时间: 2015-6-12 22:51
今儿考试 了。。。考的好差、再看看。。
作者: 以梦为马123 时间: 2015-6-16 11:24
学习了额
作者: wxRocky 时间: 2015-6-18 09:09
阳哥太谢谢啦。
作者: wxRocky 时间: 2015-6-19 08:53
阳哥笔记更新的真快。
作者: 魏海洲 时间: 2015-6-22 21:26
谢谢阳哥分享
作者: 纪青超 时间: 2015-6-22 21:34
今天刚学了视频课程,赋值运算符的优先级比比较运算符差。
作者: 十五号的人生 时间: 2015-6-22 21:41
值得收藏
作者: heisanheisan123 时间: 2015-6-22 21:42
正好用到,谢过。。
作者: wxRocky 时间: 2015-6-24 09:08
阳哥要罩着我啊。
作者: yanda007 时间: 2015-6-25 08:25
谢谢阳哥!正在收益中!
作者: 不要想静静 时间: 2015-7-3 00:04
一天结束啦,很有收获! 发现看笔记比看视频学的更快呢 呵呵。
作者: 不要想静静 时间: 2015-7-3 08:45
好的
作者: linqiwang 时间: 2015-7-7 13:12
收益颇多
作者: 安卓新手 时间: 2015-7-20 16:55
出错了吧 1.7.1 最后例题 怎么9月是春季 结果错了
作者: Sad_king 时间: 2015-7-20 22:56
不错 学习了
作者: 对时间过敏113 时间: 2015-7-22 20:10
:handshake
作者: deng2242 时间: 2015-8-13 20:05
别人笑我太疯癫,我笑他人看不穿,不管别人怎样,我都要坚持每天的学习,黑马,我来了
作者: 一个人的朝圣 时间: 2015-9-19 16:39
又看了一遍
作者: 迷茫不堪的年纪 时间: 2015-9-22 23:46
夜班终于又回忆了一次,嘿嘿, switch 和 if 稍微生疏,其他都还OK。、
作者: 1384588560 时间: 2015-9-23 02:17
福利福利
作者: 怀旧小柯 时间: 2015-9-23 07:45
这一部分内容刚学过
作者: tuyrt7 时间: 2015-10-13 22:48
果然牛掰了
作者: 1975532882 时间: 2015-10-23 20:21
牛,,,,,,,,,,,,,,,,,
作者: 周伟168 时间: 2015-10-23 23:36
值得信赖
作者: 石三伢子1 时间: 2015-11-1 12:38
很全面细致,尤其是ps部分都是面试易错的题;非常棒;
作者: 刘印 时间: 2015-11-1 12:44
不错可以出书了
作者: 刘印 时间: 2015-11-1 12:45
不错,可以出书了
作者: MRguo 时间: 2015-11-26 17:07
笔记很好,谢谢阳哥分享啊{:2_32:}
作者: 回归原点521 时间: 2015-12-14 19:08
很好理解,一看全明白
作者: lixy 时间: 2015-12-20 13:49
总结得不错,赞一个!
作者: byb442230 时间: 2016-2-23 13:38
复习就靠它了
作者: 13120298870 时间: 2016-5-2 01:25
知识点很通透!赞一个
作者: 安分的心灵 时间: 2016-5-2 08:58
谢谢分享
作者: 90后的契约 时间: 2016-5-2 09:11
复习当中。
作者: liuqjss 时间: 2016-5-2 11:31
温习了一遍加深印象
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |