java第五章(API)

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

API:指的是官方给开发人员提供的一个说明文档,对语言有哪些类,类中有哪些方法进行说明

Object类

java.lang.ObjectObject类是所有Java类的祖先(根基类)。每个类都使用 Object 作为超类(父类)。所有对象(包括数组)都继承实现这个类的方法

   

       1.toString方法

/*输出一个对象,但是对象在内存中存储,是不能输出的,
当输出一个对象时,会默认调用此对象的toString();
如果类中没有定义toString();会调用object类中toString();
object类中toString();是把对象在内存的哈希值返回(16进制)
我们自己类中可以对object类中toString();进行重写,后面调用时调用我们自己的toString();*/
//人类
public class Person {
    private String name;
    private int age;
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
//-------------------------------------------------------------
//测试类
public class Test_Person {
    public static void main(String[] args) {
        Person p1=new Person("大王",18);
        System.out.println(p1);
    }
}

       2.equals(比较)

//测试类
public class Test_person2 {
    public static void main(String[] args) {

        /*
        * == 比较等号两边是否相等
        * 当==用于基本类型比较时,比的是变量是否相等
        * 而用于引用类型时,比的是两个对象地址是否相等
        * */

        /*boolean equals(Object obj)判断两个对象是否相等
        * object类中的equals
        *     public boolean equals(Object obj){
        *            return (this==obj);//默认比较的是两个对象的地址是否相等,我们就可以使用==代替
        *        }
        *
        * 在其他类中,一般重写了equals();把他改造为比较对象中的内容是否相等
        * */
        Person p1=new Person("ww",18);
        Person p2=new Person("ww",18);
        System.out.println(p1==p2);//比较地址,一定为false
        System.out.println(p1.equals(p2));//false ,但是在Person中重写equals,比较的是对象中的内容后变为ture
    }
}
//-------------------------------------------------------
//人类
public class Person {
    private String name;
    private int age;
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public boolean equals(Object obj){
        if (obj instanceof Person){
            Person other=(Person) obj;
            return name.equals(other.name)&& age==other.age;
        }
            return false;
    }
}

Arrays类(java.until.Arrays)

1.equals方法(比较数组)

2.copyOf方法(数组复制)

3.fill()方法(指定值充满数组)

4.toString方法

5.sort方法(对指定数组进行升序排序)

6.binarySearch 二分方法(查找指定元素位置)

//一
public class Arrays1 {
    public static void main(String[] args) {
        /*
        * 比较两个数组内容是否相等
        * */
        int[] a={1,2,3,4};
        int[] b={1,2,3,4};
        System.out.println(Arrays.equals(a,b));
//二----------------------------------------------------------
        /*
        * copyOf 数组复制
        *    将原数组内容复制到一个指定长度的新数组中
        * */
         int[] c=new int[5];
         c[0]=1;
         c[1]=1;
         c[2]=1;
         c[3]=1;
         c[4]=1;
         int[] d=Arrays.copyOf(c,10);
        System.out.println(Arrays.toString(d));
//三--------------------------------------------------------
        /*
        * fill()   用指定的值将指定数组的每个元素填充
        * */
        int[] e={1,2,3};
        Arrays.fill(e,0);
        System.out.println(Arrays.toString(e));
//四--------------------------------------------------------
        //toString() 将数组中的元素内容拼接为一个字符串输出
//五-------------------------------------------------------
       /*
        * sort()  对指定数组进行升序排序
        * */
        int[] f={3,1,2,9,1,2};
        Arrays.sort(f);
        System.out.println(Arrays.toString(f));

        int[] g={3,1,2,9,1,2};
        Arrays.sort(g,0,3);//指定区间排序
        System.out.println(Arrays.toString(f));
//六-------------------------------------------------------
       /*
        * binarySearch(); 二分查找指定元素位置,如果每找到,则返回-1
        * 二分查找前得先排序
        */
        int[] h={2,3,4,1,5};
        Arrays.sort(h);
        int index=Arrays.binarySearch(h,2);//kay是位置,即索引
        System.out.println(index);
    }
}

7.compareTo(对类进行排序)

public class Student implements Comparable<Student>{
/*
* 我们一个类要进行排序,那么这个类必须实现Comparable接口,指定一个排序的方法(这样所有的类都可以进行排序)
 */
    private String name;
    private int id;
    public Student(String name, int id) {
        this.name = name;
        this.id = id;
    }
    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", id=" + id +
                '}';
    }
    /*
    * 用来指定排序规则
    * 可以执行用类中的那个数学系作为排序的项
    * 这个方法在sort()方法的底层逻辑
    * */
   @Override
    public int compareTo(Student o) {
        return this.id-o.id;//int排序(升序)
      //return o.id- this.id;(降序)
    }
}

//------------------------------------------------
public class Arrays2 {
    public static void main(String[] args) {

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

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

        Arrays.sort(students);
        System.out.println(Arrays.toString(students));
    }
}

基本类型包装类

基本数据类型不面向对象

* java中基本数据类型使用8个关键字声明的,不是面向对象的
* int a=10;
* java语言面向对象,可以为每个基本类型定义一个类进行表示
* 这样我们在类中还是保持有一个基本类型变量储存数据;
* 同时还可以提供许多方法对变量进行操作(将十进制转为二进制)

以Integer为例:

public class Integer_deom {
    public static void main(String[] args) {
        Integer a=new Integer(10) ;//构造Integer对象,里面包含着一个基本类型值,用该对象表示一个int值
        Integer b=new Integer(12);
        //静态方法方法
        System.out.println(Integer.toBinaryString(5));
        System.out.println(Integer.toHexString(17));
        System.out.println(Integer.toOctalString(9));
        System.out.println(Integer.max(12,13));//13
        System.out.println(Integer.compare(4,6));//两个整数比较大小  结果为1  0  -1
        //非静态方法
        System.out.println(a.equals(b));//false
        System.out.println(a.compareTo(b));//-1 即 a<b
        //转换方法  包装类型转基本类型
        int aa=a.intValue();
        int bb=Integer.parseInt("28");
        //         基本类型转为包装类型
        int c=10;
        Integer cc=new Integer(c);
        Integer dd=Integer.valueOf(cc);
    }
}

自动拆箱(把引用类型 转为 基本类型)

自动装箱(把基本类型 转为 引用类型)

public class Integer_Deom2 {
    public static void main(String[] args) {

        //自动拆箱:把引用类型 转为 基本类型
        Integer a= new Integer(10);
        //int d=a.intValue();
        int d=a;// 会默认自动调用为intValue();方法
//---------------------------------------------------------
        //自动装箱:把基本类型 转为 引用类型
        //注意:自动装箱时,会默认自动调用valueOf()方法
        //在valOf()中 如果基本类型值在-128——127之间,会从缓存数组中直接取出一个Integer对象,减少创建次数
        //如果两个值相同,获取的是同一个对象,
        //基本类型值如果不在-128——127区间,每次都船舰一个新Integer对象返回
        int x=10;
        Integer y=x;//相当于Integer y=Integer.valueOf(x); 会默认调用valueof();方法
        Integer z=x;
        System.out.println(y==z);//x=10ture  x=128 false
        System.out.println(y.equals(z));//ture 比较值时推荐使用equals();方法
    }
}

String类

public class String1 {
    public static void main(String[] args) {
        /*
        * java.long.String
        *   java中所有字符串都是此类的实例
        *   "abc"——>字符中对象  底层时一个char数组public  final  char value[]
        * 字符串对象创建方式:
        * 1.String s="abc"
        *    创建时,先去字符串常量池中去查找有没有相同值的对象,如果没有,就创建一个字符串对象,并返回地址
        *    如果字符串常量中已经储存,不用创建新的,直接返回已存在对象地址
        * 2.String s1= new Sring("abc");
        *    new每次都新建一个对象
        * */
        //两种创建方式区别(内存上)
        String s="abc";
        String ss="abc";
        System.out.println(s==ss);//true

        String s1=new String("abc");
        String s2=new String("abc");
        System.out.println(s1==s2);//false
        System.out.println(s1.equals(s2));//true
    }
}
    public class String2 {
        public static void main(String[] args) {
            //字符串不变;他们的值在创建后不能更改
            String s="abc";//第一个字符串对象 abc
            s+="def";//第二个字符串对象 abcdef
            s+="ghi";//第三个字符串对象 abcdefghi
            System.out.println(s);//abcdefghi
        }
    }



String类的方法:

构造方法

  public static void main(String[] args) {
        /*
        * 构造方法:
        * String
        * String(String s)
        * String(byte[] bytes)  把字节数组 转为 字符串
        * String(char[] chars)  把字符数组 转为 字符串
        * */
        String s1=new String();
        String s2=new  String("abc");

        String s3="你好";
        byte[] bytes=s3.getBytes(/*放指定编码 eg:GBK*/);//编码 ;把字符 转为 字节数组(数字)
        System.out.println(Arrays.toString(bytes));//字节
        String s4=new String(bytes/*,"GBK"*/);//解码 ;把字节数组 转为 字符
        System.out.println(s4);//你好

        String s5="cba";
        char [] chars=s5.toCharArray();//字符串转为字符数组
        Arrays.sort(chars);//排序
        String s6=new String(chars);//将字符数组转为字符串
        System.out.println(s6);//abc
    }
}

判断功能:

public class String4 {
    public static void main(String[] args) {
        String s1=new String("abcde");
        String s2=new String("abcdD");

        //boolean equals(Object obj)  比较字符对象中内容是否相等
        System.out.println(s1.equals(s2));

        //boolean equalsIgnoreCase(String str) 比较字符串对象中内容是否相等中忽略大小写
        System.out.println(s1.equalsIgnoreCase(s2));//

        //boolean contains(String str)  判断字符串中是否包含指定子串
        System.out.println(s1.contains("ab"));

        //boolean isEmpty()  判断字符串值是否为""(空)
        String s3=new String("");
        System.out.println(s3.isEmpty());

        //boolean startsWith(String prefix) 判断是否指定字符串开头
        System.out.println(s1.startsWith("ab"));

        //boolean endsWith(String suffix) 判断是否指定字符串结尾
        System.out.println(s1.endsWith("ab"));

获取功能:

public class String5 {
    public static void main(String[] args) {
        //获取功能

        //int length()  获取字符串长度
        String s1="abcdefg";
        System.out.println(s1.length());
        //-------------------------------------------------------------------------------
        //char charAt(int index)  获取指定位置上的字符
        for (int i=0;i<s1.length();i++){
            System.out.println(s1.charAt(i));
        }
        //-------------------------------------------------------------------------------
        // int indexOf(String str)  返回的指定字符串首次出现的位置
        System.out.println(s1.indexOf("c"));
        // int indexOf(String str,int fromIndex)  从指定位置开始查找,返回的指定字符串首次出现的位置
        System.out.println(s1.indexOf("c",4/*位置,即索引*/));
        // int indexOf(String str,int lastIndex)  从后向前
        //-------------------------------------------------------------------------------
        // String substring(int start)  从指定位置开始截取一个字符串副本到结束
         String s2=s1.substring(3);
         System.out.println(s1);//abcdefg
         System.out.println(s2);//defg

        // String substring(int start,int end)  从指定位置开始截取一个字符串副本到另一个位置(不包含结尾)
        String s3=s1.substring(0,3);//abcdefg
        System.out.println(s3);//abc

    }
}

转换功能:

public class String6 {
    public static void main(String[] args) {
       // 转换功能:

        //byte[] getBytes()  把字符 转为 字节数组(数字)
        //char[] toCharArray()  把字节数组 转为 字符数组

        //------------------------------------------------------------------------
        //static String valueOf(char[] chs)  将传入的参数转换为字符串类型
        String  s=String.valueOf(10);
        System.out.println(s);//10
        //System.out.println(s.charAt(1));//0
        //int a=Integer.parseInt(s);//== int a=10 == int a=Integer.valueOf(10);
        String s1=String.valueOf("abc".toCharArray());
        System.out.println(s1);
        //------------------------------------------------------------------------
        //String toLowerCase()  将英文字母转为小写
        String s2="abcdEFG";
        System.out.println(s2.toLowerCase());
        //String toUpperCase()将英文字母转为大写
        System.out.println(s2.toUpperCase());
        //------------------------------------------------------------------------
        //String concat(String str)  拼接指定的字符串内容到原字符串末尾,并返回一个新字符串对象
        String s3=s2.concat("aaa");//s2+="aaa"
        System.out.println(s3);
        //------------------------------------------------------------------------
        //Stirng[] split(分割符);   将一个字符串用指定的分割符号拆分成一个字符串数组
        String s4="ab;c;de";
        String[] SPLT=s4.split(";");
        System.out.println(Arrays.toString(SPLT));

    }
}

替换功能

public class String7 {
    public static void main(String[] args) {
        //替换功能

        //String replace(char old,char new)  用新内容替换字符串中指定的字符串
        //String replace(String old,String new)
        String s="    abcc2def3g   ";
        System.out.println(s.replace("c","C"));
        //--------------------------------------------------------------------------
        //replaceAll(String regex, String replacement) 用新内容替换字符串中正则表达式匹配的字符串
        System.out.println(s.replaceAll("\\d","C"));
        //replaceFirst(String regex, String replacement  用新内容替换字符串中正则表达式匹配的字符串,只替换第一个
        System.out.println(s.replaceFirst("\\d","C"));
        //------------------------------------------------------------------------------------------
        //去除字符串 两端 空格
        //String trim()
        System.out.println(s.trim());

    }
}

StringBuffer类

public class StringBuffer1 {
    public static void main(String[] args) {
        //因为String 声明的字符串中对象一旦给定就不能改变长度了,每次拼接都会创建新的字符串对象,耗时,占空间
        //StringBuffer 是内容可以改变的字符串
        //   char[] value; 没有使用final修饰,每次添加内容都是对此数组进行操作,不会创建新的字符串对象
        StringBuffer s1=new StringBuffer("abcd");//创建了一个内容+16的char数组  20
                     s1.append("efg");

        StringBuffer s2=new StringBuffer();//空参的构造方法,指定底层数组长度为16
        StringBuffer s3=new StringBuffer(10);//指定数组容量
        //添加功能
                     s3.append("abc");//向字符串末尾添加内容
                     s3.append("tyu");
        //插入功能
                     s3.insert(1,"A");//向指定位置上插入指定字符串
        //删除功能
                     s3.deleteCharAt(5);//删除指定位置元素
                     s3.delete(1,3);//删除指定区间元素,包含开头不包含结尾
        //替换功能
                     s3.replace(0,3,"B");//替换区间字符串
        //反转功能
                     s3.reverse();//反转字符串,使其逆序
        //
        String s4=s3.substring(0,5);//截取字符串,从StringBuffer中截取一个字符

    }
}

StringBuilder类

基本用法与StringBuffer相同

String StringBuffer StringBuilder用法区别:

    String: 是一个值不可以改变的字符串
    StringBuffer:值可以改变且不需要创建新对象,方法上都加了锁,是在多线程(任务)执行时是线程安全的
    
    StringBuilder: 值可以改变且不需要创建新对象,由于方法上都没有加锁,在多线程(任务)执行时是线程不安全的, 适合单线程

正则表达式

* 正则表达式(Regular Expression,简称regex)
* 正则表达式是一种规则(模式)匹配语法,
* 可以使他一些正则表达式中定义的特殊符号来定义一种规则,然后用此规则去匹配某个字符中,
* 如果字符串与规则和匹配返回ture

* 验证一个字符串是否是中国大陆地区手机号格式
* System.out.println(s1.matches("1[357]\\d{9}"));
* 长度11 开头为1 判断第二位 判断之后的每位是数字
* 可以使用正则表达式,定义一个规则去匹配即可

        String s1="12425";
        System.out.println(s1.matches("b"));
        System.out.println(s1.matches("[0-9]"));
        System.out.println(s1.matches("[0-9]*"));  //[0-9]* 允许出现日次或多改数字
        System.out.println(s1.matches("[0-9]+"));  //[0-9]+ 允许出现至少1次或多改数字
        System.out.println(s1.matches("[0-9]{3}"));  //[0-9]{3} 只能是n次(3)
        System.out.println(s1.matches("[0-9]{3,}")); // [0-9]{3,}至少n次
        System.out.println(s1.matches("[0-9]{3,6}"));  //[0-9]{3,6} 至如次 不人于m战
        System.out.println(s1.matches("\\d[3-9]"));//  \d ==[0-9] 匹配数字   \D匹配非数字
//----------------------------------------------------------
        String s="aifHsdf_123";
        System.out.println(s.matches("[0-9A-z]*"));// \w==[0-9A-z]    允许出现大小写和数字和_
//-----------------------------------------------------------
        String s3="sdasd5616";
        //邮箱格式  xxxxx@xx.com    com.cn
        System.out.println(s.matches("\\w{6,10}@\\w{2,5}\\.(com|com\\.cn)"));

Match类

提供了一系列静态方法用于科学计算

 //abs 绝对值
    //sqrt 平方根
    //pow(double a, double b) a的b次幂
    //max(double a, double b)
    //min(double a, double b)
    //random() 返回 0.0 到 1.0 的随机数
    //long round(double a) double型的数据a转换为long型(四舍五入)
    //floor()向下取整
    //ceil()向上取整
    public static void main(String[] args) {
        System.out.println(Math.PI);
        System.out.println(Math.abs(-3));
        System.out.println(Math.sqrt(4));
        System.out.println(Math.pow(2,3));
        System.out.println(Math.floor(9.9));//向下取整
        System.out.println(Math.ceil(9.1));//向上取整
        System.out.println(Math.max(0,9));//取两数最大值
        System.out.println(Math.min(0,9));//取两数最小值
        System.out.println(Math.random());//返回 0.0 到 1.0 的随机数
        System.out.println(Math.round(3.4));//四舍五入
    }
}

Random类

此类用于产生随机数

public class Random_deom {
// Random类机
//构造方法
//public Random()
// 成员方法
//public int nextInt()
//public int nextInt(int n)
public static void main(String[] args) {
    Random random=new Random();
    System.out.println(random.nextBoolean());
    System.out.println(random.nextInt());//在int取值范围内,随机返回一个整数
    System.out.println(random.nextInt(9));//在给定范围内随机获取一个数(n-1)

    byte[] bytes=new byte[5];
    random.nextBytes(bytes);
    System.out.println(Arrays.toString(bytes));//随机取出数组长度个byte类型随机数
}
}

BigInteger类

import java.math.BigInteger;
​
public class BigInteger_Test {
    public static void main(String[] args) {
        BigInteger bigInteger1 = new BigInteger("11111111111111111111111111111111111111111111111111111111");
        BigInteger bigInteger2 = new BigInteger("99999999999999999999999999999999999999999999999999999999");
​
        BigInteger bigInteger3 = bigInteger1.multiply(bigInteger2);
        BigInteger bigInteger6 = bigInteger1.divide(bigInteger2);
        BigInteger bigInteger5 = bigInteger1.subtract(bigInteger2);
        BigInteger bigInteger4 = bigInteger1.add(bigInteger2);
​
        System.out.println(bigInteger3);
        System.out.println(bigInteger4);
        System.out.println(bigInteger5);
        System.out.println(bigInteger6);
    }
}

BigDecimal类

import java.math.BigDecimal;
import java.math.BigInteger;
​
public class BigDecimal_Test {
    public static void main(String[] args) {
​
        BigDecimal bigDecimal = new BigDecimal(0.1);
        BigDecimal bigDecima2 = new BigDecimal(0.2);
​
        BigDecimal bigDecima3 = bigDecimal.multiply(bigDecima2);
        BigDecimal bigDecima6 = bigDecimal.divide(bigDecima2);
        BigDecimal bigDecima4 = bigDecimal.subtract(bigDecima2);
        BigDecimal bigDecima5 = bigDecimal.add(bigDecima2);
​
        System.out.println(bigDecima3);
        System.out.println(bigDecima4);
        System.out.println(bigDecima5);
        System.out.println(bigDecima6);
    }
}

Date类

import java.util.Date;

public class Date_deom {
    public static void main(String[] args) {
        Date date=new Date();//获取程序运行的时间
        System.out.println(date.getYear()+1900);//  方法上有删除线表示方法已弃用,有新的类代替,但也是可以用的


        //获取的是从1970.1.1 0:0:0  至程序运行时刻的毫秒值
        System.out.println(date.getTime());//1708843591404 时间戳


        Date date1=new Date(16516456146l);//超出int的范围后面得加 l
        System.out.println(date1);

        //测试效率
        System.out.println(date.getTime()-date1.getTime());
    }
}

SimpleDateFormat类

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class SimpleDateFormat_deom {
    public static void main(String[] args) throws ParseException {
        /*
        * 字符串日期转为Date对象
        * */
        String s="2024-2-25";
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
        Date date=sdf.parse(s);

        System.out.println(date.getYear()+1900);
        System.out.println(date);

        /*
        * 把日期转为指定格式字符串
        * */
        Date date1=new Date();
        SimpleDateFormat sdf1=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E");//把日期转为指定格式字符串
        String s1=sdf1.format(date1);
        System.out.println(s1);
    }
}

Calendar类

import java.util.Calendar;
​
public class Calender_Test {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        //日历
        //System.out.println(calendar);
​
        System.out.println(calendar.get(Calendar.YEAR));
        System.out.println(calendar.get(Calendar.MONTH) + 1);
        System.out.println(calendar.get(Calendar.DAY_OF_YEAR));
        System.out.println(calendar.get(Calendar.DAY_OF_WEEK));
        System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
        System.out.println(calendar.get(Calendar.WEEK_OF_MONTH));
        System.out.println(calendar.get(Calendar.WEEK_OF_YEAR));
​
        Calendar calendar1 = Calendar.getInstance();
​
        //有参构造
        calendar1.set(2024,2,25);
​
        //获取自1970.1.1  0:0:0 到此Calendar的毫秒值。
        System.out.println(calendar1.getTimeInMillis());//1711350767288
    }
}
​

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值