Java 自学笔记 Oct-26

首先说明学Java之前我一直是用C++的…其次说明这些笔记只标注我觉得需要注意的…

自学的教材用的是Java核心技术(卷1)

 

1.Java不存在unsigned类型。

2.Java用final来表示常量,如果希望在其他类中访问,请声明为public static final类常量。

3.通常浮点运算时会扩展精度(视机器而定),而在最后输出时截断,如果需要严格的浮点运算(过程中截断),请将方法声明为strictfp类型的,如public static strictfp void main(可能产生数值溢出)。

4.>>>用0填充高位,>>用符号位填充高位,没有<<<运算符。

5.1<<3和1<<35是等价的,1L<<3和1L<<67是等价的。原因在于int类型左移的操作数会对32取模,long类型左移的操作数会对64取模。

6.Math库导入的时候利用静态导入:

import static java.lang.Math.*;


其中包括的函数有sin,cos,tan,atan,atan2,exp,log,pow,sqrt等等。以及定义了两个常量Math.PI和Math.E

如果不在意运行速度而更在意运行精度的话,请使用StrictMath类。

7.隐式转换的优先级为double,float,long,int

8.对浮点数进行舍入计算可以使用Math.round()函数,但是请注意返回值的类型为long。

9.截断后如果超出该类型的表示范围可能会进行取模操作,如对300.00转换为byte类型结果可能是44。

10.尽可能避免boolean类型和其它类型的强制转换,如果真的需要,请使用(xxx?1:0)这样的方式进行转换(xxx表示boolean类型的变量)。

 

11.Java不再使用类似于C++中的逗号运算符。但是for循环的条件中依然可以使用逗号来分隔条件。

12.枚举类型的变量除了可以可以赋所枚举类型的值外,还可以赋值为null,表示未赋值。

例如:

enum Size { SMALL,MEDIUM,LARGE,EXTRA_LARGE };
Size s1 = Size.MEDIUM;
Size s2 = null;

13.String类的字符串不能直接修改某一位字符,但可以通过其他方式实现,如把"Hello"改成"Help!"

String str = "Hello";
str = str.substring(0,3) + "p!";

而substring操作的第二个参数不再是类似于C++中的截取长度,而是第一个不需要拷贝的字符的下标。

14.检测字符串是否相等请使用equals()方法(或者无视大小写的equalsIgnoreCase()方法)。调用==操作仅仅比较的是是否出自同一引用,实际上只有常量字符串是共享的,而substring或者拼接操作都会使==返回错误的结果。

类似于C语言中的strcmp函数,Java中有compareTo方法。调用方法如下:

if(a.compareTo(b) == 0)

15.对于String类型,length返回的是代码单元的数量。如果需要查代码点的数量,请使用codePointCount。

例如:

int codePointAmount = str.codePointCount(0,str.length());

而利用charAt(n)可以访问第n个代码单元。

如果需要访问第n个代码点,使用下面的代码:

int index = str.offsetByCodePoints(0,n);
int codePoint = str.codePointAt(index);

isSupplementaryCodePoint()可以判断一个代码点是否为辅助字符的第二部分。(注:原文中写的是codePointAt方法,疑似有误),若返回值为true则不是辅助字符的第二部分。

 

(至页码59.)


 



 

posted on 2011-10-26 17:42  珞薇  阅读(1500)  评论(6)    收藏  举报

导航