zoukankan      html  css  js  c++  java
  • java 面向对象String类

    1.String类:String 是不可变字符序列

    1) char charAt(int index)返回字符串中第 index 个字符。


    2) boolean equalsIgnoreCase(String other) 如果字符串与other
    相等(忽略大小写),则返回 true


    3) int indexOf(String str) lastIndexOf() 查找指定字符串
    出现的位置(下标)


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


    5) String replace(char oldChar,char newChar)返回一个新串
    它 是 通过 用 newChar 替 换 此字 符 串中 出 现的 所 有
    oldChar 而生成的


    6) boolean startsWith(String prefix)如果字符串以 prefix 开始,
    则返回 true


    7) boolean endsWith(String prefix) 如果字符串以 prefix 结
    尾,则返回 true


    8) String substring(int beginIndex)

    String substring(int beginIndex,int endIndex)返回一个新字符
    ,该串包含从原始字符串 beginIndex 到串尾或 endIndex-1
    的所有字符


    9) String toLowerCase()返回一个新字符串,该串将原始字符
    串中的所有大写字母改成小写字母


    10) String toUpperCase()返回一个新字符串,该串将原始字
    符串中的所有小写字母改成大写字母


    11) String trim() 返回一个新字符串,该串删除了原始字
    符串头部和尾部的空格

    public class MyString {
        public static void main(String[] args) {
            String str1 = "hello word";
            String str2 = "hello word";
            
            System.out.println(str1.charAt(1));//e 返回字符串中第 index 个字符。
            
            System.out.println(str1.length());//10
            
            System.out.println(str1.equalsIgnoreCase("abc"));//false
            System.out.println(str1.equals(str2));//true
            
            System.out.println(str1.indexOf('d'));//9 下标从0开始
            System.out.println(str1.lastIndexOf('o'));//7
            
            System.out.println(str1.replace('o', 'q'));//hellq wqrd
            System.out.println(str1);//hello word 上一条语句替换没有发生在原来的字串中 而是产生一个新串作为输出
            
            System.out.println(str1.startsWith("he"));//true
            System.out.println(str1.endsWith("rd"));//true
            
            System.out.println(str1.substring(3));//lo word
            System.out.println(str1.substring(1, 6));//ello
            System.out.println(str1);//hello word
            str1 = str1.substring(3);
            System.out.println(str1);//lo word
            
            String str3 = "  HELlo word  ";
            System.out.println(str3.trim());//HELlo word
            System.out.println(str3.toLowerCase());//  hello word
            System.out.println(str3.toUpperCase());//  HELLO WORD
            
        }
    }
    View Code

    2.String比较和构造方法

    compareTo源码:先比较每一个字符是否相同,再比较长度

    public int compareTo(String anotherString) {
            int len1 = value.length;
            int len2 = anotherString.value.length;
            int lim = Math.min(len1, len2);
            char v1[] = value;
            char v2[] = anotherString.value;
    
            int k = 0;
            while (k < lim) {
                char c1 = v1[k];
                char c2 = v2[k];
                if (c1 != c2) {
                    return c1 - c2;
                }
                k++;
            }
            return len1 - len2;
        }
    View Code

    实例:

    public class TestString {
        public static void main(String[] args) {
            String str="apple";
            String str2="banana";
            String str3="cat";
            String str4="dog";
            String str5="app";
            /**求两个字符串的长度的最小值,使用循环,比较对应位置上的字母,如果不相同,则对应位置字母的ASCII值相减*/
            System.out.println(str.compareTo(str2));  //-1    97-98?
            System.out.println(str.compareTo(str3));//-2    97-99?
            System.out.println(str.compareTo(str4));//-3    97-100?
            //两个字符串的长度相差  5-3=2
            System.out.println(str.compareTo(str5)); //2  
            
            /**String类的构造方法*/
            String s1=new String();//创建了一个长度为0的字符串
            String s2=null;//没有创建对象,只是声明了String类型的对象s2
            String s3=new String("hello");
            //通过char类型的数组构造String对象
            char [] c={'a','b','c'};
            String s4=new String(c);
            System.out.println(s4);//abc
            
            byte [] b={97,98,99};
            String s5=new String(b);
            
            String s6=new String(c,0,2);
            System.out.println("s6:"+s6);//s6:ab
            
            
            
            
           
        }
    }
    View Code

    3.字符串相等的判断

    ==:比较两个字符串内存地址是否相等

     equals(Object obj):用于比较两个字符串对象的内容是否相等 

     1 public class TestString {
     2     public static void main(String[] args) {
     3         String str="abc";
     4         String str2=new String("abc");   
     5         System.out.println("两个对象的内存地址是否相等:"+(str==str2));//false
     6         /**比较对应位置上的字符是否相等,如果所有的对象位置上的字符均相等,true,否则返回false*/
     7         System.out.println("两个对象的内容是否相等:"+(str.equals(str2)));
     8         //以下结果为 false
     9         /**因为Person对象 instanceof String  的结果为false ,直接返回false*/
    10         System.out.println("String对象与Person对象的内容是否相等:"+(str.equals(new Person())));
    11     }
    12 }
    13 class Person{
    14     
    15 }

    4.常量池:用于存储在编译期确定,并被保存在已编译的字节码文件中的一些数据,包括 final 修饰变量及字符串变量,和符号引用量。

     1 public class TestString2 {
     2     public static void main(String[] args) {
     3         String str1="abc";
     4         String str2="a"+"b"+"c";
     5         String str3=new String("abc");
     6         String str4=str3+"";
     7         String str5=new String("abc");
     8         System.out.println("str1==str2:"+(str1==str2));//true
     9         System.out.println("str1==str3:"+(str1==str3));//false
    10         System.out.println("str1==str4:"+(str1==str4));//false
    11         System.out.println("str3==str5:"+(str3==str5));//false
    12                 
    13     }
    14 }

    等号右侧有new则在堆里开空间

  • 相关阅读:
    javaScript真值和假值以及相等操作符
    javaScript操作符
    javascript变量作用域
    javaScript变量
    Linux命令学习之路——档案拷贝:cp
    Linux命令学习之路——变更文档拥有者:chown
    Linux命令学习之路——文档权限管理:chmod
    Linux命令学习之路——变更工作目录:cd
    关于Scrum团队的理解
    关于MATHAPP的测试
  • 原文地址:https://www.cnblogs.com/bfcs/p/10314282.html
Copyright © 2011-2022 走看看