黑马程序员--java基础学习笔记3
2015-07-02 11:05
399 查看
黑马程序员--java基础学习笔记3
一、笔记内容概述:
比较运算符&逻辑运算符、位运算符、移位运算符、三元运算符、if语句、局部代码块、switch语句、while语句、do-while语句、for循环语句、循环结构的使用场景。
二、常用内容介绍:
1.>>>无符号右移,数据进行右移时,高位出现的空位,无论原来的最高位是什么,空位都用0补。
2.^运算符的特点:
true ^ true = false;
true ^ false = true;
false ^ true = true;
true ^ true = false;
^ 符号的两边结果相同,结果就是false。
3.&和&&运算结果是一样的,但是运算过程中有小区别:
3>5 && 3<6 3>5 & 3<6
&:无论左边的结果是什么,右边都参与运算。
&&:当左边为false时,右边就不参与运算了,提高了运算效率。
4.if语句和switch语句的区别:
if:
a.对于具体的值进行判断。
b.对区间判断。
c.对运算结果是boolean类型的表达式进行判断。
switch:
a.对具体的值进行判断。
b.值的个数通常都是固定的。
对于几个固定的值判断,建议使用switch语句,因为switch语句会将具体的答案都加载进内存,效率相对高。不过一般情况下,都是用if语句,因为switch语句功能扩展性较差,且书写麻烦(关键字较多),而if语句相对灵活,if语句常用语开发。
5.while与for的区别:
while与for可以互换,区别在于for为了循环而定义的变量在for循环结束后就在内存中释放,而while循环使用的变量在循环结束后还可以继续使用。
6.for循环执行的顺序:
for(初始化表达式;循环条件表达式;循环后的操作表达式)
三、经典示例及讲解:
1.分析下面移位运算符合传统运算的特点:
一、笔记内容概述:
比较运算符&逻辑运算符、位运算符、移位运算符、三元运算符、if语句、局部代码块、switch语句、while语句、do-while语句、for循环语句、循环结构的使用场景。
二、常用内容介绍:
1.>>>无符号右移,数据进行右移时,高位出现的空位,无论原来的最高位是什么,空位都用0补。
2.^运算符的特点:
true ^ true = false;
true ^ false = true;
false ^ true = true;
true ^ true = false;
^ 符号的两边结果相同,结果就是false。
3.&和&&运算结果是一样的,但是运算过程中有小区别:
3>5 && 3<6 3>5 & 3<6
&:无论左边的结果是什么,右边都参与运算。
&&:当左边为false时,右边就不参与运算了,提高了运算效率。
4.if语句和switch语句的区别:
if:
a.对于具体的值进行判断。
b.对区间判断。
c.对运算结果是boolean类型的表达式进行判断。
switch:
a.对具体的值进行判断。
b.值的个数通常都是固定的。
对于几个固定的值判断,建议使用switch语句,因为switch语句会将具体的答案都加载进内存,效率相对高。不过一般情况下,都是用if语句,因为switch语句功能扩展性较差,且书写麻烦(关键字较多),而if语句相对灵活,if语句常用语开发。
5.while与for的区别:
while与for可以互换,区别在于for为了循环而定义的变量在for循环结束后就在内存中释放,而while循环使用的变量在循环结束后还可以继续使用。
6.for循环执行的顺序:
for(初始化表达式;循环条件表达式;循环后的操作表达式)
三、经典示例及讲解:
1.分析下面移位运算符合传统运算的特点:
package com.date3; /** *事实上,经过多次调试,运行速度都差不多,只是理论上移位运算符更高效一些。 * */ public class Demo2 { public static void main(String[] args){ method1(); } private static void method2() { long time1 = System.currentTimeMillis(); int x = 0; for(int i=0;i<10000000;i++){ x = 2 * 8; } long time2 = System.currentTimeMillis(); System.out.print(x+"\t"); System.out.println("传统运算方式:"+(time2-time1)); } /** * 采用移位运算符处理 */ private static void method1() { long time1 = System.currentTimeMillis(); int x = 0; for(int i=0;i<10000000;i++){ x = 2 << 3; } long time2 = System.currentTimeMillis(); System.out.print(x+"\t"); System.out.println("移位运算方式"+(time2-time1)); } }2.理解下面三种不同的交换值的方式:
package com.date3; /** *交换值a,b值的三种方式 */ public class Demo3 { public static void main(String[] args){ method3(); } //方式一:采用中间值 private static void method1(){ int a = 3,b = 5; int c; c = a; a = b; b = c; System.out.println("a="+a+",b="+b); } //方式二:不采用中间值(不建议使用这种方法,可能会溢出) private static void method2(){ int a = 3,b = 5; a = a + b; b = a - b; a = a - b; System.out.println("a="+a+",b="+b); } //方式三:采用异或运算符^ a^b^b = a; private static void method3(){ int a = 3,b = 5; a = a ^ b; b = a ^ b; a = a ^ b; System.out.println("a="+a+",b="+b); } }3.理解局部代码块和if(true);{}方式的特点:
package com.date3; /** *由于if(true);语句后面加了分号,这个判断会执行, *但是判断后的结果不会对下面的局部代码块执行造成影响。 *后面的语句为局部代码块,它会自动加载运行,局部代码块可以用来释放内存。 *switch语句选择的类型只有四种:byte,short,int,char。 */ public class Demo4 { public static void main(String[] args) { int x; if(true); { System.out.println("hello world!"); x = 5; } System.out.println(x); } }
相关文章推荐
- 程序员的必要元素
- 黑马程序员——java的反射机制
- 黑马程序员——Java基础之多线程
- 黑马程序员——Java基础——单例设计模式及扩展
- 【剑指Offer学习】【面试题28 :字符串的排列】
- 【剑指Offer学习】【面试题27:二叉搜索树与双向链表】
- 【剑指Offer学习】【面试题26:复杂链表的复制】
- 摘录-IT企业必读的200个.NET面试题-05 常用类和接口
- 黑马程序员-java基础-三种实现线程的方式
- 黑马程序员------Java的多态性
- 黑马程序员-java基础-String类及String类的相关操作方法
- 黑马程序员------Java_IO关于缓冲区提高代码复用性
- 黑马程序员------IO流文件复制4种代码实现
- 黑马程序员------集合的遍历Iterator/ListIterator
- 程序员获取新编程技能的5个技巧?
- 程序员学会八大开发技巧 涨薪不是问题
- 黑马程序员------数组排序总结(Day12)
- 黑马程序员------判断语句概述
- 随笔:做一个平庸程序员,are you scared?
- 黑马程序员------数据类型与运算概述