Java中一些比较有用的东西(在别的地方看到的,觉得挺好的,就记录下来了)

转载:http://blog.sina.com.cn/s/blog_ec9857160102vyj0.html


一:同一个Scanner对象,如果先获取数值,再获取字符串会出现一个小问题,因为获取完数值后需要按回车键,而回车键本身是一个字符串。                                                 解决办法有两种。第一,​重新定义Scanner对象。第二,把所有的数据都用字符串获取,然后在进行相应的转换。

二:

              short   s=1;                                                                                                                    s=s+1;

                short s=1;                                                                                                                     s+=1;

​第一段代码是有错误的,因为这样会损失精度。s+1是int类型。要解决这个问题需要强制类型装换,即改为s=(short)(s+1);

第二段代码是没有问题的,因为扩展的赋值运算符其实隐含了一个强制类型装换,s+=1等价于s=(s的数据类型)(s+1);​

三:四种方式实现两个变量的交换

         方法一:采用临时变量。(这个就不用多说了)​

         方法二:用位异或运算符   (位异或运算符,将数转换为二进制,然后位相同的为0,不同的为为1)

                      a=a^b;                                                                                                                           b=a^b;  //a^b^b=a                                                                                                     a=a^b;  //a^b^a=b

          方法三​​:用变量相加的做法(a=20;b=10)

                       a=a+b; //a=20+10=30                                                                                                b=a-b;  //b=30-10=20                                                                                                  a=a-b;​//a=30-20=10

           方法四:(一句话搞定)b=(a+b)-(a=b);

四:最有效的方式计算出2乘以8:2<<3;

五:switch可以是byte型,不可以是long型,JDK7以后可以是String类型

六:for和while的区别                                                                                                                for适合一个明确次数的判断

           while适合不明确的

七:float f1=1.234f  和float f2=(float)1.234的区别在于f1其实是通过一个double类型转换过来的,而f2本身就是一个float类型,通常会用第二种方法​

八:代码    byte b1=1;                                                                                                                     byte b2=2;                                                                                                                     byte b=b1+b2;                                                                                                             b=3+4;

       这段代码其实是有问题的,因为变量相加,会首先看类型,然后把结果结果赋值时也会看类型。上面b1+b2的结果是int类型。所以会出错

      而b=3+4是常量相加,首先会做加法,然后看结果是否在赋值的数据类型范围内,如果不在,就会报错。

九:byte b=130;

       因为byte的取值范围在-128到127之间,而130不在这个范围内,所以会报错。我们可以使用强制类型装换。byte b=(byte)130的结果为 130-256=-126,相当于用强转的数据-256​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值