首页 > 代码库 > 常用类(一)

常用类(一)

Object Scanner String
一丶Object类(所有类的根父类)
 构造方法:Object();
 1、toString()方法:返回该对象的字符串表示。
  1)子类没有重写之前,访问其toString()方法相当于Sysyem.out.println(对象名);
   打印出来:打印出来的是地址值:包名.类名@16进制数据:地址值
  2)源码分析: public String toString(){
       return getClass().getName() + "@" + Integer.toHexString(hashCode());
      }
     getClass()方法:返回的当前正在运行的类;
     getName:返回的是全路径名称,是以String字符串形式显示出来
     //getClass().getName();访问的就是类名
     hashCode()方法:返回该对象的哈希值。
      希码值:是通过哈希表(Hashtable)里面的哈希算法算出来的,可以理解为地址值(整数)
     @:地址标记
     Integer.toHexString(hashCode()):返回一个整数的16进制数据
  3)方法重写:开发中尽量所有类都要重写toString()方法
   写一个类的时候,定义完必要的成员变量,在适当的情况重写Object类的toString()方法;
   在eclipse中无需直接手动添加重写toString()方法同set()/get()方法一样,eclipse中提供了自动添加重写toString方法
   重写后再次调用toString()方法
    打印出来: 类名 [成员变量1 = xxx, 成员变量2 = xxx]
 2、equals(Object obj)方法:判断obj这个对象与当前对象是否“相等”
  1)子类没有重写之前,默认的比较的是地址值,返回的是boolean类型false/true。
  2)源码: public boolean equals(Object obj) {
       return (this == obj);
     } 
  3)方法重写:比较两个对象中的内容是否相同,就需要在其子类中去重写equals()方法!
   eclipse中同样提供了equals的方法重写 egg:
   @Override  //成员方法 name,age
   public boolean equals(Object obj) {
    if (this == obj)
     return true;
    if (obj == null)
     return false;
    if (getClass() != obj.getClass()) //if(!(obj instanceof Student))
     return false;
    Student other = (Student) obj;
    if (age != other.age)
     return false;
    if (name == null) {
     if (other.name != null)
      return false;
    } else if (!this.name.equals(other.name))
     return false;
    return true;
    }

   说明:对象名 instanceof 类名 判断该对象是否是该类的实例化。
   重写了equals(Object obj)方法后,比较的便不是地址值,只要obj是该类的一个实例,并且其成员变量值相同,便返回true。
 3、clone()方法:创建并返回此对象的一个副本,也就是复制功能执行特定的复制操作。
  1)方法重写:要重写clone()方法,其类必须实现Cloneable接口
   @Override //如果此对象的类不能实现接口Cloneable,则会抛出 CloneNotSupportedException异常
   protected Object clone() throws CloneNotSupportedException {
    return super.clone();
   }
  2)clone方法的使用:protected Object clone()返回的是Object类型的一个对象
   需要强转成当前类类型使用 egg;Teacher t2 = (Teacher)t1.clone();
           t2 就是 t 复制的副本
二、Scanner类(获取用户的键盘输入)
 1、构造方法:public Scanner(InputStream source)
 2、常用方法: 1)public int nextInt()
      返回键盘录入的int类型的值
     2)public String nextLine()
      返回键盘录入的String类型的值
 3、Scanner类的使用
  1)不需要继承,只需导包即可:import java.util.Scanner;
  2)创建Scanner类的对象:Scanner s = new Scanner(System.in);
  3)显示的提示使用键盘录入:System.out.println("所要录入的什么东西");
  4)获取键盘录入的值:String str = s.nextLine();
       int i = s.nextInt();
   注意:创建一个对象可以多此获取键盘录入的值,但如果先获取到int类型的值再获取String类型的值,就获取不到了,需要重新创建对象。
三、String类(Java程序中的所有字符串字都作为此类的实例实现)
 1、构造方法: public String()  //无参构造
     public String(byte[] bytes)  //参数是byte类型的数组,将该数组转换为字符串类型
     public String(byte[] bytes,int offset,int length) //参数 byte类型的数组bytes,从第offset个开始,长度为length
     public String(char[] value)  //参数是cher类型的数组,将该数组转换为字符串类型
     public String(char[] value,int offset,int count) 
     public String(String original) //相当与 String s = "(String original)";
 2、内存分配:在方法区内有一个常量池区域,专门存放字符串,并且程序中所有出现的字符串都会存放在次常量池中
   所以字符串一但被赋值,其值不可改变
   egg:字符串相加
    字符串变量相加,先开辟空间,再相加
    字符串常量相加,先相加,然后在常量池中找是否有这个值,有就直接返回其地址值,没有再在常量池中创建
    public class StringDemo {
     public static void main(String[] args) {
      String s1 = "hello";
      String s2 = "world";
      String s3 = "helloworld";
      System.out.println(s3 == s1 + s2);// false
      System.out.println(s3.equals((s1 + s2)));//true
      System.out.println(s3 == "hello" + "world");///true
      System.out.println(s3.equals("hello" + "world"));//true
     }
    }

 3、常用方法——判断功能
  boolean equals(Object obj)  //String类自己已经重写了equals方法,所以判断两个字符串是否相同;
  boolean equalsIgnoreCase(String str) //判断该字符串与 String str是否相同 不考虑大小写;
  boolean contains(String str)  //判断该字符串是否包含 String str;
  boolean startsWith(String str)  //判断该字符串是否以 String str 开始;
  boolean endsWith(String str)  //判断该字符串是否以 String str 结束;
  boolean isEmpty()  //判断该字符串是否为空;
   String s = null; 空对象,根本没法调用方法 与 String s = ""; 不同
 4、常用方法——获取功能
  int length()  //获取该字符串的长度,注意与数组中数组长度区分  s.length()/i.length;
  char charAt(int index) //获取该字符串第 int index 个字符;
  int indexOf(int ch)  //获取该字符串 第一次出现 int ch 字符的索引;若没有返回-1;
  int indexOf(String str)  //获取该字符串 第一次出现 String str 字符串的索引;
  int indexOf(int ch,int fromIndex)  //获取该字符串 从第 int formIndex 个开始第一次出现的 int ch 字符的索引;
  int indexOf(String str,int fromIndex) //获取该字符串 从第 int formIndex 个开始第一次出现的 String str 字符串的索引;
  String substring(int start)  //获取从第 int start 个开始到结束 这个新的字符串;
  String substring(int start,int end)  //获取从第 int start 个开始到第 int end 个结束,这个新的字符串; 包左不包右;
 5、常用方法——转换功能
  byte[] getBytes()  //将该字符串转换为 byte[] 数组;
  char[] toCharArray()  //将该字符串转换为 char[] 数组;
  static String valueOf(char[] chs) //将 char [] chs 转换为 字符串;
  static String valueOf(int i)  //将 int i 转换为 字符串;
  String toLowerCase()  //将该字符串的所有字母转换为小写字母;
  String toUpperCase()  //将该字符串的所有字母转换为大写字母;
  String concat(String str)  //将 String str 拼接在该字符串的后面;
 6、常用方法——其他方法
  替换功能
  String replace(char old,char new)  //将 char old 改为 char new,并返回 new;
  String replace(String old,String new)  //将 String old 改为 String new,并返回 new;
  去除字符串两空格 
  String trim()  //去除当前字符串中首尾中出现的空格,并返回;
  按字典顺序比较两个字符串 
  int compareTo(String str) //若该字符串在String str之前,则返回负整数;若之后,返回正整数;若相等,返回0
  int compareToIgnoreCase(String str) //不考虑大小写

常用类(一)