JAVA:操作符/流程控制

本文详细介绍了Java中的算数、关系、逻辑操作符,包括取模、自增自减、比较符号如>、>=、==、!=,以及逻辑运算符如&&、||和!。还涉及赋值操作、表达式条件判断和控制流程,如if-else、switch和循环结构。适合初学者理解Java基础语法。
摘要由CSDN通过智能技术生成

操作符

算数操作符

基本的有: 
+ - * / %
%:取模(得到的是小于除数的值)
自增 自减
++ --
i++; 先取值,再运算
++i; 先运算,再取值
public class Oneday{

   public static void main(String[] args){
    int i=5;
    int j=4;
    int num1=3;
    int num2=4;
    int a=i+j;
    int b=i-j;
    int c=i*j;
    int d=i/j;
    int e=i%j;

    //System.out.printf("%d,%d,%d,%d,%d",a,b,c,d,e);
       
       System.out.println(num1++);  //输出3
       System.out.println(num1);    //输出4

       System.out.println(++num2);  //输出5
       System.out.println(num2);    //输出5
       
    }
}

关系操作符

关系操作符:比较两个变量之间的关系
> 大于
>= 大于或等于
< 小于
<= 小于或等于
== 是否相等
!= 是否不等
package first;

public class Oneday{

   public static void main(String[] args){
    int i=5;
    int j=4;
    int t=5;

       System.out.println(i>j);  
       System.out.println(i>=j); 
       
       System.out.println(i==j);  
       System.out.println(i!=j);    

    }
}

逻辑运算符

&
&&	长路与 和 短路与	
|
||	长路或 和 短路或	
!	取反	
^	异或^

无论长路与还是短路与
两边的运算单元都是布尔值
都为真时,才为真;任意为假,就为假
区别
长路与 两侧,都会被运算
短路与 只要第一个是false,第二个就不进行运算了

package first;

public class Oneday{

   public static void main(String[] args){
   //长路与  无论第一个表达式的值是true或者false,第二个的值,都会被运算
    int i=2;
    System.out.println(i==1 & i++==2);//无论如何i++都会被执行,所以i的值变成了3
    
	//短路与 只要第一个表达式的值是false的,第二个表达式的值,就不需要进行运算了
    int j=2;
    System.out.println(j==1 && j++==2);//因为j==1返回false,所以右边的j++就没有执行了,所以j的值,还是2
    }
}

无论长路或还是短路或
两边的运算单元都是布尔值
都为假时,才为假
任意为真,就为真
区别
长路或 两侧都会被运算
短路或 只要第一个是true的,第二个就不进行运算了

public class HelloWorld {
    public static void main(String[] args) {
        //长路或  无论第一个表达式的值是true或者false,第二个的值,都会被运算
        int i = 2;
        System.out.println( i== 1 | i++ ==2  ); //无论如何i++都会被执行,所以i的值变成了3
        System.out.println(i);
         
        //短路或 只要第一个表达式的值是true的,第二个表达式的值,就不需要进行运算了
        int j = 2;
        System.out.println( j== 2 || j++ ==2  );  //因为j==2返回true,所以右边的j++就没有执行了,所以j的值,还是2
        System.out.println(j);     
         
    }
}

取反!
真变为假
假变为真

package first;

public class Oneday{

   public static void main(String[] args){
    Boolean a=true;
    System.out.println(a);
    System.out.println(!a);
    }
}

异或^
不同,返回真
相同,返回假

package first;

public class Oneday{

   public static void main(String[] args){
    Boolean a=true;
    Boolean b=false;
    System.out.println(a^b);
    System.out.println(a^!b);
    }
}

赋值操作

=	赋值操作	
+=          对本身进行运算,并赋值
-=
*=
/=
%=
&=
|=
^=
<<=
>>=
>>>=	

赋值操作

package first;
public class Oneday{

   public static void main(String[] args){
   int i=6+6;  //赋值操作的操作顺序是从右到左,首先进行5+5的运算,得到结果10,然后把10这个值,赋给i
   int j=0;
   j+=1          //i+=2;等同于i=i+2;  先加在赋值
    System.out.printf("%d,%d",i,j);
    }
}

表达式?值1:值2
如果表达式为真 返回值1
如果表达式为假 返回值2

package first;

public class Oneday{    
   public static void main(String[] args){
   int i=6;
   int j=1;
   int k=i<j?99:88;
   
   System.out.printf("%d",k);
    }
}

需要用到从控制台输入数据,所以需要用到Scanner类

package first;
import java.util.Scanner;
public class Oneday {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int i = s.nextInt();
        System.out.println("读取的整数是"+ i);

        float j=s.nextFloat();
        System.out.printf("读取的浮点数是"+ j);
        
        String rn = s.nextLine();
        String a = s.nextLine();
        System.out.println("读取的字符串是:"+a);
    }
}

注意:
需要注意的是,如果在通过nextInt()读取了整数后,再接着读取字符串,读出来的是回车换行:"\r\n",因为nextInt仅仅读取数字信息,而不会读取回车换行"\r\n".

所以,如果在业务上需要读取了整数后,接着读取字符串,那么就应该连续执行两次nextLine(),第一次是取走回车换行,第二次才是读取真正的字符串

流程控制

顺序执行:所有程序都是从上到下依次执行。

分支执行:有选择执行程序语句。

常见结构:

1if(boolean 类型){
        
        }

2if(){
        }else{ 
        }
        
3if(){
         }else if(){
         {
         }else if()
         {
         }
         
4if(){
          } else if(){
          
          }else if(){
          }
           else{
           }

他们之间可以循环嵌套使用。

package first;
import java.util.Scanner;
public class Oneday {
    public static void main(String[] args) {
            int i=2;
            if(i==1){
                System.out.printf("%d",i);
            }else if(i==2){
                System.out.printf("%d",i);
            }else{
                System.out.printf("%的",i);
        }
    }
}

switch

package first;
import java.util.Scanner;
public class Oneday {
    public static void main(String[] args) {
        int day = 5;
        switch (day) {
            case 1:
                System.out.println("星期一");
            case 2:
                System.out.println("星期二");
            case 3:
                System.out.println("星期三");
                break;
            case 4:
                System.out.println("星期四");
                break;
            case 5:
                System.out.println("星期五");
                break;
            case 6:
                System.out.println("星期六");
                break;
            case 7:
                System.out.println("星期天");
                break;
            default:
                System.out.println("这个是什么鬼?");

        }
    }
}

循环执行:反复执行{ }内的程序;

常见执行方法:

for123{
 
 }

for ()内之要有 两个英文分号即可,其他都可以省略。

1号位置是循环体的起始位点,可以写在for()的上面,也可以写在for()的{ }里面之中。
2号位置是循环体的终点,判断循环体结束的条件。
3号位置是循环体起点向终点变化的形式。

while(){

    }

如果()内的条件为真他则执行,否则会跳出循环体,通常在不知道循环次数的选择。

package first;
import java.util.Scanner;
public class Oneday {
    public static void main(String[] args) {
        int i=0;
        while(i<5){
            System.out.printf("%d\n",i);
            i++;

        }
    }

}
   
do{

     }while();

循环体无条件的执行一次。
使用循环一般常见的选择有两种,一种为循环另一种为函数的递归使用。

package first;
import java.util.Scanner;
public class Oneday {
    public static void main(String[] args) {
        int i=0;
        do{
            System.out.printf("%d\n",i);
            i++;
        }while(i<5);
    }

}

循环嵌套

 for(i=1;i<=10;i++{
    for(i=1;i<=10;i++{
    
             }
} 

第一个循环体执行i=1是第二个循环体就执行10次。
第一个循环体执行i=2是第二个循环体就执行10次。
。。。。。。

循环体常见结束语句

break;
continue;

break;是结束整个循环语句。
continue;是结束循环体执行中一次的语句。
他们通常和 if(){ }for(; ;)while()连用。

结束外部循环

方式一、标签法
for1: for(i=1;i<=10;i++{
             for(i=1;i<=10;i++{
           
 }
break for1;
} 
终止第一个循环的全部。
package first;
import java.util.Scanner;
public class Oneday {
    public static void main(String[] args) {
        //Scanner s=new Scanner(System.in);
        //int i=s.nextInt();
        int j = 1;
        outloop:
        for (int i = 1; i <= 10; i++) {
            for (j=1;j<=10;j++){
                System.out.printf("%d",j);
                if(0==j%2){
                    break outloop;
                }
            }
        }
    }
}
  

使用boolean结束外部循环

package first;
import java.util.Scanner;
public class Oneday {
    public static void main(String[] args) {
        //Scanner s=new Scanner(System.in);
        //int i=s.nextInt();

        boolean a=false;
        for (int i = 1; i <= 10; i++) {
            for (int j=0;j<=10;j++){
                System.out.printf("%d",j);
                if(0==j%2){
                     a=true;
                }
            }
            if(a){
                break;
            }
        }
    }
}

遍历数组、集合方面,foreach 为开发者提供了极大的方便。foreach 循环语句是 for 语句的特殊简化版本,主要用于执行遍历功能的循环。

 for(int age : ages) {
//....
}  
其中 int为数据类型,age为起的变量名,ages为数组名。

等价于

for(int i = 0; i < ages.lenth; i++) {
int age = ages[i];
    //....
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值