JavaAPI_常用类

JavaAPI_常用类

API

API(Application Programming Interface)应用程序编程接口

  • 语言中提供的类、接口;
  • 对类、接口功能的说明文档。

基本数据类型包装类

Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类

即Java为每种基本类型提供了一个类,这些类被称为包装类。

/*
    基本数据类型        对应的包装类
    byte               Byte
    short              Short 
    int                Integer
    long               Long
    float              Float
    double             Double
    char               Character
    boolean            Boolean

  */

这些包装类分别封装了一个相应的基本数据类型,并为其提供了一系列操作方法。

以Integer包装类为例:

 public static void main(String[] args) {

        int num = 10;//一个int型整数
    
        //构造方法
        Integer num1 = new Integer(10);//把int型整数作为参数包装到Integer类的对象中
        System.out.println(num1.doubleValue());//输出转为double型

        Integer num2 = new Integer("15");//将字符串类型的值转换为int型
        System.out.println(num2);

        /*
        Integer类中提供很多的方法来对int类型进行操作
         */
        //转换进制方法
               System.out.println(Integer.toBinaryString(3));//十进制的整数转换为2进制
        System.out.println(Integer.toHexString(17));//十进制的整数转换为16进制
        System.out.println(Integer.toOctalString(12));//十进制的整数转换为8进制

        System.out.println(Integer.MAX_VALUE);//int型常量保持的最大值
        System.out.println(Integer.MIN_VALUE);//int型常量保持的最小值
        System.out.println(Integer.BYTES);//用于表示二进制补码二进制形式的 int值的字节数。
        System.out.println(Integer.SIZE);//用于表示二进制补码二进制形式的 int值的位数。

        //比较方法
        /*
        Integer num3 = Integer.valueOf(23);//
        Integer num4 = Integer.valueOf(22);
         */
        Integer num3 = new Integer(23);//创建一个Integer对象
        Integer num4 = new Integer(22);
        System.out.println(num3==num4);//== 用于引用类型比较时,比较的是对象内存地址是否相等
        System.out.println(num3.equals(num4));//equals()方法比较的是两个对象中具体包含的值是否相等 相等为true, 不相等为false
        System.out.println(num3.compareTo(num4));//值为-1 0 1,前者大输出1,相等输出0,前者小输出-1
        System.out.println(Integer.max(num3,num4));//取较大值
        System.out.println(Integer.min(num3,num4));//取较小值

        Integer n1 = new Integer(10);
        int n2 = n1.intValue();//取出对象中包含的具体的值
        long n3 = n1.longValue();
        System.out.println(n3);

        int n4 = Integer.parseInt("11");//parseInt(String s)将字符串参数解析为带符号的十进制整数。
        System.out.println(n4);

        //基本类型 转换为 引用类型
        Integer num7 = Integer.valueOf(10);
        Integer num8 = Integer.valueOf("10");
        System.out.println(num7==num8);//true

        //把数值转为字符串
        System.out.println(num8.toString());
        System.out.println(Integer.toString(10));


        //引用类型 转换为 基本类型
        int num5 = Integer.valueOf(num3);
        int num6 = num4.intValue();


    }

装箱和拆箱:

装箱

  • 自动将基本类型装换为包装类类型
  • 装箱的时候自动调用的是Integer的valueOf()方法

拆箱

  • 自动将包装类类型装换为基本数据类型
  • 拆箱的时候自动调用的是Integer的intValue()方法
public static void main(String[] args) {
        //构造方法
        Integer num1 = new Integer(10);//创建一个Integer对象,把int型整数作为参数包装到Integer类的对象中
        Integer num2 = Integer.valueOf(10);//基本类型 转换为 引用类型

        int num3 = num1.intValue();//取出对象中包含的具体的值
        int num4 = Integer.parseInt("10");//parseInt(String s)将字符串参数解析为带符号的十进制整数。

        /*
        自动装箱:把基本类型转为引用类型
         */
        int n = 10;
        Integer n1 = n;//自动调用valueOf()方法,valueOf():基本类型 转换为 引用类型
        /*
        自动拆箱:把引用类型转为基本类型
         */
        int n2 = n1;//自动调用intValue()方法,intValue():取出对象中包含的具体的值
        /*
        使用装箱(valueOf()) 在创建对象时,值如果在 -128~+127 之间,如果多个值相同,指向的是同一个地址;
                                                             如果值不在范围区内,则创建新对象。
        使用 new + 构造方法() 不管制是否在此区间,都会创建新对象
         */
    }

Object类

Object类是java中所有类的父类。

常用方法:

  • 将对象输出时,会调用toString()方法
  • 做比较时,会调用equals()方法,等同于 ==
  public static void main(String[] args) {

        /*
        Object类是java中所有类的父类
         */
        /*
        将对象输出时,会调用 toString()方法
        当类中没有定义toString()时,会默认调用父类(Object)中的toString。
        父类(Object)中的toString,将对象地址转为16进制的字符串输出,可以在类中重写Object类中的toString()
         public String toString() {
            return getClass().getName() + "@" + Integer.toHexString(hashCode());
           }
         public native int hashCode();
          native:调用本地方法,java语言不实现,调用操作系统实现
         */
        //创建一个People类,并重写Object类中的toString()方法
        People p = new People("jam",22);
        //调用People类中重写后的toString(),输出想要的 字符串
        System.out.println(p+"hello");


        /*
        Object类中的 equals() 比较对象地址是否相等,等同于 ==
        public boolean equals(Object obj) {
            return (this == obj);
          }
         */
        People p1 = new People("jam",22);
        People p2 = new People("jam",22);
        System.out.println(p1.equals(p2));
        System.out.println(p1==p2);

        /*
        其他类基本上都是重写了 equals() 比较的是内容是否相等
         */
        Integer a1 = 128;
        Integer a2 = 128;
        System.out.println(a1.equals(a2));//调用的是Integer类的equals(),比较的是值
        System.out.println(a1==a2);//128不在Integer范围区内,会创建Integer对象

    }

String类/StringBuffer类/StringBuilder类

String类

字符串是多个字符组成的字符序列,是常量(值是不能改变的)。

有两种创建形式:

  1. String s = “abc”;

​ 2.使用 new + 构造方法()创建

 public static void main(String[] args) {
        /*
        String s = "abc";
        String s1 = "abc";
        第一次创建时,在字符串常量池中检测有没有,有则指向,没有就在字符串常量池中创建一个对象,再指向对象
        第二次创建时,字符串常量池中有,则直接指向
         */
        String s = "abc";
        String s1 = "abc";
        System.out.println(s.equals(s1));//true,
        System.out.println(s==s1);//true

        /*
        使用 new + 构造方法()创建
        在堆中创建新对象,值存储在对内存的对象中
        只要是new创建的对象,在内存中一定是独一无二的对象空间
         */
        String s2 = new String("abc");
        String s3 = new String("abc");
        System.out.println(s2.equals(s3));//true
        System.out.println(s==s3);//false
    }

字符串值是常量,值不能改变,一旦改变就是在内存中重新创建一个新对象来保存这个新的值。

 /*
        private final char value[];
        字符串底层是char数组存储,单个字符存储
        final修饰 所以是常量不可改变
         */

String类中常用的方法:

1.判断功能的方法

 public static void main(String[] args) {
       
        /*
        判断功能
         */
        String s = "abcdefg";
        String s1= "abcdefg";
        System.out.println(s.equals(s1));//true 判断字符串值是否相等
        System.out.println(s.equalsIgnoreCase("aBCD"));//不区分大小写,判断字符串是否相同

        System.out.println(s.contains("a"));//判断字符串中是否包含子串
        System.out.println(s.contains("abc"));

        System.out.println(s.isEmpty());//判断字符串是否为空

        System.out.println(s.startsWith("ab"));//判断字符串是否是以指定前缀开头
        System.out.println(s.endsWith("fg"));//判断字符串是否是以指定后缀结尾

        System.out.println("c".compareTo("a"));//2   比较值(ASCLL/Unicode值相减)大小,用于排序比较
        System.out.println("a".compareTo("a"));//0
        System.out.println("a".compareTo("c"));//-2

    }

2.获取功能的方法

 public static void main(String[] args) {
         /*
        获取功能
         */
        String s2 = "abcdefgcd";
         //字符串下标:012345678
        System.out.println(s2.length());//返回字符串长度
        System.out.println(s2.charAt(2));//返回指定下标出处的字符
        System.out.println(s2.indexOf("d"));//从下标0处向后找,返回指定字符第一次出现的下标
        System.out.println(s2.indexOf("v"));//如果字符串中不包含指定字符,则返回-1
        System.out.println(s2.indexOf("c",3));//从指定位置(下标)向后找 字符首次出现的位置
        System.out.println(s2.indexOf("d",s2.indexOf("d")+1));//返回指定字符第二次出现的下标
        System.out.println(s2.lastIndexOf("c"));//从后往前找字符首次出现的位置
        System.out.println(s2.lastIndexOf("c",5));//从指定位置向前找 字符首次出现的位置

        System.out.println(s2.substring(2));//返回字符串从指定下标处开始到字符串结束的新字符串
        System.out.println(s2.substring(2,6));//返回字符串从指定下标开始到制定下标结束的新字符串


    }

3.替换功能的方法

 /*
    替换功能
     */
    public static void main(String[] args) {
        String s = "abcdefgbcfes";
        System.out.println(s.replace('e','E'));//参数为两个字符,用后面的字符替换前面的字符
        System.out.println(s.replace("bc","BC"));//用后面的字符串替换前面的字符串
        System.out.println(s);//字符串的值不可改变


        String s1 = "bcde1fbc3g";

        System.out.println(s1.replaceAll("\\d","BC"));//"\\d" 用指定字符串字符串替换原字符串中的数字
        System.out.println(s1.replaceFirst("\\d","BC"));//"\\d" 用指定字符串字符串替换原字符串中的第一个数字


        String s2 = " ab c ";
        System.out.println(s2.length());//长度为6
        String s3 = s2.trim();//去除字符串两端的空格
        System.out.println(s3.length());//长度为4
        String s4 = s2.replace(" ","");
        System.out.println(s4.length());

    }

4.转换功能的方法

  /*
    转换功能方法:
     */
    public static void main(String[] args) {
        String s = "abc";
        byte[] b =  s.getBytes();//字符串转换为字节数组   编码 字符——>字节
        String s1 = new String(b);//字节数组转换为字符串   解码 字节-->字符
        System.out.println(s1);

        String ss = "中文";
        try {
            //使用给定的字符集将该字符串编码为字节序列,
            byte[] bb = ss.getBytes("gbk");//gbk 规定一个中文对应两个字节
            System.out.println(Arrays.toString(bb));
            //通过 给定的字符集 将字节序列 解码为字符串
            String sb1 =new String(bb,"gbk");
            System.out.println(sb1);

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        try {

            byte[] bb1 = ss.getBytes("utf-8");//utf-8 规定一个中文对应三个字节
            System.out.println(Arrays.toString(bb1));
            String sb2 =new String(bb1,0,3,"utf-8");//取从第0位开始的三个字节
            System.out.println(sb2);

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }

        String s2 ="abc";
        char[] c = s2.toCharArray();//字符串转换为字符数组
        System.out.println(Arrays.toString(c));
        String s3 = new String(c);//字符数组转换为字符串
        System.out.println(s3);
        
        String s4 = "abcdEFGH";
        System.out.println(s4.toUpperCase());//字符串全部转大写
        System.out.println(s4.toLowerCase());//字符串全部转小写
        
        /*
           String s5 = s4.concat("hello");
            String s6 = s4+"I"+"am"+"OK";
            concat() 连接方法 效率高于 “ ”+“ "
         */
        String s5 = s4.concat("hello");//字符串连接 将指定的字符串连接到该字符串的末尾。
        String s6 = s4+"I"+"am"+"OK";//字符串连接,效率最低的字符串拼接

        String s7 = "ab:cvafa:asdf:asfd:s";
        String[] s8 = s7.split(":");//将字符串用指定的字符分割为字符串数组
        System.out.println(Arrays.toString(s7));

        String s9= "ab5cvafa4asdf3asfd2s";
        String[] s10 = s9.split("\\d");//将字符串用指定的正则表达式分割为字符串数组
        System.out.println(Arrays.toString(s6));

    }

StringBuffer类

当我们对字符串进行拼接是,每次拼接,都会构建一个新的String对象,既耗时又浪费空间。而StringBuffer就可以解决这个问题。

StringBuffer:线程安全的可变字符序列

package day16;

public class StringBufferDemo {
    public static void main(String[] args) {
        /*
        StringBuffer类
        线程安全 的可变字符序列
        对字符串进行拼接,每次拼接,不会创建新对象
         */
        /*
        无参的构造方法,底层创建一个长度为16的char数组  char[] value;
         */
        StringBuffer s1 = new StringBuffer();
        //有参的构造方法
        StringBuffer s2 = new StringBuffer(10);//参数为底层创建数组的容量,即数组长度
        StringBuffer s3 = new StringBuffer("hello");//总长度为: 字符串长度+16
        /*
        大量的字符串拼接,建议使用StringBuffer,不会创建新的对象
         */
        s3.append("world");//字符串的拼接
        s3.append("asdmd");
//        s3.insert(4,"xxx");//在指定位置插入新的字串
//        s3.delete(0,4);//删除从指定起始位置到指定结束的字符串
//        s3.deleteCharAt(3) ;//删除指定位置的字符
//        s3.replace(0,5,"BB");//替换
//        s3.reverse();//字符串逆序/字符串反转
//        s3.substring(2);
        s3.substring(2,6);
//        System.out.println(s3.length());
        System.out.println(s3);
        System.out.println( s3.substring(2,6));
    }
}

StringBuilder类

public static void main(String[] args) {
        /*
        StringBuilder  内容可变
        StringBuffer   线程安全 内容可变
        String         内容不可变
         */
        StringBuilder s = new StringBuilder();
        //方法与StringBuffer相同
        s.append("hhh");
        System.out.println(s);
    }
上一篇:How to find unit test class by code


下一篇:IBASE category 03 download