第三章 Java的基础程序设计结构
一个简单的 Java 应用程序
- 访问修饰符 public,private,protected
- main 方法必须时public修饰的,C#则不必须
数据类型
- 可以用16进制表示浮点数
- 可以用2,8,16进制表示整数
- Double.POSITIVE_INFINITY,Double.NEGATIVE_INFINITY,DOUBLE.NaN 分别表示正无穷,负无穷,不是数值; if(x==Double.NaN) 永不成立,可以使用Double.isNaN(x)判断
- 强烈建议不要在程序中使用char,除非必须,可以使用String替代
运算符
- 整数被0除会抛出异常,浮点数则会得到无穷大或NaN结果
- 最初的JVM计算浮点时规定必须截断,这样在不同类型机器上可以得到一致的结果,但后来这点被修改, JVM设计者允许中间结果采用扩展的精度. 但是经过strictfp修饰的方法/类必须截断. 使用strictfp的方式可能产生溢出, 但不属于什么大问题.
- Math.floorMod 是为了解决有关整数余数的问题,即计算机设计中负数的余数为负数导致的不方便
- StrictMath类能提供比Math更精确,更可预测的结果
- int x; x+=3.5; 是合法的,结果为(int)(x+3.5)
字符串
- StringBuilder 和 StringBuffer 的API是一样的, 不同的是StringBuffer是线程安全的,但使用StringBuilder效率较高;
流程控制语句
-
for中检测两个浮点数需要格外小心,for ( double x = 0 ; x ! = 10 ; x + = 0.1 ) 可能永远不会结束, 因为0.1不能精确用二进制表示
-
Java允许有标签的break语句,对嵌套循环的跳出到开头可以使用此类语句
数组
- Arrays.copyOf()方法用于数组拷贝,将原数组的每个元素拷贝到新数组中去,通常用于数组扩容