您的位置:首页 > 编程语言 > Java开发

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

2016-09-11 22:48 337 查看
转载: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​​​​​
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐