美文网首页
Java学习笔记(一)

Java学习笔记(一)

作者: burger8 | 来源:发表于2020-02-03 12:36 被阅读0次

    Java学习笔记(一)

    依据《写给大忙人看的Java核心技术》所记笔记

    【美】Cay S.Horstmann 著

    杨谦 王巍 高伟斌 谢志强 译

    转载请注明出处,勿用于商业用途

    第一章 基本的编程结构

    一、第一个程序

    1. 在Java中,所有代码都必须在类中定义

    2. main方法是程序运行时调用的第一个方法,它被声明为静态的,表面该方法不是依赖于对象运行的。

    3. 包(package)是一组相关类的集合,每个类都放入一个包中

    4. 三种注释方法:

      //我是行注释
      /*
       我是多行注释
      */
      /**
       我是文档注释
      */
      
    5. javac 命令将Java源代码编译为中间代码,也称字节码,并将它们保存到类文件中(即.class文件)

    6. System.out是对象,是PrintStream的实例

    7. 使用点符号调用对象上的实例方法

    8. 字符串是String类的实例,可以调用length方法返回字符串的长度,即:"Hello World".length()

    9. Random类的对象可以产生随机数,可以使用new操作符构建一个Random对象 new Random();

      类名之后是构造函数的参数列表

      Random.nextInt()方法可以提供一个整数,Random类声明在java.util包中,使用需导入,即:import java.util.Random

    二、基本类型

    1. 整型(没有小数,允许为负)

      int(4字节)long(8字节)short(2字节)byte(1字节)

      如果long类型还不够用时,使用BigInteger类

    2. 使用long类型时带上L后缀,byte和short型采用强制转换

    3. 十六进制使用0x前缀,二进制使用0b前缀,八进制使用0前缀

    4. 可以给数字添加下划线方便阅读,Java编译器会自动删除它们。如:1_000_000表示100万

    5. 浮点类型

      float(4字节) double(8字节)

      float类型有F后缀,没有F默认为double类型,也可使用D作为Double类型后缀

    6. 十六进制指数使用p

    7. Double.POSITIVE_INFINITY代表正无穷

      Double.NEGATIVE_INFINITY代表负无穷

      Double.NaN代表“非数值”,如0.0/0.0或负数平方根

    8. 所有的“非数值”都彼此不同,不能使用x==Double.NaN检查

      可以调用Double.isNaNDouble.isInfinite进行检查,Double.isFinite可以检查既不是无穷也不是NaN

    9. 浮点数不适合金融计算,因为存在误差,若要准确无误差的数学计算可以使用BigDecimal

    10. 布尔型

    有两种数值,falsetrue,Java中布尔类型不是数字类型,与0和1没有关系

    三、变量

    1. Java是强类型语言,变量值只能是某个具体类型的值

    2. Java对字母大小写敏感

      变量和方法的名称以小写字母开始,类的名称的第一个字母大写

      驼峰式大小写:当名称由多个单词组成时,单词首字母大写,如:countOfInvalidInputs

    3. 在使用变量前必须初始化变量

    4. 允许在方法中的任何地方声明变量,尽可能晚地声明变量,刚好在首次需要变量的前一刻声明

      变量声明在它的初始值刚有了的那一刻

    5. final关键字表示一个值,一旦赋值后就不能改变了(常量)

      常量的名称使用大写字母,如:final int DAYS_PER_WEEK=7;

      可以在方法外,使用static关键字声明常量,如:public static final int DAYS=7;

    6. 在类内部可以直接使用常量,在其他类中使用需要在前面加上类名

    7. System类中声明了一个常量:public static final PrintStream out;

    8. 延迟final变量的初始化也可以,只要在首次使用前只初始化一次就好。

      final变量一旦被赋值,就是最终的值,永远无法改变

    四、算术操作

    1. 基本运算

      1. /操作符,如两个操作数都是整型,代表整除;如有小数会产生小数
      2. 整数除以零会导致异常,如果没有捕获异常,程序会终止
      3. 浮点数除以零会产生无限值或NaN,不会导致异常
      4. 当n为奇数时,若n为正,n%2的结果为1,若n为负,n%2的结果为-1
    2. 数学方法

      1. 静态方法不用在对象上调用,如静态常量一样,只需要在前面加上静态常量的类名即可
      2. Math.pow(x,y) 产生x的y次方,Math.sqrt(x) 计算x的平方根
      3. 计算两个值哪个小或大,Math.minMath.max
      4. Math 类提供三角函数和对数方法,以及常量Math.PIMath.E
    3. 数字类型转换

      • 合法转换
        • byte-->short\int\long\double
        • short\char-->int\long\double
        • int-->long\double
      • 合法但损失信息
        • int-->float
        • long-->float\double
    4. 大数

      java.math 中的BigIntegerBigDecimal 类可实现任意精度计算

      Java不允许对象使用操作符,操作大数时必须使用方法调用

    五、字符串

    1. 字符串连接

      使用操作符+可以将两个字符串连接起来,将一个字符串和另外一个值连接起来时转换为字符串

    2. 子字符串

      要将字符串分开,使用substring方法

      substring方法的第一个参数是提取子字符串中的起始位置,第二个参数是子字符串不包含的终止位置

      split方法分割由字符串分割的所有字符串

      分隔符也可以是正则表达式

    3. 字符串比较

      检查字符串是否相等,使用equals方法

      string变量可以是null,表明该变量根本没有引用任何对象

      在null上调用任何方法都会导致空指针异常

      不考虑大小写比较两个字符串,可使用equalsIgnorelase()

    4. 数字字符串转换

      整数转换为字符串可调用静态的Integer.toString()

      字符串转整数,使用Integer.parseInt()

      对于浮点数,使用Double.toStringDouble.parseDouble

    5. String类API

      在Java中,String类是不变的(immutable),即任何String方法不能修改自己的字符串

    六、输入与输出

    1. 读取输入

      要读取字符串和数字,构造一个依附到System.inScanner

      Scanner in = new Scanner(System.in);
      

      Scanner 对象的nextLine方法从输入读取一行

      nextInt() 读取整数,nextDouble() 读取浮点数

      Scanner类位于java.util包中

    2. 格式化输出

      print方法不会在输出中新起一行,常用来提示输入

      使用printf和%来格式化输出

      使用String.format 方法创建不打印输出的格式化字符串

    七、控制流

    1. 分支:

      if、else、else if、switch case

    2. 循环

      while、do while、for

    3. 跳出循环

      break、continue

      break+标签可以跳出多个循环

    4. 局部变量作用域

    八、数组和数组列表

    1. 使用数组

      新建数组:int[] nums

      数组初始化:nums =new int[10];nums = int[] {1,2,3,4};y

    2. 构造数组

      也可以直接构造数组:int [] nums = {1,2,3,4};

      数组长度为0和空指针null不同

    3. 数组列表

      构造数组时,必须指定长度,一旦构造好,数组的长度不能再变

      使用java.util包中的ArrayList类来管理数组

      ​ 声明变量:ArrayList<String> friends =new ArrayList<>();

      声明之后结果为一个大小为0的数组列表,可以用add方法给末尾加元素

      访问元素要使用get方法,不能用[]直接访问

      size方法可返回当前列表大小

    4. 基本类型包装类

      泛型类不能使用基本类型作为类型参数,可以使用包装类

      每一种基本类型都有对应的包装类

      Integer、Byte、Short、Long、Character、Float、Double和Boolean

      ==和!=操作符比较引用对象而不是对象的内容

    5. 增强的for循环

      for(int n:numbers){}

      其中的n不是索引值,而是被赋值为numbers[0]、numbers[1]等

    6. 数组与数组列表的复制

      数组直接等于的复制是引用直接指向同一个数组

      若真正复制数组需要使用静态方法Array.copyOf

      int[] copiedPrimes = Arrays.copyOf(primes,primes.length);

      该方法构造一个期望长度的新数组,并将原数组的元素复制进去

    7. 数组算法

      Arrays(数组)类 Collections(集合)类

      对数组或数组列表排序,使用sort方法

      Arrays.sort(names)Collections.sort(friends)

      toString() 产生一个数组的字符串表示

    8. 命令行参数

      当用命令行执行程序时,命令行中的指定参数就赋值给main函数中的args

    9. 多维数组

      Java中的多维数组是通过数组的数组来实现

      int[][] square =new int[4][4];

    九、功能分解

    静态方法,即static修饰的方法可在main中直接调用

    变长参数必须是方法中的最后一个参数,用修饰符... 修饰

    public static double max(double first,double ... rest);

    相关文章

      网友评论

          本文标题:Java学习笔记(一)

          本文链接:https://www.haomeiwen.com/subject/axrhxhtx.html