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
一:同一个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
相关文章推荐
- 偶然看到一个博客里分享的一些话觉得很经典记录下来三省吾身
- 给学习Java初学者一些个人感觉有用的东西
- 从国外某著名DNN 知情人士 Nina's Blog上看到一些有用的文章,在此记录一下,也为国内DNN,问题搜索,出一点力
- 让人郁闷了好久的问题,终于解决了,之前网上也看到一些解决方法,但大多没有解决问题,所以记录下来,以供参考之用(ADO Could Not Find The Specified Provider)
- 突然心血来潮,想写写我在java面试中遇到的事。作为一个应届生,我觉得我的情况都与大部分应届生是差不多的,希望你们能在这上面得到一些有用的
- 平时看到C/C++ 结构体问题的一些知识,比较有用,分享出来
- 从国外某著名DNN 知情人士 Nina's Blog上看到一些有用的文章,在此记录一下,也为国内DNN,问题搜索,出一点力
- 罗列一些自认为比较有用的前端东西
- 关于mvc的一些体会,看到这一篇感觉领悟到了,所以记录下来
- 有关java语法需要注意地方的一些记录(一)
- 【个人笔记】突然看到的一个关于小数输出的东西,记录下来
- 记录一些对mfc理解以前比较模糊的东西
- java collection framework 的一些比较使用的记录
- 好久没有在这个地方记录一点自己的东西了,借此记载一些S3C6410的开发点滴
- 将一些想法记录下来以供以后回忆的地方
- 金万钠说:“上面写的都是我想到的自己觉得比较重要的一些地方,还有很多细节是需要在实践中慢慢摸索和总结的。”
- 记录一些比较有用的网站
- Java学习记录(记录一部分Java和C++区别和Java里一些比较重要的概念)--稍后会转到新浪博客
- 自定义Toast格式,觉得有用,就记录下来了
- 一些比较简单的存储过程的代码,主要是本人对这个东西不太熟,特地写下来!