• Java学习之常用类篇


    Java学习之常用类篇

    0x00 前言

    在开发中难免调用到各种api来开发程序,那就先来学习一下api的一些相关概念。

    0x01 api的使用

    首先还是得来看看api的一个解释。

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

    这里复制了一段网上采集的对于api的解释。

    可以得知,这个api是jdk提供给我们的使用类的一个说明文档。

    api文档的使用步骤。

    1.首先查看包,该类在哪个包下面,如果是在java.lang包不需要导入,可以直接使用,如果是其他的包下就需要导入。

    2.查看类的解释与说明。

    3.学习该类的构造方法

    0x02 Scanner类

    Scanner这是一个可以解析基本
    类型和字符串的简单文本扫描器。

    首先我们需要导入一个类

    improt java.util.Scanner

    然后就是使用构造方法,实例化该类的对象。

    Scanner sc = new Scanner(System.in);

    接下来就可以去调用他的方法了,先来查看一下该类的方法,对其进行调用。

    列出几个方法:

     byte nextByte() 
              将输入信息的下一个标记扫描为一个 byte。 
     byte nextByte(int radix) 
              将输入信息的下一个标记扫描为一个 byte。 
     double nextDouble() 
              将输入信息的下一个标记扫描为一个 double。 
     float nextFloat() 
              将输入信息的下一个标记扫描为一个 float。 
     int nextInt() 
              将输入信息的下一个标记扫描为一个 int。 
    
    

    我们这里就来接收一下键盘输入的数字,只有netxtInt方法。

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

    这里的system.in系统输入是指通过键盘录入数据。

    对于只使用接受一次的方法,我们就可以使用到匿名对象来进行接收。

    格式:

    new Scanner(System.in);

    注意事项:

    一个匿名对象,只能使用一次

    匿名的对象也可以作为方法的参数或者是返回值进行使用

    public class Input {
    
        public static void main(String[] args) {
            
            input(new Scanner(System.in));
        }
    
        private static void input(Scanner sc) {
            System.out.println(sc);
        }
    }
    
    

    0x03 Random 类

    这是一个生成伪随机数的类,在使用前,肯定是要先看看他的构造方法。

    Random() 
              创建一个新的随机数生成器。 
    Random(long seed) 
              使用单个 long 种子创建一个新的随机数生成器。 
    
    

    看完构造方法就可以实例化一个对象了。

    Random random = new Random();

    实例化完一个对象就可以使用,实例化调用的方法。

    int i = random.nextInt();

    这样就使用到了random类生成了一个随机值,赋值到了i变量里面

    public class Input {
    
        public static void main(String[] args) {
            Random random = new Random();
            int i = random.nextInt();
            System.out.println(i);
        }
    }
    

    0x04 ArrayList类

    前面接触的数组,只能存储固定的长度和固定的类型。而为了解决这个问题,java提供了一个容器 arrayList集合类,让我们可以比较便捷的存储和操作对象。

    首先也还是查看一下构造方法。

    java.util.ArrayList :该类需要 import导入使后使用。
    ,表示一种指定的数据类型,叫做泛型。 E ,取自Element(元素)的首字母。在出现 E 的地方,我们使
    用一种引用数据类型将其替换即可,表示我们将存储哪种引用类型的元素。

    ArrayList() 
              构造一个初始容量为 10 的空列表。 
    ArrayList(Collection<? extends E> c) 
              构造一个包含指定 collection 的元素的列表,这些元素是按照该 collection 的迭代器返回它们的顺序排列的。 
    ArrayList(int initialCapacity) 
              构造一个具有指定初始容量的空列表。 
    

    实例化对象:

     public class Input {
    
        public static void main(String[] args) {
            ArrayList<String> list = new ArrayList<>();
    
            String s1 ="小明";
            String s2 ="小红";
            String s3 ="小绿";
            list.add(s1);
            list.add(s2);
            list.add(s3);
            System.out.println(list);
        }
    }
    

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

    public boolean add(E e) :将指定的元素添加到此集合的尾部。

    public E remove(int index) :移除此集合中指定位置上的元素。返回被删除的元素。

    public E get(int index) :返回此集合中指定位置上的元素。返回获取的元素。

    public int size() :返回此集合中的元素数。遍历集合时,可以控制索引范围,防止越界。

    那么就都来试试

    {
    
        public static void main(String[] args) {
            ArrayList<String> list = new ArrayList<>();
    
            String s1 ="小明";
            String s2 ="小红";
            String s3 ="小绿";
            list.add(s1);
            list.add(s2);
            list.add(s3);
            System.out.println("get"+list.get(0));
            System.out.println("get"+list.get(1);
            System.out.println("get"+list.get(2));
            System.out.println("zise"+list.size());
    
            for (int i = 0; i < list.size(); i++) {
                System.out.println(list.get(i));
            }
            
        }
    }
    

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

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

    在集合里面也可以存储对象

    public class Input {
    
        public static void main(String[] args) {
            ArrayList<Student> list = new ArrayList<>();
            Student s1 = new Student();
            Student s2 = new Student();
            Student s3 = new Student();
            list.add(s1);
            list.add(s2);
            list.add(s3);
            System.out.println(list);
    
    
        }
    }
    
    

    0x06 static

    对于static关键字得时候,他可以用来修饰成员遍历和成员方法,被修饰得成员是属于类得,而不是单单输入某个对象里面。也就是说,既然属于类,就可以不靠创建对象来调用。

    当被static修饰得成员时,该变量被叫做类变量。这个类每个对象都共享同一个类变量得值。任何对象都没有改变这个类变量得值,但也可以在不创建得情况下对这个类变量进行操作。

    定义静态变量格式:

    static 数据类型 变量名;

    static int num;

    定义静态方法格式:

    public static void method(){
        System.out.println("123")
    }
    

    静态方法调用的注意事项:
    1.静态方法可以直接访问类变量和静态方法。

    2.静态方法不能直接访问普通成员变量或成员方法。反之,成员方法可以直接访问类变量或静态方法。

    静态方法中,不能使用this关键字。

    4.静态方法只能访问静态成员。

    static修饰后的成员需要使用类名直接访问,和前面的接口静态方法类似。

    类名.变量名
    
    类名.静态方法
    
    

    0x07 Array类

    Array包含用来操作数组的各种方法,比如排序和搜索等。其所有方法均为静态方法,调用起来
    非常简单。也就是说不需要实例化对象,可以直接通过类名来调用他。

    查看一下该类的一个静态方法的使用

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

    代码示例:

     public static void main(String[] args) {
        int[]  arr = {1,29,3,3,64};
        String s = Arrays.toString(arr);
        System.out.println(s);
        Arrays.sort(arr);
            String a = Arrays.toString(arr);
            System.out.println(a);
    
        }
    

    0x08 Math类

    math这是用于数学运算的类,这里面的一些方法也都是静态方法,所以也不需要实例化对象,那么我们也不需要学习他的构造方法,直接类名调用即可。

    查看他的一些方法使用

    abs(double a) 
              返回 double 值的绝对值。
            
    

    代码:

     public static void main(String[] args) {
            double abs = Math.abs(-13.3);
            double ceil = Math.ceil(93.3);
            System.out.println(abs);
            System.out.println(ceil);
    
        }
    

    这些方法都比较简单,至于这个向上取整的运用,这里可以来说一下,例如我们开发一个类似于御剑的目录扫描器,我们有23个字典需要分开5个线程去请求,每个线程都请求4个字典的话,那么还会多出三个字典没有线程去请求,就会把多出来这个字典给忽略掉,如果被忽略的这个字典刚刚好是后台的路径呢?所以在工具开发当中这些都是要注意的点,我们需要再多开一个线程,去请求多出来的一些数据,那么这时候就可以使用到向上取整。

    0x09 结尾

    开发程序中,总是会用到各种类,所以不能全靠死记,要学会怎么去查看手册去开发个程序。

  • 相关阅读:
    linux内存-swap
    linux内存-buffer和cache
    Linux内存-内存管理机制oom_killer
    HTTPS(二)证书合法性校验
    HTTPS(一)基础及连接建立
    docker镜像(一)overlayfs
    DNS(三)全局流量调度
    建造者模式(Builder Pattern)
    抽象工厂模式(Abstract Factory)
    工厂方法模式(Factory Method Pattern)
  • 原文地址:https://www.cnblogs.com/nice0e3/p/13427318.html
Copyright © 2020-2023  润新知