java基础语法中容易出错的细节
1 java中的数字默认类型为int
**容易出现类型转换错误
long 定义的数字后面必须有 “l” “L”
float 定义的数字后面必须有 “f” “F”
java中比int表述范围大的数,不会自动转出其他类型。所有必须要指定。
如果数字比int表述范围小,会在赋值的时候自动转换。
2 boolean值不能为null
也不能用0或非0赋值boolean定义的变量,这和c语言不太一样。
3 类型转换
long型占8个字节,而float占4个字节,而long自动转float是可以的。大类型转小类型的特例。
byte转char是从小到大,但是要强制转换。
4 “+”号的重载
“+”号遇到字符串会重载为连接符。如 “5+5=”+5+5 -------> 5+5=55
5+5+"=5+5" -------> 10=5+5
'a'+5+5 ----------> 107 char实际上还是int,所以不存在运算符重载。
5 模运算的符号问题
模运算的符号只取决于被模数的符号。和模数的符号没有关系。
6 位运算中需要注意的点
byte b= 127;
byte b2= (byte)(b+1);-------->结果为-128。如果直接把128赋值给b2,就会报错!
需要注意的是。位运算之后,结果为int值。强转之后可能会造成截断错误。
例如: byte b1 =-9;
byte b2 = (byte) (b1>>>3);
System.out.println(b2);
(b1>>>3)-->结果是int,所移的也是int ,强转之后,把移位所补的0截取丢掉了。剩下的值为-2.
总结:
符号位扩展和移位操作总是发生在32位,计算机会默认将小值自动转换成int,所以对第7位为0的byte值进行无符号操作是没有意义的,在实际运算时,是对扩展后的32位int进行操作的。
7 +=的特点
保持类型不变。如上面的代码 byte b2= (int)(b+1) 等号右边加1后会转为int型。而如果使用+=就跳过了数值运算结束默认转int的机制。
8 i++ 与 (i++)是一样的。
不要被括号迷惑!!!
9 三元运算符
1.?后面的语句必须有返回值。
2.?后面两个语句返回值类型必须相同。如果不同,那么会无法判断三元运算符的返回值!
最新文章
- shader forge卡通渲染!
- [FFmpeg] ffmpeg 常用命令
- 当前界面最上面添加视图(UIWimdow)
- Web框架们
- ajax 异步交互
- Beta分布和Dirichlet分布
- 注意!你的Thread.Abort方法真的让线程停止了吗?
- UVa11210 中国麻将 Chinese Mahjong-搜索
- 【Android Studio使用教程3】Android Studio的一些设置 体验更好了
- JSP实现数据库(MySQL)查询——Java Web练习(二)
- poj2787 算24
- document.body 和 document.documentElement 的区别
- Java课程设计—学生成绩管理系统(54号童欢)
- python写一个信息收集四大件的脚本
- Android使用SimpleAdapter
- Mysql 8.0 导入txt文件操作(课程实验)
- webservice的两种方式SOAP和REST的通俗理解
- Nginx使用教程(七):使用Nginx缓存之proxy cache
- jenkins+mail邮件配置
- 3D打印开源软件Cura分析(1) 【转】
热门文章
- JVM垃圾回收机制四
- 【装载】删除Oracle11G
- IT届常用单词读法纠正
- Caused by: java.lang.IllegalStateException: javax.websocket.server.ServerContainer not available
- Logback文档(1)
- LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
- UVA 12898 - And Or 与和或 (思路题)
- cityspace
- 报bug
- 关于bc中小数点length,scale,(())以及进制转换