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

一、类型转换:

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

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

强制类型转换:向下转换

  • 把范围大的赋值给范围小的。编译器会报错误。需要程序员手动进行强制类型转换。
    • (要去的类型)数据
  • boolean类型无法和任何的其他类型进行类型转换。
int i3 = 128;//0000 0000 1000 000
System.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
--------------------
           x
x=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:就ok
switch(a){
    case 5:
    case b:  
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值