第五节 String类,subString,equals方法

来源:互联网 发布:cs go 准星数据 编辑:程序博客网 时间:2024/06/03 12:54

下面的主要介绍一下String类,String 类中的substring方法与equals方法

public class base03 {


    public static void main(String[] args) {
        String aString="abcdefg";
        //String类源码:如下,String类是final修饰,表示类不能被继承,类中所有的方法都不可重写
        //public final class String  implements java.io.Serializable, Comparable<String>, CharSequence
        //private final char value[];//说明String 其实是一个char数组
        
        
        //此时参数2为beginIndex,
        String bString=aString.substring(2);
        //源码,直接调用String重载方法,endIndex为
         /*public String substring(int beginIndex) {
            return substring(beginIndex, count);
         }*/
                
        
        System.out.println(bString);
        aString.substring(1, 5);
        
        //substring源码  此源码的substring方法就是aString.substring(2)中的方法
        /*public String substring(int beginIndex, int endIndex) {
            if (beginIndex < 0) {
                throw new StringIndexOutOfBoundsException(beginIndex);
            }
            if (endIndex > count) {
                throw new StringIndexOutOfBoundsException(endIndex);
            }
            if (beginIndex > endIndex) {
                throw new StringIndexOutOfBoundsException(endIndex - beginIndex);
            }
            return ((beginIndex == 0) && (endIndex == count)) ? this :
                new String(offset + beginIndex, endIndex - beginIndex, value);
       }*/
        
        
      String iString="hello";
      String jString="hello";
      System.out.println(iString==jString);//true  这就是上一篇字符串拼接讲的,证明iString和jString是同一个“hello”
      
      String mString=new String("hello");
      String nString=new String("hello");
      //因为创建两个对象后分配内存,mString和nString中存储的是内存地址,由于不是同一个对象
      System.out.println(mString==nString);//false  
      System.out.println(mString.equals(nString));//true
      
      //String equals 源码:首先比较内存地址,如果内存地址是一样的,那么一定相等。如果不相等,则继续
      //判断是否是String类型,然后进行char数组的一 一 对比
      /*  public boolean equals(Object anObject) {
            if (this == anObject) {
                return true;
            }
            if (anObject instanceof String) {
                String anotherString = (String)anObject;
                int n = count;
                if (n == anotherString.count) {
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = offset;
                int j = anotherString.offset;
                while (n-- != 0) {
                    if (v1[i++] != v2[j++])
                    return false;
                }
                return true;
                }
            }
            return false;
            }*/
    }
}
原创粉丝点击