你的位置:首页 > Java教程

[Java教程]java 基础三

1 运算符

1.1  比较运算符

  • 比较运算符的结果都是boolean类型,也即是要么是true,要么是false。
  • 比较运算符"=="不能写成"="。

 

  • >
package java003;/** * 2017/8/31. * 说明: */public class OperateDemo { public static void main(String[] args) {  int a = 3;  int b = 7;  System.out.print(a>b);//false }}
  • <
package java003;/** * 2017/8/31. * 说明: */public class OperateDemo { public static void main(String[] args) {  int a = 3;  int b = 7;  System.out.print(a<b);//true }}
  • ==
package java003;/** * 2017/8/31. * 说明: */public class OperateDemo { public static void main(String[] args) {  int a = 3;  int b = 7;  System.out.print(a==b);//false }}
  • !=
package java003;/** * 2017/8/31. * 说明: */public class OperateDemo { public static void main(String[] args) {  int a = 3;  int b = 7;  System.out.print(a!=b);//true }}
  • >=
package java003;/** * 2017/8/31. * 说明: */public class OperateDemo { public static void main(String[] args) {  int a = 3;  int b = 7;  System.out.print(a>=b);//false }}
  • <=
package java003;/** * 2017/8/31. * 说明: */public class OperateDemo { public static void main(String[] args) {  int a = 3;  int b = 7;  System.out.print(a<=b);//true }}
  • instanceof
package java003;/** * 2017/8/31. * 说明: */public class OperateDemo { public static void main(String[] args) {  String str = "hello";  System.out.print(str instanceof String);//true }}

 

1.2 逻辑运算符

  • &(与)、|(或)、!(非)、&&(短路与)、||(短路或)、^(异或)
  • 逻辑运算符用于连接两个boolean类型的表达式。

 

  • 示例
package java003;/** * 2017/8/31. * 说明:逻辑运算符 */public class OperateDemo2 { public static void main(String[] args) {  int x = 3;  System.out.print(x >= 2 && x <= 5); }}

 

  • &的特点:
  • 如下图所示:表达式1&表达式2的结果。
表达式1表达式2结果
truefalsefalse
truetruetrue
falsefalsefalse
falsetruefalse

 

 

 

 

 

  • &运算的规律:一假全假,全真为真。

 

  • |的特点
  • 如下图所示:表达式1|表达式2的结果。
表达式1表达式2结果
truetruetrue
truefalsetrue
falsetruetrue
falsefalsefalse

 

 

 

 

 

  • |运算的规律:一真全真,全假才假。

 

  • 示例:
package java003;/** * 2017/8/31. * 说明:逻辑运算符 */public class OperateDemo2 { public static void main(String[] args) {  int x = 5;  System.out.print(x > 5 || x <6); }}

 

  • !的特点
  • 如下图所示:!表达式
表达式结果
truefalse
falsetrue

 

 

 

  • 非运算的规律:非假则真,非真则假。

 

  • 示例:
package java003;/** * 2017/8/31. * 说明:逻辑运算符 */public class OperateDemo2 { public static void main(String[] args) {  int x = 5;  System.out.print(x == 5);  System.out.print(!(x==5)); }}

 

  • ^
  • 如下图所示:表达式1^表达式2
表达式1表达式2结果
truetruefalse
falsetruetrue
truefalsetrue
truetruetrue

 

 

 

 

 

  • 我们知道,在计算机中一般0表示false,1表示true,当然,需要声明的是java中不是用0表示false,1表示true的,在java中,两者不等价。
  • 异或的规律:相同为0,不同为1。即异或左右两边的表达式,如果相同,就是false,不同,就是true。
package java003;/** * 2017/8/31. * 说明:逻辑运算符 */public class OperateDemo2 { public static void main(String[] args) {  System.out.print(true^true);//false  System.out.print(true^false);//true  System.out.print(false^true);//true  System.out.print(false^false);//false }}

 

1.3 位运算符

  • <<(左移)、>>(右移)、>>>(无符号右移)、&(与)、|(或)、^(异或)、~(反码)

 

  • 示例:6&3,int类型的数据在内存中是32位,此处为了方便,就没有画32位了。
package java003;/** * 2017/8/31. * 说明:位运算符 */public class OperateDemo3 { public static void main(String[] args) {  int a = 6 ;  int b = 3;  System.out.print( a & b);//2 }}

  • 示例:6 | 3
package java003;/** * 2017/8/31. * 说明:位运算符 */public class OperateDemo3 { public static void main(String[] args) {  int a = 6 ;  int b = 3;  System.out.print( a | b);//7 }}

 

  • 示例:6^3
package java003;/** * 2017/8/31. * 说明:位运算符 */public class OperateDemo3 { public static void main(String[] args) {  int a = 6 ;  int b = 3;  System.out.print( a ^ b);//5 }}

  • 示例:~3
package java003;/** * 2017/8/31. * 说明:位运算符 */public class OperateDemo3 { public static void main(String[] args) {  int b = 3;  System.out.print( ~ b);//-4 }}

 

  • 示例:3<<2 ,左移一位,乘以2。
package java003;/** * 2017/8/31. * 说明:位运算符 */public class OperateDemo3 { public static void main(String[] args) {  int b = 3;  System.out.print( 3 << 2);//12 }}

 

  • 示例:3 >>2 ,右移一位除以2,如果首个数字是0,则右移的时候,左边空位补0,;如果首个数字是1,则右移的时候,左边空位补1。因为在计算机中0表示正数,1表示负数。
package java003;/** * 2017/8/31. * 说明:位运算符 */public class OperateDemo3 { public static void main(String[] args) {  int b = 3;  System.out.print( b >> 2);//0 }}

  • 示例:3 >>>2,不管首位是0还是1,在左边空位都是补0。
package java003;/** * 2017/8/31. * 说明:位运算符 */public class OperateDemo3 { public static void main(String[] args) {  int b = 3;  System.out.print( b >>> 2);//0 }}

 

  • 面试题1:最有效率的方式算出2*8等于几?
package java003;/** * 2017/8/31. * 说明:位运算符 */public class OperateDemo3 { public static void main(String[] args) {  System.out.print(2 << 3); }}
  • 面试题2:对两个整数变量的值进行交换(不需要第三变量)
    • 思路①,有弊端,如果两个整数的数值太大,会超出int范围,会引起精度问题。  
package java003;/** * 2017/8/31. * 说明:位运算符 */public class OperateDemo3 { public static void main(String[] args) {  int a = 2;  int b = 3;  a = a - b ;  b = a + b;  a = b - a;  System.out.print("a="+a+",b="+b); }}
    • 思路②  
package java003;/** * 2017/8/31. * 说明:位运算符 */public class OperateDemo3 { public static void main(String[] args) {  int a = 2;  int b = 3;  a = a ^ b;  b = a ^ b ;  a = a ^ b;  System.out.print("a="+a+",b="+b); }}

 

1.4 三元运算符

  • 格式:
    • (条件表达式) ? 表达式1 :表达式2;
    • 如果条件表达式为true,运算后的结果是表达式1,
    • 如果条件表达式为false,运算后的结果是表达式2。  

 

  • 示例:求两个整数的最大值。
package java003;/** * 2017/9/1. * 说明:三元运算符 */public class OperateDemo4 { public static void main(String[] args) {  int a = 3;  int b = 10;  int c = (a >= b) ? a : b;  System.out.print("最大值是:"+c); }}

 

 

2 程序的流程控制

  • 程序的流程控制分为:
    • 顺序结构
    • 分支结构
    • 循环结构  

 

2.1 顺序结构

  • 示例:
package java003;import sun.applet.Main;/** * 2017/9/1. * 说明:顺序结构 */public class OperateDemo5 { public static void main(String[] args) {  System.out.print("哈哈");  System.out.print("呵呵");  System.out.print("嘻嘻");  System.out.print("笨笨"); }}

 

2.2 分支语句

  • 格式1
if(条件表达式){  执行语句; }

 

  • 格式2
if(条件表达式){ 执行语句1;}else{ 执行语句2;}

 

 

  • 格式3
if(条件表达式1){ 执行语句1;}else if(条件表达式2){ 执行语句2;}else{ 执行语句3;}

 

  • 示例:
package java003;/** * 2017/9/1. * 说明:if */public class IfDemo1 { public static void main(String[] args) {  int x = 3;  if(x > 1){   System.out.println("正确");  }  System.out.println("结束"); }}

 

  • 示例:
package java003;/** * 2017/9/1. * 说明:if */public class IfDemo2 { public static void main(String[] args) {  char gender = '男';  if(gender == '男'){   System.out.println("性别为男");  }else{   System.out.println("性别为女");  } }}

 

  • 示例三:
package java003;/** * 2017/9/1. * 说明:if */public class IfDemo3 { public static void main(String[] args) {  int x = 3;  if(x >1){   System.out.print("a");  }else if(x >2){   System.out.print("b");  }else if(x >3){   System.out.print("c");  }else{   System.out.print("d");  } }}

 

  • 练习一:用户输入指定的数字,然后输出对应的星期几?
package java003;/** * 2017/9/1. * 说明: */public class IfTest1 { public static void main(String[] args) {  int i = 5;  if(i == 1){   System.out.print("星期一");  }else if(i == 2){   System.out.print("星期二");  }else if(i == 3){   System.out.print("星期三");  }else if(i == 4){   System.out.print("星期四");  }else if(i == 5){   System.out.print("星期五");  }else if(i == 6){   System.out.print("星期六");  }else if(i == 7){   System.out.print("星期日");  }else{   System.out.print("输入错误");  } }}

 

  • 练习二:根据指定月份,输出对应的季节
package java003;/** * 2017/9/1. * 说明: */public class IfTest2 { public static void main(String[] args) {  int month = 3;  if((month == 3) || (month == 4 )|| (month == 5)){   System.out.print("春季");  }else if((month == 6) || (month == 7 )|| (month == 8)){   System.out.print("夏季");  }else if((month == 9) || (month == 10 )|| (month == 11)){   System.out.print("秋季");  }else if((month == 12) || (month == 1 )|| (month == 2)){   System.out.print("冬季");  }else{   System.out.print("输入错误");  } }}