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修饰的代码块

    • 位置:类中方法外。

    • 执行:随着类的加载而执行且执行一次,优先于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
      
posted @ 2020-05-18 09:07  弥漫s  阅读(148)  评论(0)    收藏  举报