Scanner类
功能
可以实现键盘输入数据到程序中。
引用类型的一般使用步骤:
1、导包:
    import 包路径.类名称
 如果需要使用的目标类和当前类位于同一个包,则可以省略导包语句。只有java.lang包下的内容不需要导包,其他的包都需要import语句
2、创建:
    类名称 对象名 = new 类名称(参数列表);
3、使用:
 对象名.成员方法名()
使用
- 导包: - import java.util.Scanner
- 构造方法: - Scanner sc = new Scanner(System.in);//没有无参构造,参数System.in表示从键盘读取输入
- 成员方法: - sc.nextInt();//读入键盘输入的整数值
- sc.next();//读入键盘输入的字符串
 
代码演示
1.求和
键盘录入两个数据并求和
| 1 | package cn.shenzc.java; | 

2.求三个数中最大值
键盘录入三个数据并获取最大值
| 1 | package cn.shenzc.java; | 

匿名对象
概念
创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量。虽然是创建对象的简化写法,但是应用
场景非常有限。
格式
| 1 | new 类名(参数列表); | 
比如:new Scanner(System.in);
应用场景
- 创建匿名对象直接调用方法,没有变量名。 - 1 - new Scanner(System.in).nextInt(); 
- 一旦调用两次方法,就是创建了两个对象,造成浪费,请看如下代码。 - 1 
 2- new Scanner(System.in).nextInt(); 
 new Scanner(System.in).nextInt();- 一个匿名对象,只能使用一次。 
- 匿名对象可以作为方法的参数和返回值。 - 作为参数 - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12- class Test { 
 public static void main(String[] args) {
 // 普通方式
 Scanner sc = new Scanner(System.in);
 input(sc);
 //匿名对象作为方法接收的参数
 input(new Scanner(System.in));
 }
 public static void input(Scanner sc){
 System.out.println(sc);
 }
 } 
- 作为返回值 - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13- class Test2 { 
 public static void main(String[] args) {
 // 普通方式
 Scanner sc = getScanner();
 }
 public static Scanner getScanner(){
 //普通方式
 //Scanner sc = new Scanner(System.in);
 //return sc;
 //匿名对象作为方法返回值
 return new Scanner(System.in);
 }
 } 
 
Random类
功能
此类的实例用于生成伪随机数。
使用
- 导包: - import java.util.Random
- 构造方法: - public Random():
- public Random(long seed):同一种子生成随机数是一样的
 
- 成员方法: - public int nextInt():返回伪随机整数。
- public int nextInt(int n):返回一个伪随机数,范围在0(包括)和指定值n(不包括)之间的
 int 值。
 
代码演示
1.生成三个十以内的整数
| 1 | package cn.shenzc.java; | 

2.猜数字小游戏
游戏开始时,会随机生成一个1-100之间的整数
number。玩家猜测一个数字guessNumber,会与number作比
较,系统提示大了或者小了,直到玩家猜中,游戏结束。
| 1 | package cn.shenzc.java; | 

ArrayList集合类
引入—对象数组
使用学生数组,存储三个学生对象,代码如下:
| 1 | // Student | 
| 1 | package cn.shenzc.java; | 

到目前为止,我们想存储对象数据,选择的容器,只有对象数组。而数组的长度是固定的,无法适应数据变化的需
求。为了解决这个问题,Java提供了另一个容器java.util.ArrayList 集合类,让我们可以更便捷的存储和操作对
象数据。
什么是ArrayList
java.util.ArrayList 是大小可变的数组的实现,存储在内的数据称为元素。此类提供一些方法来操作内部存储的元素。  ArrayList 中可不断添加元素,其大小也自动增长。
数组的长度不可以发生改变,但是ArrayList集合的长度是可以随意变化的。

上图的 <E> 表示泛型。
泛型只能是引用类型,不能是基础类型。
泛型就是定义一种模板,例如ArrayList<T>,然后在代码中为用到的类创建对应的ArrayList<类型>
| 1 | public class ArrayList<T> { | 
| 1 | // 创建可以存储String的ArrayList: | 
对于ArrayList来说,直接打印得到的不是地址值,而是其中的内容;如果ArrayList为空,则得到的是:[]
使用
- 导包:java.util.ArrayList
- 构造方法:public ArrayList()- ArrayList<E> list = new ArrayList<E>();
- 在JDK 7后,右侧泛型的尖括号之内可以留空,但是<>仍然要写。简化格式:- ArrayList<E> list = new ArrayList<>();
 
 
- 成员方法:见下
常用方法
方法定义
public boolean add(E e):向集合中添加元素。参数类型和泛型一致。
 对于ArrayList的add方法来说,添加元素一定是成功的,返回值可用可不用,但是对于其他集合来说,添加元素不一定成功
public E  get(int index):从集合中获取元素,参数是索引编号。
public E  remove(int index):从集合中删除元素。
public int size():获取集合的尺寸长度,返回值时集合中元素个数。
代码演示
| 1 | package cn.shenzc.java; | 

如何存储基本数据类型
ArrayList对象不能存储基本类型,只能存储引用类型的数据。类似
包装类型是可以的。所以,想要存储基本类型数据, <> 中的数据类型,必须转换后才能编写,转换写法如下:
| 基本类型 | 基本包装类型 | 
|---|---|
| byte | Byte | 
| short | Short | 
| int | Integer | 
| char | Character | 
| long | Long | 
| float | Float | 
| double | Double | 
| boolean | Boolean | 
代码演示
1.数值添加到集合
生成6个1~33之间的随机整数,添加到集合,并遍历
| 1 | package cn.shenzc.java; | 

2.对象添加到集合
自定义4个学生对象,添加到集合,并遍历
| 1 | package cn.shenzc.java; | 

String类
String类概述
概述
java.lang.String类代表字符串。Java程序中所有的字符串文字(例如”abc” )都可以被看作是实现此类的实
例。
类String中包括用于检查各个字符串的方法,比如用于比较字符串,搜索字符串,提取子字符串…
字符串的特点
- 字符串的内容永不可变 - String s1 = "abc"; s1 += "d"; System.out.println(s1); // "abcd" // 内存中有"abc","abcd"两个对象,s1从指向"abc",改变指向,指向了"abcd"。- 1 
 2
 3
 4
 5
 6
 7
 2. 因为字符串不可变,所以字符串可以共享使用
 - ```java
 String s1 = "abc";
 String s2 = "abc";
 // 内存中只有一个"abc"对象被创建,同时被s1和s2共享。
 
- 字符串效果上相当于char数组,但是底层实现是byte数组 - "abc"等效于- char[] data={ 'a' , 'b' , 'c' }。
- String str = "abc"; 等价于 char[] data = {'a','b','c'}; String str = new String(data);- 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 ## 使用
 - 导包:String类位于`java.lang`包下,无需导包即可使用。
 - 构造方法:
 - `public String()`:初始化创建新的String对象,以使其表示空字符串。
 - `public String(char[] values)`:通过当前参数的字符数组来创建新的字符串。
 - `public String(byte[] values)`:通过当前参数的byte数组来创建新的字符串。
 - 成员方法:见下
 ## 常用方法
 ### 判断功能的方法
 1. `public boolean equals(Object anObject):`将此字符串与指定对象进行比较。当且仅当指定对象不为空且为字符序列与比较字符串一致的String对象时,返回true;其他情况返回false。
 2. `public boolean equalsIgnoreCase(String str):`将此字符串于指定字符串进行比较。
 ### 代码演示
 ```java
 package cn.shenzc.java;
 public class TestString1 {
 public static void main(String[] args) {
 // 三种构造方法
 String str1 = new String(); // 创建空字符串
 System.out.println("str1 = " + str1);
 char[] data = {'d', 'a', 't', 'a'};
 String str2 = new String(data);
 System.out.println("str2 = " + str2);
 byte[] number = {97, 98}; // 数字转换成对应的ASCII值
 String str3 = new String(number);
 System.out.println("str3 = " + str3);
 // 直接生成字符串
 String str4 = "Hello Java!";
 // 判断功能的方法
 System.out.println(str4.equals("Hello Java"));
 System.out.println("Hello java!".equals(str4));// 推荐写法,因为对象可能为null,会抛出NPE
 System.out.println("hello java!".equalsIgnoreCase(str4));
 }
 }
 

获取功能的方法
- 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(不包括)之间的子字符串。
代码演示
| 1 | package cn.shenzc.java; | 

转换功能的方法
- public char[] toCharArray():将此字符串转换为新的字符数组。
- public byte[] getBytes():使用平台的默认字符集将该 String编码转换为新的字节数组。
- public String replace(CharSequence target, CharSequence replacement):将与target字符串匹配的子字符串用replacement替换。
代码演示
| 1 | package cn.shenzc.java; | 

分割功能的方法
- public String[] split(String regex):将字符串按照指定的regex(规则)拆分为字符串数组。
代码演示
| 1 | package cn.shenzc.java; | 

字符串常量池
由于字符串是不可变的,所以字符串是可以共享的,由此引出字符串常量池。只要是直接用双引号生成的字符串都位于字符串常量池中,是可以共享的。
| 1 | public class TestStringPool { | 

对于基本类型来说,==是进行值比较;对于引用类型来说是地址比较。

代码演示
1.拼接字符串
定义一个方法,把数组{1,2,3}按照指定格式拼接成一个字符串。格式参照如下:
[word1#word2#word3]。
| 1 | package cn.shenzc.java; | 

2.统计字符个数
键盘录入一个字符串,统计字符串中大小写字母及数字字符个数。
| 1 | package cn.shenzc.java; | 

static关键字
概述
static 关键字,可以用来修饰成员变量和成员方法,被修饰的成员是属于类的,而不是单单是属
于某个对象的。也就是说,既然属于类,就可以不靠创建对象来调用了。
static修饰成员变量
当 static 修饰成员变量时,该变量称为类变量。该类的每个对象都共享同一个类变量的值。任何对象都可以更改
该类变量的值,也可以在不创建该类的对象的情况下对类变量进行操作。
定义格式:
| 1 | static 数据类型 变量名; | 
static修饰成员方法
用static修饰的成员方法,叫作类方法,更习惯叫作静态方法。静态方法在声明中有static ,建议使用类名来调用,而不需要创建类的对象。调用方式非常简单。
定义格式:
| 1 | 修饰符 static 返回值 方法名(参数列表) { | 
注意事项
- 静态不能直接访问非静态内容,但可以访问静态内容(静态变量和方法)。因为在内存中先有静态内容,后有非静态内容。但是非静态的成员方法可以访问静态变量和方法。
- 对于本类当中的静态方法,可以省略类名称。
- 静态方法中不能使用this关键字。因为this代表当前对象。
- 推荐使用 类名.静态成员 的方法调用静态成员。
static修饰代码块
定义在成员位置,用static修饰的代码块叫作静态代码块。随着类的加载而执行且只执行一次,优先于main方法和构造方法的执行。其作用是给静态变量赋值。
| 1 | static { | 
数组工具类Arrays
概述
java.util.Arrays是一个与数组相关的工具类,提供了大量的静态方法,用来实现数组常见的操作,如搜索、排序。
常用方法
public static String toString(int[] arr):
将参数数组变成字符串。格式:[元素1,元素2,…]
| 1 | package cn.shenzc.java; | 

public static void sort(int[] arr):
按照默认升序对数组元素进行排序。
| 1 | package cn.shenzc.java; | 

代码演示
使用Arrays 相关的API,将一个随机字符串中的所有字符升序排列,并倒序打印。
| 1 | package cn.shenzc.java; | 

数学工具类Math
概述
java.lang.Math是数学相关的工具类,提供了大量的静态方法,完成与数学相关的操作。
常用方法
- public static double abs(double num):获取绝对值
- public static double ceil(double num):向上取整。返回大于等于参数的最小整数。
- public static double floor(double num):向下取整。返回小于等于参数的最小整数。
- public static long round(double num):四舍五入。






