文章目录

Day 9

2019年4月20日。
这是我学习Java的第九天。
这一天,我学到了以下的知识。

API

API(Application Programming Interface),指的是应用程序编程接口。

Java API,就是Java提供给我们使用的类,这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要这些类如何使用即可。

Object类

Object,是类层次结构的根类。所有类都是直接或者间接继承该类。

构造方法:​public Object()​

常用的成员方法

  • ​public int hashCode()​​:返回该对象的哈希码值
    - 默认情况下,该方法会根据对象的地址来计算
    - 不同对象的hashCode()一般来说不会相同。但是,同一个对象的hashCode()值肯定相同
    - 不是对象的实际地址值,可以理解为逻辑地址值
  • ​public final Class getClass()​​:返回此 Object 的运行时类
    - 可以通过Class类中的一个方法,获取对象的真实类的全名称。该方法为:public String getName()
  • ​public String toString()​​:返回该对象的字符串表示
    - 它的值等于: getClass().getName() + ‘@’ + Integer.toHexString(hashCode())
    - 由于默认情况下的数据对我们来说没有意义,一般建议重写该方法
    - 直接输出对应的名称,就是调用对象的toString()方法
  • ​public boolean equals(Object obj)​​:指示其他某个对象是否与此对象“相等”
    - 默认情况下比较的是对象的引用是否相同
    - 由于比较对象的引用没有意义,一般建议重写该方法。用于比较成员变量的值是否相等
  • ​protected Object clone() throws CloneNotSupportedException​​:创建并返回此对象的一个副本
    - clone()的权限修饰符是受保护的,在使用的时候,要让该类重写该方法,并把该方法的权限修饰符改为public
    - 使用clone()方法,默认采用的是浅克隆的方式(浅克隆指的是克隆一个对象的时候,如果被克隆的对象中维护了另外一个类的对象,这时候只是克隆另外一个对象的地址,而没有把另外一个对象也克隆一份。另外,对象的浅克隆不会调用构造方法)
    - 深克隆采用IO流来实现。使用 ObjectOutputStream 将对象写入文件中,然后再用ObjectInputStream读取回来

Scanner类

Scanner,JDK5以后用于获取用户的键盘输入。

构造方法:​Scanner(InputStream source)​​​:方法里的参数一般是System类下的静态字段
​​​public static final InputStream in​​,这是标准的输入流,对应着键盘录入。

常用的成员方法

  • ​hasNextXxx()​​:判断下一个是否是某种类型的元素
    - 其中,Xxx可以是Int,Double等
    - 如果需要判断是否包含下一个字符串,则可以省略Xxx
  • ​nextXxx()​​:获取下一个输入项
    - Xxx的含义和上个方法中的Xxx相同

String类

String,由多个字符组成的字符序列。

特点

  • 字符串字面值"abc"也可以看成是一个字符串对象
  • 字符串是常量,一旦被创建,就不能被改变

构造方法

  • ​public String()​​:空构造
  • ​public String(byte[] bytes)​​:把字节数组转成字符串
  • ​public String(byte[] bytes,int index,int length)​​:把字节数组的一部分转成字符串(index:表示的是从第几个索引开始, length表示的是长度)
  • ​public String(char[] value)​​:把字符数组转成字符串
  • ​public String(char[] value,int index,int count)​​:把字符数组的一部分转成字符串
  • ​public String(String original)​​:把字符串常量值转成字符串

常用的成员方法

  • 判断功能
  • ​public boolean equals(Object obj)​​:比较字符串的内容是否相同,区分大小写
  • ​public boolean equalsIgnoreCase(String str)​​:比较字符串的内容是否相同,忽略大小写
  • ​public boolean contains(String str)​​:判断字符串中是否包含传递进来的字符串
  • ​public boolean startsWith(String str)​​:判断字符串是否以传递进来的字符串开头
  • ​public boolean endsWith(String str)​​:判断字符串是否以传递进来的字符串结尾
  • ​public boolean isEmpty()​​:判断字符串的内容是否为空串""
  • ​public boolean equals(Object obj)​​:比较字符串的内容是否相同,区分大小写
  • 获取功能
  • ​public int length()​​:获取字符串的长度
  • ​public char charAt(int index)​​:获取指定索引位置的字符
  • ​public int indexOf(int ch)​​:返回指定字符在此字符串中第一次出现处的索引
  • ​public int indexOf(String str)​​:返回指定字符串在此字符串中第一次出现处的索引
  • ​public int indexOf(int ch,int fromIndex)​​:返回指定字符在此字符串中从指定位置后第一次出现处的索引
  • ​public int indexOf(String str,int fromIndex)​​:返回指定字符串在此字符串中从指定位置后第一次出现处的索引
  • ​public String substring(int start)​​:从指定位置开始截取字符串,默认到末尾
  • ​public String substring(int start,int end)​​:从指定位置开始到指定位置结束截取字符串
  • 转换功能
  • ​public byte[] getBytes()​​:把字符串转换为字节数组
  • ​public char[] toCharArray()​​:把字符串转换为字符数组
  • ​public static String valueOf(char[] chs)​​:把字符数组转成字符串
  • ​public static String valueOf(int i)​​:把int类型的数据转成字符串(int类型以外的其他类型也可以转换成字符串)
  • ​public String toLowerCase()​​:把字符串转成小写
  • ​public String toUpperCase()​​:把字符串转成大写
  • ​public String concat(String str)​​:把字符串拼接
  • 替换功能
  • ​public String replace(char old,char new)​​:将指定字符进行互换
  • ​public String replace(String old,String new)​​:将指定字符串进行互换
  • 整理功能
  • ​public String trim()​​:去除两端空格
  • 比较功能
  • ​public int compareTo(String str)​​:会对照ASCII 码表,从第一个字母进行减法运算,返回的就是这个减法的结果
    - 如果前面几个字母一样会根据两个字符串的长度进行减法运算返回的就是这个减法的结果
    - 如果连个字符串一摸一样 返回的就是0
  • ​public int compareToIgnoreCase(String str)​​:跟上面一样,只是忽略大小写的比较