您的位置:首页 > 职场人生

黑马程序员--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.分析下面移位运算符合传统运算的特点:
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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: