Java(6)控制语句

Java控制语句

Java 条件语句

if类型

  • 语法格式如下:
if( x < 20 ){
	System.out.print("这是 if 语句");
}

if-else类型

if最多有一个else语句

  • 语法格式如下:
if( x < 20 ){
	System.out.print("这是 if 语句");
	}else{
	System.out.print("这是 else 语句");
}

if-else if-else类型

  • 语法格式如下:
if( x == 10 ){
     System.out.print("Value of X is 10");
   }else if( x == 20 ){
     System.out.print("Value of X is 20");
   }else if( x == 30 ){
     System.out.print("Value of X is 30");
   }else{
     System.out.print("这是 else 语句");
}

嵌套的if-else语句

if( x == 30 ){
	if( y == 10 ){
		System.out.print("X = 30 and Y = 10");
	}
}

条件判断注意事项:

  • 用浮点数来进行==的判断不靠谱,因为计算机是二进制的。浮点数没有办法是用二进制进行精确表示,如:
double x=1-9/10.0;
    if (x==0.1){
      System.out.println("x==0.01");
 } 
// 没有任何输出,说明x不完全等于0.1

解决办法:

可以利用差值小于某个临界值来判断: Math.abs(x-0.1)<0.000001),如

double x=1-9/10.0;
    if (Math.abs(x-0.1)<0.0000001){
        System.out.println("x==0.01");
}
// 输出了x=0.01,说明x接近等于0.1

  • 对于引用类型,==判断是否指向同一对象,equals()判断内容是否相等 ,如:

1、equals()方法是java.lang.Object类的方法,实际上,Object类中的equals方法是用来比较“地址”的,也就是用来判断是否指向同一对象,但是string类重新定义了equals()方法

2、如果是基本类型比较,那么只能用==来比较,不能用equals()

**String类重新定义了equals()方法,  对于String类创建的字符串变量 :**
	String s1=new String("abc");
    String s2=new String("abc");
    if(s1.equals(s2)) {
      System.out.println("yes");
    }else {
      System.out.println("no");
    }//结果为yes

	String s1=new String("abc");
    String s2=new String("abc");
    if (s1==s2) {
      System.out.println("yes");
    }else {
      System.out.println("no");
    }//结果为no
**由字符串常量创建生成的变量,地址一样,即变量指向同一个对象**
    String s3 = "abc", s4 = "abc";
    if (s3.equals(s4)) {
      System.out.println("yes1");
    }
    if (s3 == s4) {
      System.out.println("yes2");
    }
    //yes1
    //yes2
**对于StringBuffer/StringBuilder类,equals()比较的是地址,即和==一样,如:**
StringBuilder s1=new StringBuilder("abc");
StringBuilder s2=new StringBuilder("abc");
if (s1.equals(s2)){
	System.out.println("yes");
}
//没有输出结果,证明s1和s2地址不一样
**如果变量为null,调用equals()会报错,如**
StringBuilder s1=new StringBuilder("abc");
StringBuilder s2=null;
if (s2.equals(s1)){
	System.out.println("yes");
}
//解决办法:把非null的对象放前面,即将s2.equals(s1)改成s1.equals(s2)

总结:对非String类来说,"=="和"equals"方法的作用是相同的都是用来比较其对象在堆内存的首地址,即用来比较两个引用变量是否指向同一个对象。


switch case语句

  • 语法格式:
switch(expression){
    case value :
       //语句
       break; //可选
    case value :
       //语句
       break; //可选
    //你可以有任意数量的case语句
    default : //可选
    //语句
}
  • swich case例子:
public class Test {
	public static void main(String args[]){
		//char grade = args[0].charAt(0);
		char grade = 'C';
		switch(grade){
     		case 'A' :
      			System.out.println("优秀");
      			break;
     		case 'B' :
     		case 'C' :
      			System.out.println("良好");
      			break;
     		case 'D' :
      			System.out.println("及格");
      			break;
     		case 'F' :
      			System.out.println("你需要再努力努力");
      			break;
     		default :
      			System.out.println("未知等级");
  		}
		System.out.println("你的等级是 " + grade);
	}
}
  1. case语句具有穿透性,如果没有 break 语句出现,程序会不断继续执行下一条 case 语句,直到出现 break 语句。所以,任何时候都不要忘记写break

  2. switch 语句中的变量类型可以是: byte、short、int 、char或者String字符串类型

  3. case 语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量

  4. 为避免漏写break或者default,可以在eclipse中修改设置:

    Preference-->java-->compiler-->errors/Warnings-->”switch case fall-through” warning/ “switch is missing default’ case

  5. 尽量少用switch语句


Java 循环语句

while循环

while( 布尔表达式 ) {
    //循环内容 
}

do while循环

do {
    //代码语句
}while(布尔表达式);
//至少执行一次

for循环

for(初始化; 布尔表达式; 更新) {
    //代码语句 
}
  • 如:for(int x = 10; x < 20; x = x+1){}

增强for循环(for each循环)

for(声明语句 : 数组名) {
    //代码句子 
}
//声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配
  • 案例:
String [] names ={"James", "Larry", "Tom", "Lacy"}; 
for( String name : names ) {
	System.out.print( name ); 
	System.out.print(","); 
}
// James,Larry,Tom,Lacy, 

循环注意事项:

  1. 死循环会导致CPU100%占用
  2. 不要在循环体内修改计数器
    1. 计数器变量尽量定义在for循环中——for(int i=0;…;..){}

break和continue

break 主要用在循环语句或者 switch 语句中,用来跳出整个语句块。break 跳出最里层的循环,并且继续执行该循环下面的语句。

continue 适用于任何循环控制结构中。作用是让程序立刻跳转到下一次循环的迭代。在 for 循环中,continue 语句使程序立即跳转到更新语句。在 while 或者 do…while 循环中,程序立即跳转到布尔表达式的判断语句.

两者通常配合if使用

posted @ 2020-08-28 00:21  Whatever_It_Takes  阅读(140)  评论(0编辑  收藏  举报