java 面向对象String类

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

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


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


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


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


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


6) boolean startsWith(String prefix)若是字符串以 prefix 开始,
则返回 trueblog


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则在堆里开空间

相关文章
相关标签/搜索