欢迎各位热爱JAVA的朋友进来,这次写了一些在JAVA中String的一些知识,有不足向我指正鸭!
共有三部分:
String的一些基本知识
String类中常用的方法
StringBuilder和StringBuffer
    
     
      String的一些基本知识
     
    
   
    1.String s1=”abc”
    
    s1中保存的不是“abc”字符串
    
    s1中保存的是“abc”字符串的内存地址
    
    “abc”保存在字符串常量池中,字符串常量池位于JVM中的方法区
    
    2.引用数据类型String也会在方法去生成String.class字节码文件
    
    3.垃圾回收器是不会回收字符串常量池等常量的。
    
    4.String类已经重写了equals方法,以下的equals方法调用的是String重写之后的equals方法
    
    5.关于String类中的构造方法
    
    第一个:String s=new String(“”);
    
    第二个:String s=””;最常用
    
    第三个:String s=new String(char数组);
    
    第四个:String s=new String(char数组,起始下标,长度);
    
    第五个:String s=new String(byte数组);
    
    第六个:String s=new String(byte数组,起始下标,长度);
    
    例子:(1)byte[] bytes={97,98,99};
    
    String s2=new String(bytes);
    
    System.out.println(s2);//abc
    
    (2)byte[] bytes={97,98,99};
    
    String s3=new String(bytes,1,2);
    
    System.out.println(s3);//bc
   
    
     
      String类中常用的方法
     
    
    
    (1)char型 charAt(int index)
    
    char c=“中国人”.charAt(1);
    
    System.out.println(c);//输出 国
    
    (2)int型 compareTo(String anotherString)//按字典来比较
    
    int result =”abc”.compareTo(“abc”);
    
    System.out.println(result);//0(等于0)前后一致
    
    int result2=”abcd”.compareTo(“abce”);
    
    System.out.println(result2);//-1(小于0)前小后大
    
    int result3=”abce”.compareTo(“abcd”);
    
    System.out.println(result3);//1(大于0)前大后小
    
    System.out.println(“xyz”.compareTo(“zyx”));//-1拿着字符串第一个字母和后面字符串的第一个字母比较,能分胜负就不再比较了
    
    字符串之间比较大小不能直接使用><,需要使用compareTo方法
    
    (3)boolean型 contains(CharSequence s)
    
    判断前面的字符串中是否包含后面的字符串
    
    System.out.println(“hello.java”.contains(“.java”));//true
    
    (4)boolean型 endsWith(String suffix)
    
    判断当前字符串是否以某个字符串结尾
    
    System.out.println(“sss.txt”.endsWith(“.java”));//false
    
    (5)boolean型 equalsIgnoreCase(String anotherString)
    
    判断两个字符串是否相等,并且同时忽略大小写
    
    System.out.println(“ABC”.equalsIgnoreCase(“abC”));//true
    
    (6)boolean equals(Object anObject)
    
    比较两个字符串必须使用equals方法,不能使用==
    
    System.out.println(“abc”.equals(“abc”));//true
    
    (7)byte[]型 getBytes();
    
    将字符串对象转换成字节数组
    
    byte[] s=”abcde”.getBytes();
    
    for(int i=0;i<s.length;i++){
    
    
    System.out.println(s[i]);
    
    }
    
    (8)int型 indexOf(String str)
    
    判断某个子字符串在当前字符串中第一次出现处的索引(下标)
    
    System.out.println(“oraclejavatrvc.ccdg”.indexOf(“java”));//6
    
    (9)boolean型 isEmpty()
    
    判断某个字符串是否为“空字符串”。底层源代码调用的应该是字符串的length()方法。
    
    String s=””;
    
    System.out.println(s.isEmpty());//true
    
    (10)int型 length()
    
    面试题:判断数组长度和判断字符串长度不一样
    
    判断数组长度是length属性,判断字符串长度是length()方法
    
    System.out.println(“abc”.length());//3
    
    (11)int型 lastIndexOf(String str)
    
    判断某个字符串在当前字符串中最后一次出现的索引(下标)
    
    System.out.println(“shgdwjavassjava”);//11
    
    (12)String型 replace(target,replacement)
    
    替换
    
    String得到父接口就是CharSequence
    
    String s=”Wangfeixiang”;
    
    System.out.println(s.replace(“Wang”,”Xu”));//Xufeixiang
    
    (13)String[]型 split(String regex)
    
    //拆分字符串
    
    String s=”2002-10-01″;
    
    String[] m=s.split(“-“);
    
    for(int i=0;i<m.length;i++){
    
    
    System.out.println(m[i]);
    
    }//2002 10 01
    
    (14)boolean型 startsWith(String prefix)
    
    //判断某个字符串是否以某个字符串开始
    
    System.out.println(“http://www.vvv.com”.startWith(“https”));//false
    
    (15)String型 substring(int buginIndex)参数是起始下标
    
    //截取字符串
    
    System.out.println(“http://www.baidu.com”.substring(7));//www.baidu.com
    
    (16)String型 substring(int beginIndex,int endIndex)
    
    beginIndex起始位置(包括)
    
    endIndex结束位置(不包括)
    
    System.out.println(“http://www.baidu.com”.substring(7,10));//www
    
    (17)char[]型 toCharArray()
    
    //将字符串转换成char数组
    
    char[] chars=”我是中国人”.toCharArray();
    
    for循环…….
    
    (18)String型 toLowerCase();
    
    //转换为小写
    
    System.out.println(“AFDWDSsaedDWS”.toLowerArray());
    
    (19)String型 toUpperCase();
    
    //转换为大写
    
    (20)String型 trim()
    
    //去除字符串前后空白
    
    String s=”     hello  hello    “;
    
    System.out.println(s.trim());//hello  hello
    
    (21)String型 String.valueOf();
    
    //将非字符串转换成字符串
    
    String中只有一个方法是静态的,不需要new对象
    
    String s1=String.valueOf(3.14);
    
    !!!!!!!!本质上System.out.println()这个方法在输出任何数据的时候都是先转换成字符串再输出
    
    println()先调用String.valueOf()方法然后valueOf()再调用toString()
    
    所以输出的任何内容本质上都是字符串
   
    
     
      StringBuilder和StringBuffer
     
    
    
    1.StringBuffer底层实际上是一个byte[]数组,往StringBuffer中放字符串,实际上是放到byte数组当中了,StringBuffer的初始化容量是16
    
    2.拼接字符串,调用append()方法
    
    append()方法底层在进行追加的时候,如果byte数组满了,会自动扩容
    
    3.如何优化StringBuffer的性能?
    
    在创建StringBuffer的时候尽可能给定一个初始化容量,最好减少底层数组得到扩容次数。预估计一下,给一个大一些初始化容量
    
    4.StringBuffer和StringBuilder区别:StringBuffer中的方法都有synchronized关键字修饰,表示StringBuffer在多线程环境下运行时安全的
    
    StringBuilder中的方法都没有synchronized关键字修饰,表示StringBuilder在多线程环境下运行是不安全的
    
    StringBuffer是线程安全的
    
    StringBuilder是非线程安全的(涉及到多线程)
   
好了,就到这里啦!感谢大家观看哈哈!栓Q~
以后我会更新一些关于JAVA的一些知识!中间会有
计算机网络
、
计算机组成原理
、
数据结构与算法
和
mysql
的知识很全哦~
谢谢大家!!!
共同进步鸭!
 
