javasE基础语法与算数运算符

本文详细介绍了Java中基本数据类型的转换规则,包括默认转换和强制转换,以及在混合运算中的处理方式。同时,讲解了条件语句if和switch的用法,以及for、while等循环结构。此外,还涵盖了算术、比较、逻辑、赋值等运算符的使用。
摘要由CSDN通过智能技术生成

一.java基本数据类型的转换
默认转换:容量小的类型默认转换成容量大的类型;byte,short,char-->int-->long-->float-->double;

byte,short,char他们三者之间不能相互转换,计算时会转换成int类型;

强制转换: 容量大的数据类型转换为容量小的数据类型时,要加上强制转换符,但可能造成精度降低或溢出。

boolean类型不能与其他七种类型进行转换;

再进行混合运算时,都会转换成容量最大的数据类型;

 /*
       基本数据类型之间转换
         byte 1 short 2 int 4  long 8
         float 4 double 8
         char 2 虽然是字符,但是实际是unicode编码中的一个十进制整数 可以把他当做整数来对待
         boolean  不能和其他其中类型进行转换   true false
         转换规则
            容量小的转容量大的
              byte 1字节 127  -- short 2字节
            容量大得转容量小的
             int 4字节 129 --- byte 1字节
             float是4字节,但是由于小数的二进制存储与整数二进制存储结构不同,
             4字节的float大于4字节的int,大于8字节的long
             byte->short->char->int->long->float->double
     */
 
    public static void main(String[] args) {
        //容量小的转容量大的  可以直接进行转换
          byte a = 127;
           int b = a;
           long c = b;
           float d = c;
        //容量大得转容量小的
        //大转小: 出现溢出
          int m = 658;
          byte n = (byte)m; //int --> byte 编译器不能通过
          System.out.println(n);
          float x = 10.5f;
          //大转小: 精度损失
          long y  =  (long)x;
          System.out.println(y);
 
          char z  = 'a'; //97  char也是可以参与转换的
          int zc = z;
 
          byte aa = 10;
          byte bb = 10;
          byte cc = (byte)(aa+bb);//byte short,char 在混合运算时,都是上升为int类型
 
          double dd   = x  + m + a + 5.5; //混合运算时,小类型默认都会转为最大的类型
 
    }


2.条件语句
if语句
if(条件表达式){  代码块   }
       if(条件表达式){   代码块 }else{  代码块 }
       if(条件表达式){  }else if(条件表达式)...else if(条件表达式){  }else{   }

 

public static void main(String[] args) {
 
           int a = 10;
           //语法支持 一行代码时,可以不用写{ }
           if(a<5)
               System.out.println("a>5");
               System.out.println("a>5");
//此行代码是不在if控制范围内的,需要注意


 
    }
switch语句
switch 与 if 语句比较类似, switch能够实现的功能,if语句都能实现
       switch一般用于选择一些固定的选项,如一周有7天,一年有四季...

          switch(表达式) 表达式的值只能是byte short  char int  枚举 String类型
          case后面只能是字面量,不能重复;
          在case代码块中使用break语句终止流程,如果没有添加break,那么程序将会继续向下执行后面的case 

 

  public static void main(String[] args) {
        /*
                  int  a = 2;
          switch(表达式 a){
             case  字面量值 1 :
                        case对应的代码块
                        [break];可选的
             case 2 :
                     case对应的代码块
                .....
              default:
                   默认代码块
          }
        */
           String a  = "5";
         // int b = 1;
           switch (a){
               case "1" :
                   System.out.println("case1");
                     break;
               case "2":
                   System.out.println("case2");
                   break;
               case "3":
                   System.out.println("case3");
                   break;
               default:
                   System.out.println("输入的内容不合法");
           }
    }

3.循环
for循环
      为了循环已知次数的情况,使用for循环
        for(int i=0;i<10;i++){
            循环体
        }
        for循环用于已知次数

        for(变量的定义,只执行一次;进入循环的条件多次执行;变量的更新,多次执行){
               循环体(多次执行)
        }

   

public static void main(String[] args) {
 
         for(int i=0;i<10;i++){
             System.out.println("i="+i);
         }
 
         int i=0;
         for(;i<10;i++){
             System.out.println(i);
         }
 
        int i=0;
        for(;i<10;){
            System.out.println(i);
            i++;
        }
 
        for(;;){
            System.out.println("aaaa");
        }//死循环
    }

while循环和do while循环
    public static void main(String[] args) {
          while(true){
 
          }//死循环
 
          int a = 1;
          while(a<10){
              System.out.println(a);
              a++;
          }
        System.out.println("a="+a);
 
        char c = ' ';
        do{
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入一个小写字母");
            c = scanner.next().charAt(0);// charAt(0) 获取字符串的第0个位置的字符
        }while('a'<=c&&c<='z');
    }

     public static void main(String[] args) {
     /*   
          *****
          *****
          *****
          *****
          *****
*/
         for (int i=0;i<5;i++){//外层循环,控制行数  外层循环执行一次
             for(int j=0;j<5;j++){//内层循环    内层循环需要执行5次
                 System.out.print("*"); //println()会自动换行  print()不会自动换行
             }
             System.out.println();//换行
         }
 
         /*
             *
             **
             ***
             ****
          */
 
         for(int i=1;i<=9;i++){
              for (int j=1;j<=i;j++){
                  System.out.print(j+"*"+i+"="+(i*j)+" ");
              }
             System.out.println();
         }
 
         //outer 是为外层循环定义一个标签,标签名字可以自定义
        outer:for (int i=0;i<5;i++){
               for(int j=0;j<5;j++){
                 if(j==3){
                     break outer;//在内层循环中,使用break语句,只能终止当前所在的循环,默认不能终止上一层循环
                                 // break 某层循环的标签名
                 }
                 System.out.println("j="+j);
             }
             System.out.println("i="+i);
         }
     }

二、运算符
算术运算符:+,-,*,/,%,++,--;

比较运算符:>,<,==,>=,<=,!=;

逻辑运算符:!,&,|,&&,||;

赋值运算符:=,+=,-=,*=,/=;

条件运算符:(条件表达式)? 表达式1:表达式2;

位运算符

1.算术运算符
+ : 1.加法运算  数值+数值(char)
              2.字符串连接 数值+字符串  字符串+字符串 == 字符串
          - 数值-数值(char)
          * 数值*数值(char)
          / 数值/数值(char)
          %取余数  数值/数值(char)
          ++  自增1 注意在混合运算时, ++在前先自增  ++在后,后自增
          -- 自减1

  

  public static void main(String[] args) {
             int a = 10;
             int b = 5;
             char c = 'a';
             String d = "a";
         System.out.println(a+b);//15
         System.out.println(a+c);//107
         System.out.println(a+d);//10a 数值+(连接)字符串=字符串
        /* int m = 5;
             m++; //m = m+1
             ++m; //m = m+1
         System.out.println(m);//7
*/
         int m = 5;
         System.out.println(m++);//5
         System.out.println(++m);//6
 
         int n = 5 + m++; //5+m值赋给了n  然后再自增1
         System.out.println(n);//10
         System.out.println(m);//6
 
         int n = 5 + ++m; // 5+(++m) m先自增了  然后5+m(6) =  11
         System.out.println(n);//11
         System.out.println(m);//6
     }

2.比较运算符
        关系(比较)运算符: >,<,>= ,<=,==,!=
         > < >= <= == != 都是用于数值(char)之间进行大小比较
         == != 还可以使用于引用类型之间的比较

 

public static void main(String[] args) {
         int a = 10;
         int b = 5;
         char c = 'a';
       System.out.println(a>b);//true
        System.out.println(a<b);//false
        System.out.println(a>c);//false
        System.out.println(a<c);//true
        System.out.println(a==c);//false
        System.out.println(a!=c);//true
 
        String s1  = "abc";
        String s2  = "abc";
        System.out.println(s1==s2);//true
        System.out.println(s1!=s2);//true
 
    }

3.逻辑运算符
        逻辑运算符: 符号的左右是逻辑值
        &     逻辑与, &&   逻辑与(短路与), |       逻辑或,  ||      逻辑或(短路或) ,                       !     逻辑非, ^     逻辑异或

public static void main(String[] args) {
 
          /*
              & -- 逻辑与  所有的表达式都返回true,结果就是true, 其中有一个为false,结果就是false
                           逻辑与 第一个表达式结果为false时,后面的表达式仍会执行
             &&-- 逻辑与(短路与)所有的表达式都返回true,结果就是true,其中有一个为false,结果就是false
                           && 第一个表达式为false 后面的表达式就不会执行*/
           
          int a = 10;
           int b = 5;
           int c = 8;
           System.out.println(a>b && b<c);// true & true = true
           System.out.println(a>b && b>c);// true & false =false
           System.out.println(a<b && ++b>c);// false & false =false
            System.out.println(b);//5,++b不会执行
 
           System.out.println(a>b & b<c);// true && true = true
           System.out.println(a>b & b>c);// true && false =false
           System.out.println(a<b & (++b>c));// false && false =false
            System.out.println(b);//6
 
           System.out.println( 逻辑值 <=10);//java中不允许此写法
 
         // int a = 5;
         //System.out.println( 0 <= a  && a<=10);
 
         /*
             |  逻辑或 所有的表达式中,只要有一个是true,结果就是true,全部为false,结果为false
                 如果第一个表达式为true,后面的表达式还会继续执行
             ||  逻辑或(短路或) 所有的表达式中,只要有一个是true,结果就是true,全部为false,结果为false
                 如果第一个表达式为true,后面的表达式不会继续执行
          */
            int a = 10;
            int b = 5;
            int c = 8;
            System.out.println(a>b || b<c);// true | true = true
            System.out.println(a<b || b>c);// false | false =false
            System.out.println(a>b || ++b>c);// true | false true
             System.out.println(b);//5,++b不执行
 
            System.out.println(a>b | b<c);// true || true = true
            System.out.println(a<b | b>c);// false || false =false
            System.out.println(a>b | ++b>c);// true || false true
            System.out.println(b);//6
 
            int a = 10;
            int b = 5;
            int c = 8;
            //逻辑非
            // System.out.println(!(a>b));//!true --> false
 
            //逻辑异或 相同为false, 不同为true
            System.out.println(a>b ^ b<c); //true ^ true = false
            System.out.println(a>b ^ b>c); //true ^ false = true
            System.out.println(a<b ^ b>c); //false ^ false = false
 
 
    }

4.赋值运算符
赋值运算符:=,+=,-=,*=,/=;

 public static void main(String[] args) {
        int a = 10; //= 把右边10赋给左边的变量 ,赋值时注意值的类型与声明的数据类型要匹配
        System.out.println(a+=5); //a = a+5
 
        byte s = 3;
        s += 127; //s = (byte)(s+2)    +=可以隐式的进行数据类型转换
         s = s+3;//运算时会转换成int类型   int 类型不匹配
        System.out.println(s);
    }

 
5.条件运算符
    条件运算符(三元运算符/三目运算符)

            (条件表达式)?表达式1 :表达式2

            先执行条件表达式,
            当条件表达式值为true时, 运行表达式1
            当条件表达式值为false时, 运行表达式2

            最终表达式1和表达式2必须返回一个结果

 public static void main(String[] args) {
           int score = 80;
           String result = (score >= 60) ? "及格" : "不及格";
           System.out.println(result);
}

6.位运算
位运算: 指的是对数值的二进制位进行运算
        <<   左移
        >>   右移
        >>>  无符号右移

        &
        |
        ^
        ~

     

public static void main(String[] args) {
           int a = 4;
         System.out.println(a << 1);// 0000 0100 左移1位 0000 1000  相当于乘2
         System.out.println(a >> 1);// 0000 0100 右移一位 0000 0010 相当于除2
 
         int  b = -6;
         System.out.println(b >> 1);//>> 1000 00110   1000 00011 带符号的移位 负数补1 正数补0
 
         System.out.println(b >>> 1);//>>> 1000 0110   0100 0011  无符号的移位 无论正负都补0
     }
     public static void main(String[] args) {
             int a = 3;
              int b = 4;
              /*
                 0000 0011
                 0000 0100
                 0000 0000   &  1&1 =1  1&0 0&0 = 0
               */
             System.out.println(a & b);//0
 
             /*
                 0000 0011
                 0000 0100
                 0000 0111  1|0 = 1 0|0=0
              */
              System.out.println(a | b);//7
 
              /*
                 0000 0011
                 0000 0100  ^   0^0 1^1=0,1^0=1
                 0000 0111
              */
         System.out.println(a ^ b);//7
            /*
              ^可以用于数据交换
            */
             int a = 3;
             int b = 4;
             a = a^b;//a=7;
             b = a^b;//b=7^4=3
             a = a^b;//a=7^3=4
             System.out.println(a);//4
             System.out.println(b);//3
 
             //~  0000 0011
             //   1111 1100
         System.out.println(~a);
 
     }

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值