第五节 String类,subString,equals方法

下面的主要介绍一下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;
            }*/
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java语言程序设计 第6章 字符串 Java语言程序设计(第3版)第06章-字符串全文共31页,当前为第1页。 6.1.1 1 String 2 3 主要内容 Java语言程序设计(第3版) 格式化输出 StringBuilder Java语言程序设计(第3版)第06章-字符串全文共31页,当前为第2页。 6.1.1 String Java语言程序设计(第3版) Java语言程序设计(第3版)第06章-字符串全文共31页,当前为第3页。 6.1.1 使用字符串字面值创建String对象。 String str = "Java is cool"; 使用String的构造方法String str = new String("Java is cool"); 这两种方式有区别,后面说明。 创建字符串对象 Java语言程序设计(第3版) Java语言程序设计(第3版)第06章-字符串全文共31页,当前为第4页。 6.1.1 字符串基本操作 Java语言程序设计(第3版) 字符串在内存的表示。设有下面声明: String str = new String("Java is cool"); 这个字符串共有12个字符,每个字符有一个下标,下标从0开始。 str.charAt(6)返回字母s。 Java语言程序设计(第3版)第06章-字符串全文共31页,当前为第5页。 6.1.1 字符串基本操作 Java语言程序设计(第3版) 问题描述 编写一个方法判断字符串是否是回文串。 public static boolean isPalindrome(String s) 思路:取出字符串的第一个和最后一个比较,若不相同,程序结束,返回false。若相等,比较第二个字符和倒数第二字符,直到比较到字符串的中间字符为止,若都相等,则是回文,返回true。 Java语言程序设计(第3版)第06章-字符串全文共31页,当前为第6页。 6.1.1 字符串查找 Java语言程序设计(第3版) int indexOf(int ch) int lastIndexOf(int ch) 找到返回下标值,找不到返回-1。 Java语言程序设计(第3版)第06章-字符串全文共31页,当前为第7页。 6.1.1 字符串转换为数组 Java语言程序设计(第3版) char[] toCharArray() byte[] getBytes() Java语言程序设计(第3版)第06章-字符串全文共31页,当前为第8页。 6.1.1 字符串比较 Java语言程序设计(第3版) 不能使用"=="号来比较字符串内容是否相等 比较内容是否相等: boolean equals(String str) boolean equalsIgnoreCase(String str) s1 s2 Hello Hello 字符串常量池 s1 s2 Hello Java语言程序设计(第3版)第06章-字符串全文共31页,当前为第9页。 6.1.1 字符串比较 Java语言程序设计(第3版) 比较大小: int compareTo(String str) 小于,返回值小于0 等于,返回值等于0 大于,返回值大于0 判断前缀、后缀和包含 boolean startsWith(String prefix) boolean endsWith(String suffix) boolean contains(String str) String s1 = "ABC"; String s2 = "ABE"; System.out.println( s1.compareTo(s2); 输出-2 Java语言程序设计(第3版)第06章-字符串全文共31页,当前为第10页。 6.1.1 字符串的拆分和组合 Java语言程序设计(第3版) String[] split(String regex) static String join(CharSequence delimiter, CharSequence... elements) boolean matches(String regex) Java语言程序设计(第3版)第06章-字符串全文共31页,当前为第11页。 6.1.1 String对象的不变性 Java语言程序设计(第3版) 一旦创建一个String对象,就不能对其内容进行改变。 s Hello,world s.replace('o','A'); HellA,wArld s = s.substring(0,6).concat("Java"); Hello,Java s s.toUpperCase(); HELLO,JAVA System.out.println(s); String s = "Hello,wo

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值