Java API(一)
一、API
- Java API 是一本程序员的字典。我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可,通过查询 API 的方式学习 使用Java 提供的类
二、Sacnner类
-
什么是Scanner类
-
指的是一个可以解析基本类型和字符串的简单文本扫描器
-
例如下面的代码能够从
System.in中读取一个数 。System.in 系统输入指的是通过键盘录入数据 -
Scanner sc = new Scanner(System.in); int i = sc.nextInt();
-
-
引用类型使用步骤
- 导包
import 包名.类名- 如
java.util.Scanner; - 若需要使用的目标类和当前类位于同一个包下,则可以省略导报包语句
- 只有
java.lang包下的内容不需要导包,其他的包都需要import语句
- 创建
类名称 对象名 = new 类名称(参数列表)- 如
Scanner sc = new Scanner(System.in);//创建键盘录入数据的对象
- 调用
变量名.方法名()int i = sc.nextInt(); // 接收一个键盘录入的整数String str = sc.next();// 接收键盘录入的字符串
- 导包
三、匿名对象【了解】
- 概念:创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量。虽然是创建对象的简化写法,但是应用
场景非常有限 - 格式:
new 类名(参数列表)- 与标准格式
类名称 对象名 = new 类名称()比较,只有右边部分
- 与标准格式
- 举例:
new Scanner(System.in); - 注意:
- 匿名对象只能使用一次,第二次使用需要重新创建
- 若一个对象只需要使用唯一一次则可以用匿名对象
四、Random类
-
什么是Random类:
-
此类的实例用于生成伪随机数
-
如下面的代码能够得到一个随机数
-
Random r = new Random(); int i = r.nextInt();
-
-
Random使用步骤
- 导包:
import java.util.Random; - 创建:
Random r = new Random();//小括号中可留空 - 调用:
int num = r.nextInt();,调用得到一个随机的int数字(范围是int)- 创建一个 Random 对象,每次调用 nextInt() 方法,都会生成一个随机数
int num = r.nextInt(3);调用得到一个随机的int数字(参数代表范围,左闭右开),实际含义是[0,3)
- 导包:
五、ArrayList类
1. 引入——对象数组
-
定义一个数组,用来存储3个Person对象
-
public class Person { private String name; private int age; //后面是getName,setName,getAge,setAge,篇幅有限不写了 -
public static void main(String[] args) { // 首先创建一个长度为3的数组,里面用来存放Person类型的对象 Person[] array = new Person[3]; Person one = new Person("学生1", 18); Person two = new Person("学生2", 28); Person three = new Person("老师", 38); // 将one当中的地址值赋值到数组的0号元素位置 array[0] = one; System.out.println(array[0]); // 地址值 System.out.println(array[0].getName()); // 学生1 } } -
到目前为止,我们想存储对象数据,选择的容器,只有对象数组。而数组的长度是固定的,无法适应数据变化的需求。为了解决这个问题,**Java提供了另一个容器 java.util.ArrayList 集合类,让我们可以更便捷的存储和操作对象数据。 **
-
2. 什么是ArrayList类
- java.util.ArrayList 是大小可变的数组的实现,存储在内的数据称为元素。此类提供一些方法来操作内部存储的元素。 ArrayList 中可不断添加元素,其大小也自动增长。
3. ArrayList使用步骤
-
查看类
java.util.ArrayList <E>,该类需要 import导入使后使用<E>表示一种指定的数据类型,叫做泛型。E 取自Element(元素)的首字母。在出现 E 的地方,我们使用一种引用数据类型将其替换即可,表示我们将存储哪种引用类型的元素。代码如 :ArrayList<String>,ArrayList<Student>- 泛型:装在集合中的所有元素全是统一的一种什么类型
- 注意:繁星只能说引用类型,不能是基本类型
-
查看构造方法
public ArrayList(),构造一个内容为空的集合- 基本格式:
ArrayList<String> list = new ArrayList<>();。在JDK 7后,右侧泛型的尖括号之内可以留空,但是<>仍然要写。
-
查看成员方法
-
public boolean add(E e),- 添加用
集合名.add(添加内容)
- 添加用
-
// 创建一个ArrayList集合,集合的名称是list,里面装的全都是String字符串类型的数据 ArrayList<String> list = new ArrayList<>(); System.out.println(list); // 得到[] // 向集合当中添加一些数据,需要用到add方法。 list.add("孙行者"); System.out.println(list); // 得到:[孙行者] list.add("行者孙"); list.add("者行孙"); System.out.println(list); // 得到:[孙行者,行者孙者行孙] // list.add(100); // 错误写法!因为创建的时候尖括号泛型已经说了是字符串,添加进去的元素就必须都是字符串才行 } }
-
-
注意事项:
- 对于ArrayList集合来说,直接打印得到的不是地址值,而是内容。
- 如果内容为空,得到的是中括号[]
4. ArrayList常用方法
对于元素的操作,基本体现在增、删、查。常用的方法有:
- 增:
public boolean add(E e)- 向集合中添加元素,将指定的元素添加到此集合的尾部
- 参数 E e ,在构造ArrayList对象时,
指定了什么数据类型,那么 add(E e) 方法中,只能添加什么数据类型的对象。
- 查:
public E get(int index)- 从集合当中获取元素,参数是索引编号,返回值是对应的元素
- 删:
public E remove(int index)- 从集合当中删除元素,参数是索引编号,返回值是被删除的元素
- 长度:
public int size()- 获取集合的尺寸长度,返回值是集合中包含的元素个数
ArrayList的遍历:
-
遍历可以用for循环
-
for (int i = 0; i < er.size(); i++) { System.out.println(er.get(i)); }
-
5. ArrayList集合存储基本数据类型
ArrayList对象不能存储基本类型,只能存储引用类型的数据。类似
-
包装类型、引用类型都位于
java.lang包下 -
存储基本数据类型转换为的包装类型表格如下
-
基本类型 包装类 byte Byte short Short int Integer long Long float Float double Double char Character boolean Boolean -
只有 Integer 和 Character 需要特殊记忆,其他基本类型只是首字母大写即可
从JDK 1.5+开始,支持自动装箱、自动拆箱。
- 自动装箱:基本类型 --> 包装类型
- 自动拆箱:包装类型 --> 基本类型
六、String类
1. String类概述
- 'java.lang.String' 类代表字符串。Java程序中所有的字符串文字(例如 "abc" )都可以被看作是实现此类的实例
2. String类特点
- 字符串的内容永不可变,若二次赋值,则改变地址,内容不变
- 因为字符串不会改变,所以字符串可以共享使用
- 字符串效果上相当于是'char[]'字符数组,但底层原理是'byte[]'字节
3. 创建字符串
常见有4种方法:三种构造方法,一种直接创建。
-
三种构造方法:
-
public String() 创建一个空白字符串,不包含任何内容 public String(char[] array) 根据字符数组的内容创建对应字符串 public String(byte[] array) 根据字节数组的内容创建对应字符串 -
public static void main(String[] args){ //使用空参构造 String str1 = new String(); //字符数组的内容创建字符串 char[] charArry = {'A','B','C'}; String str2 = new String(charArry); //字节数组的内容创建字符串 byte[] byteArray = {1,2,1}; String str2 = new String(byteArray); } -
一种直接创建:
String str = "Hello";。直接写上双引号就是字符串对象
4. 常量池(在堆中)
引入:
String str1 = 'abc';
char[] charArry = {'a','b','c'};
String str2 = new String(charArry);
System.out.println(str1 == str2);//false
为什么结果是false?
- 对基本类型来说,== 是进行数值的比较
- 对引用类型来说,== 是进行地址值的比较
- 双引号直接写的字符串在常量池中,new的不在池当中
5. String类常用方法
-
比较的方法:若要进行字符串内容的比较,可以用下面两个方法
-
public boolean equals (Object obj):将字符串与指定对象进行比较 ,只有参数是内容相同的字符串才返回true- 如
System.out.println(str1.equals(str2));
- 如
-
注意事项:
- 任何对象都能用Object进行接收
- equals方法具有对称性,a.equals(b)与b.equals(a)效果一样
- 若比较双方为一个常量一个变量,推荐把常量字符串写在前面
- 如"abc".equals(str);
-
public boolean equalsIgnoreCase (String str):将此字符串与指定对象进行比较,忽略大小写
-
-
获取的方法:常用的有
-
public int length (),返回此字符串的长度- 例:
str1.ength
- 例:
-
public String concat (String str),将指定的字符串连接到该字符串的末尾-
String str1 = "Hello"; String str2 = "World"; String str3 = str1.concat(str2);//HelloWorld
-
-
public char charAt (int index),返回指定索引处的 char值- 例:
char ch = "Hellow".charAt(1);//e
- 例:
-
public int indexOf (String str),返回指定子字符串第一次出现在该字符串内的索引 ,没有就返回-1-
String original = "HelloWorld"; int indexnum = original.indexOf("llo"); //为2
-
-
-
截取的方法:
-
public String substring (int beginIndex),返回一个子字符串,从beginIndex开始截取字符串到字符串结尾-
String str1 = "HelloWorld"; String str2 = str1.substring(5); //World
-
-
public String substring (int begin, int end),返回一个子字符串,从begin到end截取字符串。含begin,不含end-
String str1 = "HelloWorld"; //HelloWorld String str2 = str1.substring(4,7); //owo
-
-
-
转换的方法:
-
public char[] toCharArray (),将此字符串转换为新的字符数组作为返回值char[] char = "Hello".toCharArray()//转化为字符数组,可以进行遍历的操作
-
public byte[] getBytes (),获得当前字符串底层的字节数组byte[] bytes = "abc".getBytes(); 转化为对应的ASCII码数字
-
public String replace (CharSequence oldString, CharSequence newString),将旧字符串替换 成为新字符串,返回新字符串-
charSequeue意为可以接受字符类型
-
String str1 = "Hello World"; String str2 =str1.replace("l","@"); System.out.println(str2); //He@@o Wor@d
-
-
-
分割字符串的方法:
-
public String[] split(String regex),将此字符串按照给定的regex(规则)拆分为字符串数组-
String str1 = "Hello World"; String[] array1 = str1.split(" ");//以空格为界限,拆分成字符串数组
-
-
注意:不能以英文句号为规则拆分!句号在正则表达式中有特殊含义。若要使用,需要改成
\\.
-
七、static关键字
1.概述
- static 关键字,可以用来修饰的成员变量和成员方法。被修饰的内容是属于所在的类的,而不再属于对象自己。也就是说,被修饰的成员是属于类的,可以不靠创建对象的方式进行调用。凡是属于这一类的对象,都能共享同一份数据
2. 定义和格式
-
类变量:使用 static关键字修饰的成员变量
- 该类的每个对象都共享同一个类变量的值。任何对象都可以更改
该类变量的值,也可以在不创建该类的对象的情况下对类变量进行操作 static 数据类型 变量名
- 该类的每个对象都共享同一个类变量的值。任何对象都可以更改
-
静态方法 :使用 static关键字修饰的成员方法,就是静态方法
-
修饰符 static 返回值类型 方法名 (参数列表){ // 执行语句 } -
如果没有static关键字不是静态方法,就必须先创建对象,再通过对象才能使用它
-
Myclass obj = new myClass();//先创建对象,然后才能使用没有static关键字的内容 obj.method();
-
-
静态方法可以通过对象名调用,也可以通过类名称调用(推荐类名称调用)
-
obj.methodStatic(); -
MyClass.methodStatic();//MyClass是类名,推荐使用这个
-
-
静态方法调用的注意事项
- 静态方法可以直接访问类变量和静态方法
- 静态方法不能直接访问非静态,原因是内存中先有静态内容,后有非静态内容
- 静态方法中,不能使用this关键字 原因是this代表当前对象,通过谁调用的方法,谁就是当前对象
-
-
静态原理
- static修饰的内容:
- 是随着类的加载而加载的,且只加载一次
- 存储于一块固定的内存区域(静态区),所以,可以直接被类名调用
- 它优先于对象存在,所以,可以被所有对象共享
- static修饰的内容:
-
静态代码块:定义在成员位置,使用static修饰的代码块
-
位置:类中方法外。
-
执行:随着类的加载而执行且执行一次,优先于main方法和构造方法的执行
-
格式 :
-
public class ClassName{ static { // 执行语句 } } -
作用:给类变量进行初始化赋值
-
public class Game { public static int number; public static ArrayList<String> list; static { // 给类变量赋值 number = 2; list = new ArrayList<String>(); // 添加元素到集合中 list.add("张三"); list.add("李四"); } } -
static 关键字,可以修饰变量、方法和代码块。在使用的过程中,其主要目的还是想在不创建对象的情况下,去调用方法。
-
-
-
八、Array类
1. 概述
java.util.Arrays此类包含用来操作数组的静态方法,比如排序和搜索等。
2. 操作数组的方法
-
public static String toString(int[] a):返回指定数组内容的字符串表示形式-
public static void main(String[] args) { // 定义int 数组 int[] arr = {2,34,35,4,657,8,69,9}; // 打印数组,输出地址值 System.out.println(arr); // [I@2ac1fdc4 // 数组内容转为字符串 String s = Arrays.toString(arr); // 打印字符串,输出内容 System.out.println(s); // [2, 34, 35, 4, 657, 8, 69, 9] }
-
-
public static void sort(int[] a):对指定的 int 型数组按数字升序进行排序 。若参数是字符串,则按照字母升序;若是自定义的类,则该类需要有Comparable或Comparator接口的支持-
public static void main(String[] args) { // 定义int 数组 int[] arr = {24, 7, 5, 48, 4, 46, 35, 11, 6, 2}; System.out.println("排序前:"+ Arrays.toString(arr)); // 排序前:[24, 7, 5, 48, 4, 46, 35, 11, 6, 2] // 升序排序 Arrays.sort(arr); System.out.println("排序后:"+ Arrays.toString(arr));// 排序后:[2, 4, 5, 6, 7, 11, 24, 35, 46,48] }
-
九、Math类
1. 概述
- java.lang.Math 类包含用于执行基本数学运算的方法。其所有方法均为静态方法,并且不会创建对象,调用起来非常简单
2. 基本运算的方法
-
返回 double 值的绝对值 :
public static double abs(double a)-
double d1 = Math.abs(‐5); //d1的值为5 double d2 = Math.abs(5); //d2的值为5
-
-
返回大于等于参数的最小的整数:
public static double ceil(double a)-
double d1 = Math.ceil(3.3); //d1的值为 4.0 double d2 = Math.ceil(‐3.3); //d2的值为 ‐3.0 double d3 = Math.ceil(5.1); //d3的值为 6.0
-
-
返回小于等于参数最大的整数 :
public static double floor(double a)-
double d1 = Math.floor(3.3); //d1的值为3.0 double d2 = Math.floor(‐3.3); //d2的值为‐4.0 double d3 = Math.floor(5.1); //d3的值为 5.0
-
-
返回最接近参数的 long。(相当于四舍五入方法) :
public static long round(double a)-
long d1 = Math.round(5.5); //d1的值为6.0 long d2 = Math.round(5.4); //d2的值为5.0
-

浙公网安备 33010602011771号