Java核心技术 卷1 第三章总结

 这章主要就介绍Java的基本程序设计结构,比较基础,我就记下我认为重要和我以前不知道的知识。不过,我认为关于char类型的讨论比较重要,也就是与其他语言很不同,我打算另写一篇文章来总结。

1.Java是纯面向对象语言,应用程序中的全部内容都必须放置在类中。

2.源代码的文件名必须与公共类的名字相同,并用.java作为扩展名。这就说明一个Java文件最多有一个public的类(可以没有),如果有一个public的类,那么这个类的名字必须与这个java文件的名字相同。还有,即使一个java文件中有多个类,但是编译后还是会分成不同的class文件的。

3.Java的main方法的返回类型是void,而不是int。如果正常退出,那么程序的退出代码为0,表明成功退出。如果希望返回其他的代码,就调用System.exit方法。

4.Java是一种强类型语言,这表明必须为每一个变量声明一种类型。Java中一共有8中基本类型(primitive type),分别是 int 、short、long、byte、float、double、char 和 boolean。其中,因为有JVM提供的抽象,Java中的每种基本类型所占用的存储空间是固定不变的,这大大方便了软件平台的移植。最后,注意,Java中没有任何无符号类型(unsigned)。

5.Java采用的字符集是Unicode。一开始,Unicode编码只用两个字节即可表示所有的字符,于是Java决定把char类型的长度设置为两个字节,这与C/C++不同。后来,大量的东亚文字加入导致两个字节也不够用了。于是Java的字符串编码比较特别。我会写另一篇文章来讲解。

6.整型值和布尔值之间不能进行相互转换。

7.在Java中,不区分变量的声明与定义。声明一个变量之后,必须用赋值语句对变量进行显式初始化。

8.在Java中,利用关键字final定义常量。关键字final表示这个变量只能被赋值一次。一旦被赋值之后,就不能够再更改了。const是java保留的关键字,但目前并没有使用。

9.strictfp关键字用来修饰方法,表明这个方法要使用严格的浮点计算来保证来每个平台上运行都会得到相同的结果。

10.对于移位操作,>>>运算符将用0填充高位,>>运算符用符号位填充高位。没有<<<运算符。

11. int类型转换为float类型时可能有精度损失。long类型转换为double类型时可能有精度损失。

12.进行二元操作时,先要将两个操作数转换为同一种类型,然后再进行计算。下面是转换规则:(最起码都会转换为int类型)

  • 如果两个操作数中有一个是double类型,另一个操作数就会转换为double类型。
  • 否则,如果其中一个操作数是float类型,另一个操作数将会转换为float类型。
  • 否则,如果其中一个操作数是long类型,另一个操作数将会转换为long类型。
  • 否则,两个操作数都将转换为int类型。

13.如果转换存在信息丢失,那么就要用强制类型转换。

14. instanceof 是一个运算符!Java中没有sizeof运算符!

15.每个用双引号括起来的字符串都是String类的一个实例。

16.Java的设计者认为共享带来的高效率远远胜过于提取、拼接字符串所带来的低效率。因此,Java中的String对象并不能修改里面的内容。想要修改应该用另一个类。

     其实,Java中的:

      

String  s = "Hello,world!";

    更加类似于C/C++中的:

   

char *s = "Hello,world!";

  即不能通过s去修改字符串的内容。 

17.Java中没有提供运算符重载的机制,而Java的设计者只重载了String类型的+运算符。因此,在Java中不能用==运算符来比较两个字符串是否相等,==运算符只会比较是否引用了同一个字符串或者说是内存区域,于是只能通过String类型提供的方法equals()来比较是否相等。 

18.因为JVM内部用UTF-16编码方式来编码字符,所以有些不常用的字符会使用两个char(代码单元)来表示一个字符(代码点),而String的length方法返回的是char的数量,所以有时候length方法返回的值与我们能看到的字符数量会不一样。

19.如果要经常修改字符串,应该用StringBuilder或StringBuffer类型。

20.Java中不允许在嵌套的块中重定义一个变量。

21.Java将goto作为保留字,但没有使用。但是也提供了带标签的break语句来提供类似的功能。

22.可以使用BigInteger和BigDecimal来处理任意长度的整数运算和任意精度的浮点数运算。因为Java没有运算符重载,所以这些对象的运算只能用这些类提供的方法来进行。

23.对于数组,其实 int[] a;和 int a[];两种写法都可以的。只不过习惯于用第一种写法。

24.在Java中 int[]是一个类型,因此不能写int a[100],于是数组的内容都是在堆上的。

25.Java支持for each循环。

26.Java实际上没有多维数组,只是数组的数组。于是,在Java中就很容易实现不规则的多维数组。也就是说,对于 int [][] a; a[]所存的其实就是一个int[]类型,所以可以直接交换a[i]和a[i+1]的值来直接交换两行。

猜你喜欢

转载自blog.csdn.net/sinat_30955745/article/details/84260560