Java学习笔记1------基本程序设计结构

学习《Java核心数据》(原书第十版)的笔记------第三章

1、Java区分大小写

2、包名采用全部小写;项目名称首字母小写;类名采用驼峰命名法,每个单词的首字母大写;对象名及变量名使用小驼峰命名法

3、源代码的名字必须与类名相同

4、main方法必须声明为public方法

5、java中的所有代码都放在类中

6、三种注释的写法

    行注释://statement

    块注释:/* statement */

    文档注释,用于说明某个模块的作用,生成文档    /** statement */

7、数据类型

    Java数据类型的字长与平台无关,是固定的

    整形

类型 长度(字节)
byte 1
short 2
int 4
long

8

    浮点型

类型 长度(字节)
float 4
double

8

      一般而言不用float,因为其精度有限;除非在对占用空间十分敏感或者存储大量数据的地方

      另外,浮点运算将存在一定误差,比如

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

      可能不会执行11次,因为i可能从9.0000000000001直接变为10.0000000000001

      并且,在不同的计算机上运行时,由于CPU对浮点运算会有不同的优化,比如intel64位会将double的中间运算结果扩展到80位,最终结果再截取为64位,造成精度更高。但是再不同计算机上会有不同结果。

      如果想要得到可预测的结果,需要在函数之前加上strictfp关键字,禁止进行浮点优化。

      其他

类型 长度(字节)
char 2
boolean 一个数据位

8、长整型字面量后加L,float字面量之后加f;十六进制以0x或者0X开头,八进制以0开头,二进制以0b开头

9、三种特殊类型的数值

      正无穷,负无穷,NaN(不是一个数字)

      整数除0发生异常,浮点除0得到无穷值

      判断一个数是否为数值,可以用Double.isNaN(x)

10、因为计算机用二进制表示数字,所以无法精确表示所有数字,如果需要十分精确,没有四舍五入,需要使用BigDecimal

11、char类型

      一个占用2个字节的数据类型.

      Java采用Unicode形式的UTF-16编码方式,每个char占用两个字节,可以用转义字符\uxxxx的十六进制来表示。

      Unicode转义序列在解析代码之前就会得到,比如c:\user\dir会报错,因为\u之后没有跟四个数字;比如字符串字面量

"\u0022+\u0022"会被认为时""+"",是空字符串,而不会被认为是字符串"+"

12、Unicode和char

       Unicode编码范围是0x10FFFF:0x0,分成了16个区,其中0区是常用字符的编码区,如ASCII,中文等,范围是0x0000-0xFFFF,所以用一个16位就可以表示。其他字符需要两个16位来表示,即两个char。

      编码中,将一个16位称为一个代码单元,即一个char;将一个字符成为一个码点。

      所以,码点和char有很大区别。在使用Java字符串时,使用String.atChar得到的不是某个字符,而是某个代码单元的值。

      为了遍历字符串,需要使用String.codePoints().toArray()将码点转换成码点的数组,再进行遍历。

      !!!尽量不要使用代码单元(char)

13、常量

      使用final关键字声明,虽然constant是关键字,但是没有被用到

14、在C++中,int i;是定义变量; extern int i;是声明变量

      但是java并不区分。

15、运算符------加减乘除模

      java的模运算,使用Math.floorMod可以避免负数的模出现负数,因为数学家规定余数必须是正数。

16、数学运算与常量 java.util.Math

      pow(),sin(),cos(),tan(),atan(),atan2(),exp(),log(),log10(),E,PI

17、数值类型转换

      double类型运算,都被转换成double,float一样

      long类型运算,都转成long

      否则都被转成int

18、强制类型转换

      使用Math.round()进行四舍五入,返回long

19、自增自减运算符

20、关系运算符

       ==,!=,<,>,<=,>=

      &&,||,!

      &&和||按照短路规则进行计算,如果求得前面表达式可以确定结果,则不会求后面。用如下方法可以避免除0错误
      if (x!=0 && 1/x<10)

21、位运算

      & ^ ~ ^

      << >>右移用符号位补最高位 >>>右移补用0最高位

22、枚举类型

      enum Size{S,M,L,XL,XXL,XXXL}

      Size size = Size.XXL;

23、字符串及其子串

      String.equals()

      String.length()

24、字符串构造器

      StringBuilder.append()向字符串后方加入字符

      toString()转化为字符串

25、输入

      Scanner in =new Scanner(System.in);

      in.next()

      in.nextLine()

      in.nextInt()

26、格式化输出

      System.out.printf()

      String.format()

27、使用%n$代表输出参数的编号,从1开始;使用%

28、使用%tx打印时间

29、文件输入

      构造Scanner("filename", "charset");

30、文件输出

      构造PrintWriter("filename")

31、switch分支

      每个选择之后必须加上break;否则可能执行多个语句块。

32、不能用==判断字符串相等。字符串是对象,==会判断其指向的内存单元是否一样

33、中断控制流程语句

       break label;

      label放在想要跳出的循环的前边,加冒号;

      可以当作goto使用。

34、BigDecimal和BigInteger

      用于计算长浮点和长整型

      java没有运算符重载,所以只能用add,substract,multiply,divide进行运算。

      使用BigInteger a = BigInteger.valueOf(x);将int转化成大整形。

35、数组

      声明一个数组: 

      int[] a;

      初始化:

      a = new int[100];

36、二维数组

      java没有真正意义上的二维数组。只是创建了一个一维数组,里面每个元素都是一个一维数组。在初始化阶段,java会自动执行这种引用。

      如果想要创建不规则数组,需要自行初始化赋值,如

      int[] a = new int[100];

      for (int i = 0; i<100; i++) a[i]=new int[i];

37、数组的排序方法Arrays.sort()

38、foreach遍历语句

      foreach (int i: arr){statements;}

      但是foreach不能自动遍历二维数组,因为java只有一维数组,所以要这样写

      foreach (int[] i:arr)

            foreach (int j:i){statements;}

 

 

 

 

你可能感兴趣的:(java)