JAVA学习总结(1)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/freestyle4568/article/details/50890111

       这是JAVA学习总结的第一课。我希望用一种最易懂的方式将java语言的特点包括一些细节都记录下来。学习总结不是指导我们如何学习一门语言,而是让我们看清java语言与其他语言的不同,特别是与C/C++。如果想要详细的学习java,可以看thinking in java 或者 java in core更合适。本学习总结仅仅是本人巩固java基础的笔记而言。对java有一定了解的同学可以看看这个专题,看看其中是否有一些点你不熟悉或者遗忘了呢?

1. java语言的可移植性比C/C++更好,它在语法层就尽量避免了与OS和硬件有关。

比如:在java中规定了基本类型的字节长度:int(4字节),short类型(2字节), long类型(8字节),byte类型(1字节),float类型(4字节),double类型(8字节),char类型(2字节)。这些与OS层和具体硬件没有关系,我觉得对于一门高级语言这点特别重要,更加有利于开发者书写鲁棒型的代码。


2. char类型用于表示单个字符,占2个字节(必须明确哦,只占用2个字节)。unicode编码单元可以表示为16进制值,而现在的unicode编码已超过16位,范围从U+000000到U+10FFFF(20bit)。每一个符号是一个代码点,在java中用utf-16对其进行编号,分为基本多语言级别,和16个附加级别,辅助字符采用一对连续的代码单位进行编码。也就是在java中增补字符集用4个字节表示,普通的字符用2个字节表示。从这里就可以知道,char类型是无法存储增补字符集的。String中的length()方法也是计算字符串中的代码单元,而并非几个代码点,这个需要特别的强调。


3. java中boolean只有两值:true与false。整型值与布尔值之间无法进行转换(这个与C/C++不一样)。


4. “>>”与"<<"进行二进制位左右移。>>>将用0填充高位,>>运算符用符号位填充高位。没有<<<操作符。

这里特别注意的是:对于移位运算符右侧参数需要进行模类型长度(32/64)运算。所以1<<35与1<<3是一样的结果,都是8。


5. java中的基本类型默认的转换规则:

(1) 有double, 转double

(2) 有float, 转float

(3) 有long, 转long

(4) 都没有,那么都转为int

以上这些规则是按优先级从大到小来的。


7. 空串与null不一样


8. 代码点与代码单元

前面说过的String的length()方法返回的是多少个代码单元数量。

要找代码点要用codePointCount()。

要返回位置n的代码单元:char first = greeting.charAt(0);

代码点:offsetByCodePoints(0, i);

              codePointAt(index);

               isSupplementaryCodePoint(cp);


9. 大数值处理用BigInteger和BigDecimal。


11. 数值int[],String[], 与C/C++不同,创建一个数字数组时,所有元素都初始化为0。boolean数组中元素都初始化为false。对象数组的元素则初始化为一个特殊值null,表示未存放任何对象。String[] names = new String[10]; names中有10个元素,元素为引用,指向null对象,赋值改变引用。


12. for each 循环的使用。

for (变量:集合) {}


13. 数组初始化以及匿名数组

int[] a = {2,3,4};

int[] a = new int[]{17, 19, 20};

可以创建长度为0的数组,new elementType[0];长度为0与null不同。

多维数组:double[][] a = new double[5][];  这个在java中是允许的;

                   a中的5个元素是double[]型的

java中的double[][] a = new double[10][6];

等于C++中的下面操作:

double** a = new double*[10];   <-10个指针数组

for (int i = 0; i < 10; i++)

     a[i] = new double[6];

     不同于C++中的double (* balance)[6] = new double[10][6];

在java中a[]中元素仍可指向其它不同长度一维数组。


14. 在java中,不能在嵌套的两个块中声明同名变量。但C++中可用

         for (int i = 0; i < n; i++)

             for (int i = 0; i < k; i++)  这样在java中就是错误的。


15. final实例:指该引用值不能改变,不代表所指向的对象不能改变。




猜你喜欢

转载自blog.csdn.net/freestyle4568/article/details/50890111