Java核心技术 ( 卷 I ) 读书笔记(第一~三章)

来源:互联网 发布:python中的不可变类型 编辑:程序博客网 时间:2024/05/18 21:43

因为开学要学Java,只有六周,Python是暑假自己学的,Java结束后继续吧,而且我同时再看程序设计竞赛,好看,但计科的男人不能哭

Java核心技术 ( 卷 I ) 读书笔记(第一~三章)

注:先修C++,只标记Java与C++不同或特别重要的语法。

第一章 Java程序设计概述

第二章 Java程序设计环境

  1. JDK:Java Development Kit
  2. JRE:Java Runtime Environment
  3. SE:Standard Edition
  4. EE:Enterprise Edition
  5. ME:Micro Edition
  6. CamelCase:驼峰命名法。如果名字由多个单词组成,每一个单词的第一个字母都应该大写。
  7. 源代码的文件名必须与公共类的名字相同,并用 .java 作为拓展名。
  8. 注释:Java中前两种注释和C++一样,第三种注释可以自动地生成文档,这种注释使用 \** 开始,以 */ 结束。
    /**
    * This is the first sample program in Core Java Chapter 3
    * @version 1.01 1997-03-22
    * @author Gary Cornell
    */
  9. 数据类型: 8中基本类型( primitive type), 没有无符号类型。
    • int : 4字节
    • short:2字节
    • long:8字节。长整型数值有一个后缀L。
    • byte:1字节
    • float:4字节。有效位数6~7位。有后缀F。
    • double:8字节。有效位数15位。
    • boolean:1字节。整数值和布尔值之间不可以进行互相转换。
    • char:1字节
      从Java 7开始,加上前缀 0b 就可以写二进制数,如0b1001就是9。从Java 7开始还可以为数字字面量加下划线,增强可读性,如1000_1101_1000。在JDK 5.0中可以使用十六进制表示浮点数值,如0x1.0p-3, 其中 p 表示指数。
      表示溢出和出错情况的三个特殊浮点数值:正无穷大,负无穷大,NaN(不是一个数字)。不能这样检测一歌特定值是否等于Double.NaN, 但可以使用 Double.isNaN(x) 判断x是不是一个数字。
      转义序列符 \u 表示Unicode代码单元的编码,除了可以出现在字符常量或字符串内,还可以出现在之外,而其他转移序列符不可以。public static void main(String\u005B\u005D args)
      代码点(Code point):是指与一个编码表中的某个字符对应的代码值。Unicode 中代码点可分为17个代码级别(Code plane),第一个代码级别称为基本的多语言级别(basic multilingual plane), 包括经典的Unicode代码,其余的16个附加级别,包括一些辅助字符(supplement character)。
  10. 常量:Java中,使用 final 指示常量。习惯上常量名使用全大写。
  11. 在main方法中,所有指令都将使用严格的浮点计算,如果将一个类或方法标记为 strictfp, 那这个类中的所有方法或这个方法都将使用严格的浮点计算。
    public static strictfp void main(String[] argd)
  12. 位运算:使用2的幂次方的 & 运算可以将其他位屏蔽掉。>>> 将使用0填充高位,>> 运算符使用符号位填充高位,没有<<<运算符。对移位运算符右侧的参数需要进行 膜32 的运算(左边是long,这时模64),例如,1<<35 和 1<<3的结果是一样的。
  13. Math.round(x) 方法可以对浮点数进行舍入运算,得到最接近的整数(long)。
  14. 子串:String类的 substring( int beginIndex, int endIndex )返回索引从 beginIndex 到 endIndex-1 的子串。
  15. 拼接:当将一个字符串和一个非字符串的数值进行拼接时,后者就会转换成字符串。
  16. equals(Object anObject):检测两个字符串是否相等,是返回True;否则返回false。可以使字符串变量或常量。equalsIgnoreCase()不区分大小写。== 云端副不能用来判断两个字符串是否相等,只能确定两个字符串是否放置在同一个位置。
  17. 空串:”“, 是一个Java对象,有自己的串长度 (0) 和内容 (空)。String还可以存放特殊值 null,目前没有雨任何对象关联。
    if(str != null && str != "") #要先检查不为null
  18. String.length() 方法返回采用UTF-15编码表示的给定字符串所需要的代码单元的数量。String.charAt(n) 将返回位置n的代码单元。
  19. 构建字符串:使用 StringBuilder类——字符串构造器。当每次需要添加一部分内容时,就调用 append() 方法,在需要构建字符串就调用 toString()方法。
    StringBuilder builder = new StringBuilder();
    builder.append(ch);
    String completedString = Builder.toString();
  20. 输入输出:要通过 console控制台进行输入,首先要构建一个 Scanner 对象,并与标准输入流 (System.in) 关联。
    Scanner in = new Scanner(System.in);
    nextLine() 方法将输入一行,因为在输入行中可能有空白格们要想读取一个单词(以空白为分隔符),就要使用 next() 方法。
    String firstName = in.next();
    可以使用静态的 String.format()方法创建一个格式化的字符串。
    String message = String.format("Hello, %s!", name);
    printf()中日期和时间的格式化选项,以 t 开始,以日期与时间转换符的任意字母结尾。同时,可使用一个格式化的字符串支出要被格式化的参数索引(从1开始),索引必须紧跟在 % 后,并以 $ 结束。同样可以使用 < 指示前面格式说明中的参数将被再次使用。
    printf("%tc", new Date()); #c表示完整的年月日
    printf("%1$tB, %2$te, %3$tY", new Date()) #这行代码有误,仅作为索引的介绍。
  21. 文件的输入与输出:要相对文件记性读取,就要用一个 File 对象构造一个 Scanner 对象
    Scanner in = new Scanner(Paths.get("myFile.txt"));
    要写入文件,就要构造一个 PrintWriter 对象,只需要提供文件名。如果文件不存在,则创建该文件。
    PrintWriter out = new Printwriter("myFile.txt");
  22. 不能在嵌套的两个块(block)中声明同名的变量。
  23. Java提供了一种带标签的 break 语句,用于跳出多重循环,标签必须放在希望跳出的多层循环之前,并且紧跟一个冒号。智能跳出语句块而不能跳进语句块。
    read_data;
    while(...){
    for(...){
    if(...)
    break read_data;
    }
    }
  24. 大数值:BigIntegerBigDecimal 两个类处理包含任意长度数字序列的数值。使用静态的 valueOf()方法可以将普通的数值转换成大数值。
    BigInteger a = BigInteger.valueOf(100);
    不能使用算术运算符,而要使用大数类的add(), subtract(), multiply(), divide(), mod() 方法。其中使用 BigDecimal 类的 divide() 方法时必须给出四舍五入的方式(rounding mode)。
  25. 数组:声明数组, 指出数组类型(数据元素类型紧跟[])和数组变量的名字
    int[] a;
    使用 new 运算符创建一个数组, 数组长度不要求是常量。允许数组长度为 0,长度为0和 null 是不同的。
    int[] a = new int[100];
    使用列表初始化数组的使用不需要调用 new
    int[] a = {1, 2, 3, 4};
    甚至可以初始化匿名数组, 在不创建新变量的情况下重新初始化一个数组。
    a = new int[] {1, 2, 3, 4};
    Java允许 数组拷贝, 两个变量将引用同一个数组。
    int[] b = a;
  26. for each 循环:for(elememt : collection) statement
    可以一次处理数组中的每个元素而不必为制定下标值担心。collection 这一集合必须是一个数组,或者一个实现了 Iterable 接口的类对象。
  27. main()函数接受一个字符串数组,也就是命令行参数。
  28. Math.random() 方法将返回一个从0到1,左开右闭的随机浮点数,用n乘以这个数就可以到的0 ~ n-1 之间的随机数。
原创粉丝点击