day02-局部变量-final修饰符-位移运算(<<、>>、>>>) - switch case 选择结构

1.局部变量只能初始化之后才可以使用;全局变量不初始化的情况,会默认进行初始化,int默认是0;

 

 

2. final修饰基本数据类型的变量时候,该变量的值不能发生改变(即不能重新赋值给该变量);

   final修饰引用数据类型的变量时候,它存储的仅仅是一个引用的地址,final会保证该变量的地址不会发生改变,但是该变量的其他属性完全可以改变。

  比如 下面的代码

final Student s = new Student();//final 修饰引用数据类型的变量p
s.setName = "张三";//p对象的其他属性完全可以发生改变 s=null;//编译报错,p对象不能重新赋值。

 

final 修饰其他时候  比如:

·fianl 修饰的时候,表示该类不能被继承,它不可有有子类

·final 修饰方法时候,表示子类继承父类时候,被fina修饰的该方法不可以被重写,其他没有final修饰的方法仍可以被重写。

·final 修饰全局变量时候,该全局变量一定要初始化赋值,因为final修饰成员变量后,系统不会对其进行默认零值初始化,所以编译失败。

·final 修饰局部变量时候,该局部变量可以先不初始化,使用前再对其进行赋值。

 

3.位移运算:<< 、>>、 >>>

<< 、>> 考虑符号位移  :符号位不变,其他位数变化

正数(符号位0):缺少的高位补0;

负数(符号位1):缺少的高位补1;负数移位时先用补码(原码取反 +1)做位移运算,然后再将补码转为原码(原码=补码-1 再取反)

>>> 不考虑符号位移 :符号位一起移动 缺少的位数直接补0  

问题:为什么说位移运算要比乘除效率高呢?

因为从CPU运算的角度来讲,乘法运算实际上CPU是执行多次的累加操作,除法运算是执行多次的减法操作;

而位移运算直接二进制移位就可以了,不需要那么多的操作,因此效率高。(不足望指正)

 

4.switch case 选择结构:

switch (要判断的东西){

  case "匹配的结果1" :

    要执行的语句;

    (break);

  case "匹配的结果2" :

    要执行的语句;

  default : 

    默认没有匹配结果后执行的语句;

}

注意:如果case里面不写break,那么程序会从匹配的case开始执行,一直执行到遇到break语句或者跳出语句,若每个case都写了break,那么匹配一个case后程序就跳出,不会继续匹配。如果所有的case都不匹配则进入default部分。

这样的情况我们也可以很好的利用,比如工资分档,6000-8000(包含6000不包含8000)分档,我梯度为1000时候,那么薪资/1000 就有6跟7是在同一个档次的,那么我们就可以使用case 6跟case 7 执行一个档次的代码块。如下例子

/**6000-8000为一个档次 梯度设置为1000**/
switch(salary/1000){
    case 6case 7: System.out.println("薪资还ok"); break; case 8: …… }

 

转载于:https://www.cnblogs.com/zhiai007/p/9308658.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值