第一章 API

1.1 概述

API(Application Programming Interface),应用程序编程接口。Java API是一本程序员的字典,是JDK中提供给我们使用的类的说明文档。这些类将底层的代码实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可。所以我们可以通过查询API的方式,来学习Java提供的类,并得知如何使用它们。

第二章 Scanner类

了解了API的使用方式,我们通过Scanner类,熟悉一下查询API,并使用类的步骤。

2.1 什么是Scanner类

一个可以解析基本类型和字符串的简单文本扫描器。 例如,以下代码使用户能够从 System.in 中读取一个数:

  1. Scanner sc = new Scanner(System.in);
  2. int i = sc.nextInt();

备注:System.in 系统输入指的是通过键盘录入数据。

2.2 引用类型使用步骤

导包

  1. import 包名.类名;

创建对象

  1. 数据类型 变量名 = new 数据类型(参数列表);

调用方法

  1. 变量名.方法名();

2.3 Scanner使用步骤

使用Scanner类,完成接收键盘录入数据的操作,代码如下:

  1. //1. 导包
  2. import java.util.Scanner;
  3. public class Demo01_Scanner {
  4. public static void main(String[] args) {
  5. //2. 创建键盘录入数据的对象
  6. Scanner sc = new Scanner(System.in);
  7. //3. 接收数据
  8. System.out.println("请录入一个整数:");
  9. int i = sc.nextInt();
  10. //4. 输出数据
  11. System.out.println("i:"+i);
  12. }
  13. }

第三章 Random类

3.1 什么是Random类

此类的实例用于生成伪随机数。

3.2 Random使用步骤

使用Random类,完成生成3个10以内的随机整数的操作,代码如下:

  1. //1. 导包
  2. import java.util.Random;
  3. public class Demo01_Random {
  4. public static void main(String[] args) {
  5. //2. 创建键盘录入数据的对象
  6. Random r = new Random();
  7. for(int i = 0; i < 3; i++){
  8. //3. 随机生成一个数据
  9. int number = r.nextInt(10);
  10. //4. 输出数据
  11. System.out.println("number:"+ number);
  12. }
  13. }
  14. }

备注:创建一个Random 对象,每次调用nextInt() 方法,都会生成一个随机数。
public int nextInt(int n)返回一个伪随机数,范围在 0 (包括)和指定值 n (不包括)之间的 int 值。

第四章 ArrayList类

4.1 引入——对象数组

使用学生数组,存储三个学生对象,代码如下:

  1. public class Student {
  2. private String name;
  3. private int age;
  4. public Student() {
  5. }
  6. public Student(String name, int age) {
  7. this.name = name;
  8. this.age = age;
  9. }
  10. public String getName() {
  11. return name;
  12. }
  13. publicvoid setName(String name) {
  14. this.name = name;
  15. }
  16. publicint getAge() {
  17. return age;
  18. }
  19. publicvoid setAge(int age) {
  20. this.age = age;
  21. }
  22. }
  23. public class Test01StudentArray {
  24. public static void main(String[] args) {
  25. //创建学生数组
  26. Student[] students = new Student[3];
  27. //创建学生对象
  28. Student s1 = new Student("曹操",40);
  29. Student s2 = new Student("刘备",35);
  30. Student s3 = new Student("孙权",30);
  31. //把学生对象作为元素赋值给学生数组
  32. students[0] = s1;
  33. students[1] = s2;
  34. students[2] = s3;
  35. //遍历学生数组
  36. for(int x=0; x<students.length; x++) {
  37. Student s = students[x];
  38. System.out.println(s.getName()+"‐‐‐"+s.getAge());
  39. }
  40. }
  41. }

到目前为止,我们想存储对象数据,选择的容器,只有对象数组。而数组的长度是固定的,无法适应数据变化的需求。为了解决这个问题,Java提供了另一个容器java.util.ArrayList 集合类,让我们可以更便捷的存储和操作对象数据。

4.2 什么是ArrayList类

java.util.ArrayList是大小可变的数组的实现,存储在内的数据称为元素。此类提供一些方法来操作内部存储的元素。 ArrayList 中可不断添加元素,其大小也自动增长。

4.3 ArrayList使用步骤

使用ArrayList类,存储三个字符串元素,代码如下:

  1. public class Test02StudentArrayList {
  2. public static void main(String[] args) {
  3. //创建学生数组
  4. ArrayList<String> list = new ArrayList<>();
  5. //创建学生对象
  6. String s1 = "曹操";
  7. String s2 = "刘备";
  8. String s3 = "孙权";
  9. //打印学生ArrayList集合
  10. System.out.println(list);
  11. //把学生对象作为元素添加到集合
  12. list.add(s1);
  13. list.add(s2);
  14. list.add(s3);
  15. //打印学生ArrayList集合
  16. System.out.println(list);
  17. }
  18. }

4.4 常用方法和遍历

对于元素的操作,基本体现在——增、删、查。常用的方法有:

  • public boolean add(E e) :将指定的元素添加到此集合的尾部。
  • public E remove(int index) :移除此集合中指定位置上的元素。返回被删除的元素。
  • public E get(int index) :返回此集合中指定位置上的元素。返回获取的元素。
  • public int size() :返回此集合中的元素数。遍历集合时,可以控制索引范围,防止越界。

备注:参数 E e ,在构造ArrayList对象时, 指定了什么数据类型

4.5 如何存储基本数据类型

ArrayList对象不能存储基本类型,只能存储引用类型的数据。类似不能写,但是存储基本数据类型对应的包装类型是可以的。所以,想要存储基本类型数据,<>中的数据类型,必须转换后才能编写,转换写法如下:

基本类型 基本类型包装类
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

我们发现,只有Integer 和 Character 需要特殊记忆,其他基本类型只是首字母大写即可。

第五章 String类

5.1 String类概述

概述

类 String 中包括用于检查各个字符串的方法,比如用于比较字符串,搜索字符串,提取子字符串以及创建具有翻译为大写或小写的所有字符的字符串的副本。

特点

  1. 字符串不变:字符串的值在创建后不能被更改。
  1. String s1 = "abc";
  2. s1 += "d";
  3. System.out.println(s1); // "abcd"
  4. // 内存中有"abc","abcd"两个对象,s1从指向"abc",改变指向,指向了"abcd"。
  1. 因为String对象是不可变的,所以它们可以被共享。
  1. String s1 = "abc";
  2. String s2 = "abc";
  3. // 内存中只有一个"abc"对象被创建,同时被s1和s2共享。
  1. "abc" 等效于 char[] data={ 'a' , 'b' , 'c' } 。
  1. 例如:
  2. String str = "abc";
  3. 相当于:
  4. char data[] = {'a', 'b', 'c'};
  5. String str = new String(data);
  6. // String底层是靠字符数组实现的。

5.2 使用步骤

查看构造方法

  1. // 无参构造
  2. String str = new String();
  3. // 通过字符数组构造
  4. char chars[] = {'a', 'b', 'c'};
  5. String str2 = new String(chars);
  6. // 通过字节数组构造
  7. byte bytes[] = { 97, 98, 99 };
  8. String str3 = new String(bytes);

5.3 常用方法

判断功能的方法

  • public boolean equals (Object anObject) :将此字符串与指定对象进行比较。
  • public boolean equalsIgnoreCase (String anotherString) :将此字符串与指定对象进行比较,忽略大小写。

Object 是” 对象”的意思,也是一种引用类型。作为参数类型,表示任意对象都可以传递到方法中。

获取功能的方法

  • public int length () :返回此字符串的长度。
  • public String concat (String str) :将指定的字符串连接到该字符串的末尾。
  • public char charAt (int index) :返回指定索引处的 char值。
  • public int indexOf (String str) :返回指定子字符串第一次出现在该字符串内的索引。
  • public String substring (int beginIndex) :返回一个子字符串,从beginIndex开始截取字符串到字符串结尾。
  • public String substring (int beginIndex, int endIndex) :返回一个子字符串,从beginIndex到
    endIndex截取字符串。含beginIndex,不含endIndex。

转换功能的方法

  • public char[] toCharArray () :将此字符串转换为新的字符数组。
  • public byte[] getBytes () :使用平台的默认字符集将该 String编码转换为新的字节数组。
  • public String replace (CharSequence target, CharSequence replacement) :将与target匹配的字符串使用replacement字符串替换。

CharSequence 是一个接口,也是一种引用类型。作为参数类型,可以把String对象传递到方法中。

分割功能的方法

  • public String[] split(String regex) :将此字符串按照给定的regex(规则)拆分为字符串数组。

方法演示,代码如下:

  1. public class String_Demo03 {
  2. public static void main(String[] args) {
  3. //创建字符串对象
  4. String s = "aa|bb|cc";
  5. String[] strArray = s.split("|"); // ["aa","bb","cc"]
  6. for(int x = 0; x < strArray.length; x++) {
  7. System.out.println(strArray[x]); // aa bb cc
  8. }
  9. }
  10. }

第六章 static关键字

6.1 概述

关于 static 关键字的使用,它可以用来修饰的成员变量和成员方法,被修饰的成员是属于类的,而不是单单是属
于某个对象的。也就是说,既然属于类,就可以不靠创建对象来调用了。

6.2 定义和使用格式

类变量

当 static 修饰成员变量时,该变量称为类变量。该类的每个对象都共享同一个类变量的值。任何对象都可以更改该类变量的值,但也可以在不创建该类的对象的情况下对类变量进行操作。

定义格式:
  1. static 数据类型 变量名;

比如说,基础班新班开班,学员报到。现在想为每一位新来报到的同学编学号(sid),从第一名同学开始,sid为1,以此类推。学号必须是唯一的,连续的,并且与班级的人数相符,这样以便知道,要分配给下一名新同学的学号是多少。这样我们就需要一个变量,与单独的每一个学生对象无关,而是与整个班级同学数量有关。所以,我们可以这样定义一个静态变量numberOfStudent,代码如下:

  1. public class Student {
  2. private String name;
  3. private int age;
  4. // 学生的id
  5. private int sid;
  6. // 类变量,记录学生数量,分配学号
  7. public static int numberOfStudent = 0;
  8. public Student(String name, int age){
  9. this.name = name;
  10. this.age = age;
  11. // 通过 numberOfStudent 给学生分配学号
  12. this.sid = ++numberOfStudent;
  13. }
  14. // 打印属性值
  15. public void show() {
  16. System.out.println("Student : name=" + name + ", age=" + age + ", sid=" + sid );
  17. }
  18. }

静态方法

当static修饰成员方法时,该方法称为类方法 。静态方法在声明中有static ,建议使用类名来调用,而不需要创建类的对象。调用方式非常简单。

定义格式:
  1. 修饰符 static 返回值类型 方法名 (参数列表){
  2. // 执行语句
  3. }

静态方法调用的注意事项:
  • 静态方法可以直接访问类变量和静态方法。
  • 静态方法不能直接访问普通成员变量或成员方法。反之,成员方法可以直接访问类变量或静态方法。
  • 静态方法中,不能使用this关键字。

小贴士:静态方法只能访问静态成员。

6.3 静态原理图解

static 修饰的内容:

  • 是随着类的加载而加载的,且只加载一次。
  • 存储于一块固定的内存区域(静态区),所以,可以直接被类名调用。
  • 它优先于对象存在,所以,可以被所有对象共享。

1.3 Java基础--常用API第一部分 - 图1

6.4 静态代码块

  • 静态代码块:定义在成员位置,使用static修饰的代码块{ }。
    • 位置:类中方法外。
    • 执行:随着类的加载而执行且执行一次,优先于main方法和构造方法的执行。
  • 格式:
  1. public class ClassName{
  2. static {
  3. // 执行语句
  4. }
  5. }

作用:给类变量进行初始化赋值。用法演示,代码如下:

  1. public class Game {
  2. public static int number;
  3. public static ArrayList<String> list;
  4. static {
  5. // 给类变量赋值
  6. number = 2;
  7. list = new ArrayList<String>();
  8. // 添加元素到集合中
  9. list.add("张三");
  10. list.add("李四");
  11. }
  12. }

小贴士:
static 关键字,可以修饰变量、方法和代码块。在使用的过程中,其主要目的还是想在不创建对象的情况下,去调用方法。下面将介绍两个工具类,来体现static方法的便利。

第七章 Arrays类

7.1 概述

java.util.Arrays此类包含用来操作数组的各种方法,比如排序和搜索等。其所有方法均为静态方法,调用起来非常简单。

7.2 操作数组的方法

  • public static String toString(int[] a) :返回指定数组内容的字符串表示形式。
  • public static void sort(int[] a) :对指定的 int 型数组按数字升序进行排序。

第八章 Math类

8.1 概述

java.lang.Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。类似这样的工具类,其所有方法均为静态方法,并且不会创建对象,调用起来非常简单。

8.2 基本运算的方法

  • public static double abs(double a) :返回 double 值的绝对值。
  • public static double ceil(double a) :返回大于等于参数的最小的整数。
  • public static double floor(double a) :返回小于等于参数最大的整数。
  • public static long round(double a) :返回最接近参数的 long。(相当于四舍五入方法)