zoukankan      html  css  js  c++  java
  • JAVA的API部分介绍

    个人理解:

      Object作为最大的父类,里面存在不少方法,可以在API中具体的查找。比如可以帮助查看是否相同的equals方法,不过要想看具体属性是否相同需要得重写,打印、调用对象相当于调用其tostring方法。学会在API中寻找各个方法进行了解,特别注意StringBuilder比StringBuffer(安全、效率低)快,至于String的相关知识在下面的文字有自己的其他理解。

    一、API的含义:

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

    Java API就是JDK中提供给我们使用的类,这些类将底层的代码实现封装了起来。

    (在JDK安装目录下有个src.zip文件,这个文件解压缩后里面的内容是所有的Java类的源文件)。

    二、Object类:

            Object类是Java语言中的根类,即所有类(除了接口)的父类。它中描述的所有方法子类都可以使用。所有类在创建对象的时候,最终找的父类就是Object。

    1、equals方法

      equals方法,用于比较两个对象是否相同,它其实就是使用两个对象的内存地址在比较。Object类中的equals方法内部使用的就是==比较运算符。

      在开发中要比较两个对象是否相同,经常会根据对象中的属性值进行比较,也就是在开发经常需要子类重写equals方法根据对象的属性值进行比较。

    class Person extends Object{
        int age ;
        //复写父类的equals方法,实现自己的比较方式
        public boolean equals(Object obj) {
            //判断当前调用equals方法的对象和传递进来的对象是否是同一个
            if(this == obj){
                return true;
            }
            //判断传递进来的对象是否是Person类型
            if(!(obj instanceof Person)){
                return false;
            }
            //将obj向下转型为Perosn引用,访问其子类属性
            Person p = (Person)obj;
            return this.age == p.age;
        }
    }

      在复写Object中的equals方法时,一定要注意public boolean equals(Object obj)的参数是Object类型,在调用对象的属性时,一定要进行类型转换,在转换之前必须进行类型判断。.

    2、toString方法

      toString方法返回该对象的字符串表示,其实该字符串内容就是对象的类型+@+内存地址值。

      由于toString方法返回的结果是内存地址,而在开发中,经常需要按照对象的属性得到相应的字符串表现形式,因此也需要重写它。

    class Person extends Object{
        int age ;
        //根据Person类的属性重写toString方法
        public String toString() {
            return "Person [age=" + age + "]";
        }
    }

    三、String类

    1、概述:

      String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。字符串是常量;它们的值在创建之后不能更改,其实就是说一旦这个字符串确定了,那么就会在内存区域中就生成了这个字符串。字符串本身不能改变,但str变量中记录的地址值是可以改变的。

      字符串的本质是一个字符的数组。

    String s3 = "abc";
    String s4 = new String("abc");
    System.out.println(s3==s4);//false
    System.out.println(s3.equals(s4));//true,

    //因为String重写了equals方法,建立了字符串自己的判断相同的依据(通过字符串对象中的字符来判断)

    s3和s4的创建方式有什么不同呢?

    ①、 s3创建,在内存中只有一个对象。这个对象在字符串常量池中(进入常量池中字符是固定了其地址了,是不能改变的常量。若第二个在创建的时候,其里面值存在在常量池里,那不会再额外的创建,会直接调用常量池里的字符,但是还是需要将常量池中的字符的地址传给后来创建的字符,这样就是还是两个地址,但是其包含的字符是一样的)

    ②、s4创建,在内存中有两个对象。一个new的对象在堆中,一个字符串本身对象,在字符串常量池中。

    2、部分构造方法:

    String(byte[] bytes, int offset, int length)
              通过使用平台的默认字符集解码指定的 byte 子数组,构造一个新的 String

    char[] chs = new char[]{’a’,’b’,’c’,’d’,’e’};
    String s = new String(chs); //创建String对象,把数组元素作为字符串的内容(字符转串)

    3、部分方法:

    length()
              返回此字符串的长度。

    (数组长度用的是length属性、字符串是用的length方法、集合是用的size方法)

    getBytes(Charset charset)
              使用给定的 charset 将此 String 编码到 byte 序列,并将结果存储到新的 byte 数组。

    toCharArray()
              将此字符串转换为一个新的字符数组。

    toString()
              返回此对象本身(它已经是一个字符串!)直接打印引用类型变量时,默认调用该类型进行重写后的toString方法。

    四、字符缓冲区:

    1、StringBuffer类:

      StringBuffer又称为可变字符序列,它是一个类似于 String 的字符串缓冲区,通过某些方法调用可以改变该序列的长度和内容。StringBuffer是个字符串的缓冲区,即就是它是一个容器,容器中可以装很多字符串。并且能够对其中的字符串进行各种操作。

    2、方法:

    因为其返回值很多都是其本身,所以其可以进行链式调用。

    创建一个字符串缓冲区对象。用于存储数据。
    StringBuffer sb = new StringBuffer();
    添加数据。不断的添加数据后,要对缓冲区的最后的数据进行操作,必须转成字符串才可以。
    String str = sb.append(true).append("hehe").toString();

    3、StringBuilder类:

      它也是一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。

  • 相关阅读:
    Python在程序中进行多任务操作-协程
    Python-异常处理
    Python多任务-协程
    【每日一具4】TikTok 抖音国际版(网站)使用起来非常简单,无需FQ随便看
    【每日一具3】优美APP一款好用的短视频软件,优美APP专注于各种小姐姐短视频
    Python在程序中进行多任务操作-线程
    Python在程序中进行多任务操作-进程
    Python多任务-线程
    Python多任务-进程
    【每日一具3】优美APP一款好用的短视频软件,优美APP专注于各种小姐姐短视频
  • 原文地址:https://www.cnblogs.com/21-forever/p/10919507.html
Copyright © 2011-2022 走看看