Java基础__(类型转换,运算符,选择结构)

来源:互联网 发布:西安金象网络 编辑:程序博客网 时间:2024/05/22 00:37

  • 一类型转换
    • 自动类型转换 向上转换-类型的提升
    • 强制类型转换向下转换
  • 二位运算符
  • 三三元运算符
  • 四选择结构

一、类型转换:

自动类型转换: (向上转换-类型的提升)

  • 就把范围小的赋值给范围大的。虚拟机会自动完成类型转换,而不会出现任何的精度丢失。
    • byte —>short—>int—>long—>float—>double–从左到右(从小到大)可以自动转换
      char—>int
    • byte <—>char不能进行自动的类型转换 //因为char的取值范围都大于0
    • short<—>char不能进行自动的类型转换

强制类型转换:向下转换

  • 把范围大的赋值给范围小的。编译器会报错误。需要程序员手动进行强制类型转换。
    • (要去的类型)数据
  • boolean类型无法和任何的其他类型进行类型转换。
int i3 = 128;//0000 0000 1000 000System.out.println((byte)i3);//1000 0000 输出-128(求原码:存的补码-1再取反)
  • 当参与运算的都是byte、short或char的时候,会自动先把这三种类型自动提升成int,然后再运算。
  • 复合运算符隐藏强制类型转换。
byte  b1 = 20;byte  b2 = 30;byte b3 = b1 + b2; //报错//byte b3 = byte(b1 + b2)   需要强制转换int i1 = 6;double d1 = 4.6;System.out.println(i1 + d1);//结果为10.6,会自动提升byte  b1 = 10;b1 = b1 + 1;//编译报错b1 += 1;  //b1 = (byte)(b1+1)  复合运算符会自动转换

二、位运算符:

  • & 按位与。有一个是0这一位就是0
 3 011 4 100------------   000
  • 判断奇偶最快的方式
01000100010x  000000000001--------------------           xx=0,则为偶数System.out.println(9 & 1);    //和1按位与
  • | 按位或。有一个是1这一位就是1
  • ^按位异或。相同是0,不同是1
    • a ^ a = 0; a ^ 0 = a;
    • 一个数和本身按位异或等于0;一个数和0按位异或等于这个数本身
//有两个数a和b,交换a和b的值int a = 10;int b = 20;/*int c = a ;a = b;b = c;a = a + b;b = a - b;a = a - b;*/a = a ^ b;b = a ^ b;   //b = a ^ b ^ b = a(原来的a)a = a ^ b;   //a = a ^ b (原来的a和b)^ a(现在的b,就是原来的a) = b
  • ~ 按位取反 0变1,1变0,注意符号位也会取反 。——//负数原码取反,符号位不变。
    ##移位运算符:
  • << 左移 ,每一位向左移动指定的位数,低位用0补齐。每移动一位,相当于*2,结果相当于原来的数乘以2的移位次方。
  • a << b,java中先对b进行32取余%得到c,然后a << c。 a<<33相当于a<<1
(byte)-1 << 33  //先转换为int型再左移,只能左移int ,double型
//计算2 的15次方  最快的方法1 << 15
  • ‘>>’ 带符号右移 ,高位用符号位补:正数用0补,负数用1补。右移一位相当于 / 2。
  • ‘>>>’ 无符号右移 ,高位都是用0补齐。负数无符号右移变成正数。

三、三元运算符

  • 值 = 表达式1 ? 表达式2: 表达式3
    • 表达式1:必须是boolean表达式 true false
      如果表达式1是true,那么最终的值是表达式2的值,否则就是表达式3的值。
    • 表达式2:

四、选择结构

  • 4.1 if结构

    • 4.1.1 if(布尔表达式){
      //代码
      }
    • 4.1.2 if(布尔表达式){
      //true执行
      }else{
      // false执行
      }
    • 4.1.3 if(布尔表达式){

      }else if(布尔表达式){

      }….else if(){}

    • 4.1.4 if(布尔表达式){

      }else if(布尔表达式){

      }….else if(){
      }else{
      }

    • 注意布尔旗标法的用法  判断质数合数的例子
  • 4.2 switch结构
    switch(表达式){
    case 常量1:
    //代码
    case 常量2:
    //代码
    }
    • 1.一旦case匹配就开始执行代码,直到switch内的代码执行完毕或者碰到break语句
    • 2.所以再实际开发中,一般每个case后面都添加一个break;
    • 3.switch支持哪些类型:byte、short、int、char、enum(枚举)、String(jdk1.7新增)。
      注意long、float、double、boolean是不支持的。
int a = 3;int b = 3;  //如果是final int b = 3 则case b:就okswitch(a){    case 5:    case b:  }
0 0
原创粉丝点击