javaSE第五章_<API常用类(1)>【基本数据类型包装类,自动装箱,Object类,Arrays类,String类】


API应用程序编程接口

概述:
API多指API文档,对java提供的类和接口的功能进行说明
在这里插入图片描述

基本数据类型包装类

包装类:
(如:Integer,Double等)
作用:

  • 这些类封装了一个相应的基本数据类型,作为对应的类类型存在
  • 包含每种数据类型相关属性,如max,min,提供了一系列操作方法。
    在这里插入图片描述
自动装箱

自动装箱: 基本数据类型—>包装器类型
自动拆箱: 包装器类型—>基本数据类型

//int a=10;
Integer n=new Integer(10);
Integer x=10;
Integer m=new Integer(10);
== 在比较基本类型时,比较的就是值是否相等
== 在比较引用类型时,比较对象在内存中的地址是否相等

      自动装箱调用valueOf()
      public static Integer valueOf(int i){
           判断值如果在 -128到127之间  会从缓存数组中取出一个对象返回。
           多个值相同,返回的是同一个对象
           if(i>=IntegerCache.low && i<=IntegerCache.high)
              return IntegerCache.cache[i+(-IntegerCache.low)];
           return new Integer(i);  不在-128到127之间 会创建新的对象返回

Demo:

package api1;

//Demo就是int这个基本类型的包装类
public class Demo {

    int num;
    public Demo(int n){
        this.num=n;
    }
    public void check(){

    }

    public static void main(String[] args) {
        //int a=10
        Demo d=new Demo(10);
    }
}

IntegerDemo1:

package api1;

public class IntegerDemo1 {
    public static void main(String[] args) {
        //int a=10;
        Integer n=new Integer(10);
        //包装一些关于int类的相关信息
        System.out.println(n.MAX_VALUE); //最大的int型数 2147483647
        System.out.println(n.MIN_VALUE);  //最小的int型数-2147483648
        System.out.println(Integer.SIZE);   //32
        System.out.println(Integer.BYTES);   //4

        //构造方法
        Integer m=new Integer(8);
        System.out.println(m+10); //18

        //比较方法
        Integer m1=new Integer(10);
        Integer m2=new Integer(12);
        //比较大小
        System.out.println(m.compareTo(n)); //m小于n -1
        System.out.println(m1.compareTo(n)); //m等于n 0
        System.out.println(m2.compareTo(n)); //m大于n 1
        System.out.println(n.equals(m)); //比较是否相等 false
        System.out.println(Integer.max(10,5)); //10

        System.out.println(Integer.toBinaryString(3)); //返回二进制 11
        System.out.println(Integer.toOctalString(9)); //返回八进制  11
        System.out.println(Integer.toHexString(17));   //返回十六进制 11
    }
}

IntegerDemo2:

package api1;

public class IntegerDemo2 {
    public static void main(String[] args) {
        //int a=10;
        int x=10;
        Integer n=new Integer(x);
        int m=n.intValue(); //去取对象中包含的int值
              n.longValue();

        String s="10";
        int y=Integer.parseInt(s); //将String类型转换成int

        String s1=n.toString(); //将整数 转为 String
        Integer in=Integer.valueOf(x);
        Integer in1=Integer.valueOf("10");

    }

}

IntegerDemo3:

package api1;

public class IntegerDemo3 {
    int x=10;
    /*
      基本类型转引用类型
      Integer n=new Integer(x);
      Integer n1=Integer.valueOf(x);
     */
    Integer n=x; //自动装箱 默认调用vauleOf()方法  创建一个Integer对象
         //n.intValue()
    int y=n;  //自动拆箱  将引用类型转为基本类型 默认调用intValue()方法 取出包含的int值
}

IntegerDemo4:

package api1;

public class IntegerDemo4 {
    public static void main(String[] args) {
        /*
          自动装箱问题

          == 在比较基本类型时,比较的就是值是否相等
          == 在比较引用类型时,比较对象在内存中的地址是否相等

          自动装箱调用valueOf()
          public static Integer valueOf(int i){
               判断值如果在 -128到127之间  会从缓存数组中取出一个对象返回。
               多个值相同,返回的是同一个对象
               if(i>=IntegerCache.low && i<=IntegerCache.high)
                  return IntegerCache.cache[i+(-IntegerCache.low)];
               return new Integer(i);  不在-128到127之间 会创建新的对象返回
          }
         */
        //Integer x=Integer.valueOf(10);
        Integer x=10;
        Integer y=10;
        System.out.println(x==y); //10true 128false

        Integer m=new Integer(10);
        Integer n=new Integer(10); //两个不同的对象比较
        System.out.println(m==n);  //10false 128false
    }
}

Objects类

类是所有Java类的祖先(根基类)。
● 每个类都使用 Object 作为 超类(父类)。所有对象(包括数组)都实现这个类的方法。
● 如果在类的声明中未使用extends关键字指明其基类,则默认基类为 Object类

toString()方法

System.out.println§; 输出对象,此时会默认调用对象中的toString()
Person类默认继承了Object类
Public String toString(){
return getClass().getname()+"@"+Integer.toHexString(hashCode());
重写toString() 会调用自己的toString方法
得到:Person{name=‘张三’, age=20}
一般情况下可以重写Object类中的toString()

equals()方法

几乎API中所有;类都重写Object类中的equals(),
// 比较的是对象中包含的内容是否相等
Person:

package api1.objectdemo;

public class Person extends Object{
    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Person person = (Person) o;
        return age==person.age&&(name.equals(((Person)o).name));
    }

}

ObjectToString:

package api1.objectdemo;

public class ObjectToString {
    public static void main(String[] args) {
        Person p=new Person();
               p.setName("张三");
               p.setAge(20);
        /*
           System.out.println(p);  输出对象,此时会默认调用对象中的toString()
           Person类默认继承了Object类
           Public String toString(){
               return getClass().getname()+"@"+Integer.toHexString(hashCode());
            重写toString() 会调用自己的toString方法
            得到:Person{name='张三', age=20}
            一般情况下可以重写Object类中的toString()
           }
         */
        System.out.println(p); //api1.objectdemo.Person@1b6d3586
    }
}

ObjectEquals:

package api1.objectdemo;

public class ObjectEquals {
    /*
      Object类中equals
          public boolean equals(Object obj){
              return(this==obj);
          }
     */
    public static void main(String[] args) {
        Person p1=new Person();
               p1.setName("张三");
               p1.setAge(20);

        Person p2=new Person();
               p2.setName("张三");
               p2.setAge(20);

        System.out.println(p1.equals(p2)); //false 重写Person类equals方法后为true

        //几乎API中所有;类都重写Object类中的equals(),
        // 比较的是对象中包含的内容是否相等
        String s=new String("abc");
        String s1=new String("abc");
        System.out.println(s==s1);   //false
        System.out.println(s.equals(s1));  //true

        Integer x=128; //new Integer(128);
        Integer y=128; //new Integer(128);
        System.out.println(x==y); //false
        System.out.println(x.equals(y));//true
    }
}

Arrays类

java.util.Arrays类
● 用于操作数组工具类,里面定义了常见操作数组的静态方法。

equals()方法

相等,则返回true,否则返回false

sort()方法

排序(所有数,指定区间数,自定义排序)
自定义类实现Comparable接口,重写compareTo方法

binarySearch()方法

二分查询,查询指定值在数组中的位置
前提: 数组要有序 否则查找不到返回负数
Arrays.sort(a);
//对数组排序 1,2,3,4,5,6,7,8
System.out.println(Arrays.binarySearch(a,6));

toString()方法

返回指定数组内容的字符串形式
System.out.println(Arrays.toString(a));

copyOf()方法

数组复制,返回一个指定长度的新数组,并将原数组中的内容复制到新数组中
int[] c=Arrays.copyOf(a,10);

ArraysEquals:

package api1.arraysdemo;

import java.util.Arrays;

public class ArraysEquals {
    public static void main(String[] args) {
        int []a={1,2,3,4,5};
        int []b={1,2,3,4,5};

        System.out.println(a==b); //false
        System.out.println(Arrays.equals(a,b)); //true
    }
}

ArraysSort:

package api1.arraysdemo;

import java.lang.reflect.Array;
import java.util.Arrays;

public class ArraysSort {
    public static void main(String[] args) {
        int []a={5,4,3,2,1};

        //Arrays.sort(a); //0---length  对整个数组进行排序
        Arrays.sort(a,0,3); //[3, 4, 5, 2, 1] 0---3-1  对指定区间进行排序

        System.out.println(Arrays.toString(a)); //[1, 2, 3, 4, 5]
    }

}

Student:

package api1.arraysdemo;

public class Student implements Comparable<Student>{
    private int num;
    private String name;

    //构造方法
    public Student(int num, String name) {
        this.num = num;
        this.name = name;
    }

    //用来作比较,提供一个自定排序规则的方法
    //compareTo()方法会在sort()底层调用
    @Override
    public int compareTo(Student o) {
        return this.num-o.num; //小于0  等于0  大于0
    }

    @Override
    public String toString() {
        return "Student{" +
                "num=" + num +
                ", name='" + name + '\'' +
                '}';
    }
}

ArraysSortObject:

package api1.arraysdemo;

import java.util.Arrays;

public class ArraysSortObject {
    public static void main(String[] args) {
        Student [] students=new Student[5];

        Student s1=new Student(101,"张三1");
        Student s2=new Student(101,"张三2");
        Student s3=new Student(101,"张三3");
        Student s4=new Student(101,"张三4");
        Student s5=new Student(101,"张三5");

        students[0]=s2;
        students[1]=s5;
        students[2]=s1;
        students[3]=s4;
        students[4]=s3;

        //对引用类型数组进行排序时,类实现
        Arrays.sort(students);
        System.out.println(Arrays.toString(students));

        String []sarr={"a","b","c","d"};
        Arrays.sort(sarr);
        System.out.println(Arrays.toString(sarr)); //[a, b, c, d]
    }
}

ArraysBinarySearch:

package api1.arraysdemo;

import java.util.Arrays;

public class ArraysBinarySearch {
    public static void main(String[] args) {
        //二分查询,查询指定值在数组中的位置
        //前提:数组要有序  否则查找不到返回负数
        int []a={2,1,3,7,6,5,8};

        Arrays.sort(a);
        //对数组排序 1,2,3,4,5,6,7,8
        System.out.println(Arrays.binarySearch(a,6)); //4
        System.out.println(Arrays.binarySearch(a,2)); //1
        System.out.println(Arrays.binarySearch(a,4)); //-4 返回-1或-插入点
        System.out.println(Arrays.binarySearch(a,0,5,6)); //4
    }
}

ArraysToString:

package api1.arraysdemo;

import java.util.Arrays;

public class ArraysToString {
    public static void main(String[] args) {
        int []a={1,2,3,4,5};
        //System.out.println(a); //[I@1b6d3586
        //数组操作的工具类
        System.out.println(Arrays.toString(a)); //StringBulider方法 [1, 2, 3, 4, 5]
    }
}

ArraysCopyOf:

package api1.arraysdemo;

import java.util.Arrays;

public class ArraysCopyOf {
    public static void main(String[] args) {
        //数组复制
        int[] a={1,2,3,4,5};
        int[] b=new int[5];
        for(int i=0;i<a.length;i++){
            b[i]=a[i];
        }
        System.out.println(Arrays.toString(b)); //[1, 2, 3, 4, 5]

        //返回一个指定长度的新数组,并将原数组中的内容复制到新数组中
        int[] c=Arrays.copyOf(a,10);
        System.out.println(Arrays.toString(c)); //[1, 2, 3, 4, 5, 0, 0, 0, 0, 0]

    }
}


String类

String类创建

字符串值不可改变
字符串值不可改变
字符串创建
在这里插入图片描述

  • 所有的字符串都是String类的实例(对象)
    字符串的值不能改变(一旦给定字符串的值,值就不能改变) 因为底层用到一个final修饰的char数组
    private final char value[]; 底层是单个字符存储 char a=97 b=98 c=99
  • String对象的两种创建方式
  1. String s=“abc”
    首先会在字符串常量池中查找,如果没有,就在常量池中创建,
    如果常量池已经存在,就不需要创建,直接返回地址即可
  2. String s1=new String(“abc”)
    都会在堆中创建一个对象

StringDemo1:

package api1.stringdemo;

public class StringDemo1 {
    /*
      String 表示字符串
      所有的字符串都是String类的实例(对象)
      字符串的值不能改变(一旦给定字符串的值,值就不能改变) 因为底层用到一个final修饰的char数组
          private final char value[]; 底层是单个字符存储 char a=97 b=98 c=99
     */

    public static void main(String[] args) {
        String s="abc";
        String s2="abc";
        String s1=new String("abc");
               s1+="efg";
               s1+="hijk";
        System.out.println(s1); //abcefghijk
    }

}

StringDemo2:

package api1.stringdemo;
public class StringDemo2 {
    /*
      String对象的两种创建方式
      1、String s="abc"
      2. String s1=new String("abc")
     */
    public static void main(String[] args) {
        String s1="abc"; //首先会在字符串常量池中查找,如果没有,就在常量池中创建
        String s2="abc"; //如果常量池已经存在,就不需要创建,直接返回地址即可
        System.out.println(s1==s2); //true
        System.out.println(s1.equals(s2)); //true

        String s3=new String("abc");
        String s4=new String("abc"); //都会在堆中创建一个对象
        System.out.println(s3==s4);  //false
        System.out.println(s3.equals(s4)); //true
    }
}

String类常用方法

== 比较地址是否相等
equal() 比较值是否相等
equalsIgnoreCase() 比较值是否相等,忽略大小写
功能:判断,获取,转换,构造

判断功能
package api1.stringdemo;

public class StringPanDuan {
    public static void main(String[] args) {
        /*
         构造方法
         判断功能
        */
        String s=new String(); //创建一个"" this.value="".value;

        String s1=new String("abc");
        String s2=new String("abC"); //this.value=original.value

        System.out.println(s1.equals(s2)); //false equals都比较是值,内容是否相等
        System.out.println(s1.equalsIgnoreCase(s2));//比较值/内容 是否相等 忽略大小写

        String s3="abcdef";
        System.out.println(s2.contains("ab")); //判断是否包含指定字符串
        String s4=null;
        //System.out.println(s4.isEmpty()); //true 判断是否为空("") 为空返回true 字符串长度为0 空指针异常
        System.out.println(s3.startsWith("ab")); //true 判断是否以指定字符串开头
        System.out.println(s3.endsWith("ab"));  //false 判断是否以指定字符串结尾
        System.out.println("a".compareTo("c")); //-2 比较两个字符串位置
    }
}


获取功能
package api1.stringdemo;

public class Stringhuoqu {
    public static void main(String[] args) {
        /*
           获取功能
        */
        String s="abcdefgh";
        //01234567
        System.out.println(s.length()); //8 字符串长度
        char c=s.charAt(3);  //d 返回指定索引字符
        System.out.println(c);

        int index=s.indexOf("d"); //3 获取指定字符串首次出现的位置 从前向后找
        System.out.println(index);

        int index1=s.indexOf("d",4); //-1 从指定位置开始,获取指定字符串首次出现的位置
        System.out.println(index1);

        int index2=s.lastIndexOf("d");
        System.out.println(index2);

        String s1="abcedfgh";
                 //01234567
        String s2=s1.substring(2); //从s1 截取指定区间的字符串 从指定位置 开始到结束
        System.out.println(s1); //abcdefgh
        System.out.println(s2); //cdefgh

        String s3=s1.substring(2,6); //从指定区间截取  开始位置--结束位置(获取功能)
        System.out.println(s3); //cedf
    }
}


转换功能
package api1.stringdemo;

import java.util.Arrays;

public class StringZhuanHuan {
    /*
      转换功能
     */
    public static void main(String[] args) {
        String s="adbcEFG";
        System.out.println(s.toLowerCase()); //adbcefg 转小写
        System.out.println(s.toUpperCase()); //ADBCEFG 转大写

        String s1=s.concat("HOJK"); //两个字符串拼接 并返回新的字符串对象
        System.out.println(s1); //adbcEFGHOJK

        String s2="ab:cd:E:FGH";
        String[] array=s2.split(":"); //用指定符号 来分割字符串为数组
        System.out.println(Arrays.toString(array)); //[ab, cd, E, FGH]
    }
}


构造功能

编码,解码
public String(byte[] bytes)
public String(char[] value)

package api1.stringdemo;

import java.util.Arrays;

public class Stringgouzao {
    /*
      构造方法
      public String(byte[] bytes) 通过平台默认字符集解码指定字节数组来构造新的String
     */
    public static void main(String[] args) {
        /*
        String s="abc";
        byte[] b=s.getBytes(); //编码 [97, 98, 99]
        System.out.println(Arrays.toString(b));

        String s1=new String(b); //解码 abc
        System.out.println(s1); */

        String s="中文";
        //byte[] b=s.getBytes("GBK"); utf-8
        byte[] b=s.getBytes(); //编码 [-28, -72, -83, -26, -106, -121]
        System.out.println(Arrays.toString(b));

        //String s1=new String(b,"GBK") utf-8
        String s1=new String(b); //解码 中文 乱码问题:编码和解码两边使用的编码格式不统一
        System.out.println(s1);

        //String s2=new String(b,2,2,"GBK"); //指定区间
        //System.out.println(s2);

    }
}

package api1.stringdemo;

import java.util.Arrays;

public class Stringgouzao2 {
    /*
       public String(char[] value)
       char[] toCharArray()  字符串转换成数组
       static String valueOf(char[] chs)
     */
    public static void main(String[] args) {
        String s="cab";
        char[] chars=s.toCharArray();
        Arrays.sort(chars);
        System.out.println(Arrays.toString(chars)); //编码 [a, b, c]

        String s1=new String(chars);
        System.out.println(s1); //解码 abc

        String s2=String.valueOf(chars);
        System.out.println(s2); //abc
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值