String

package cn.learn.basic;
/*
    程序当中所有双引号字符串,都是String类的对象,就算没有new,仍然是

    字符串特点:
    1.字符串内容不可改变,且字符串可共享使用
    2.底层原理是byte[]字节数组,字节是数据存储的最小单位

    字符串常量池
    1.在String创建的字符串,直接双引号生成的字符串存在字符串常量池(heap)中,此时若串比较即为true
    2.在双引号生成字符串中,堆中开辟有一块字符串常量池,池中有字符串对象
     其地址指向池外堆中的byte[]数组的首地址
     栈中的对象则指向字符串常量池中的字符串对象地址
    注意:
    1.基本类型 == 是比较数值
    2.引用类型 == 是比较地址

 */
public class StringApi {
    public static void main(String[] args) {
        //有参创建字符串
        String str=new String("我是new出来的String");
        System.out.println(str+"
=====================");

        //根据字符数组创建字符串
        char[] str_c={'a','b','c'};
        //new时在堆中创建字符串对象,将char[]数组转换为byte[]数组(ASCII码值),字符串对象再指向byte[]
        String str_cs=new String(str_c);
        System.out.println(str_cs+"
=====================");

        //根据字节数组创建字符串
        byte[] str_b={97,98,99,100,102};
        String str_bs=new String(str_b);
        System.out.println(str_bs+"
=====================");

        //直接创建
        String str2="abc";
        System.out.println(str2+"
=====================");

        String str1="abc";
        System.out.println(str1+"
=====================");
        System.out.println(str1==str2);

        /*
        字符串内容值比较
        public boolean equals(Object obj) -只有参数是字符串并且内容相同才会给true
        public boolean equalsIgnoreCase(String str) -忽略大小写进行比较

        注意事项:
        1.任何对象都能用Object接收
        2.equals具有对称性,a.equals(b)与b.equals(a)效果一致
        3.一般常量在前,变量在括号,避免空指针异常(str=null;  str.equals("abc");Nullpointerexception)
         */
        boolean isEquals=str1.equals(str_cs);
        System.out.println(isEquals);
        System.out.println(str1.equals("abc"));
        System.out.println("abc".equals(str1));  //可见双引号字符串本身就是个对象

        /*
        String中的获取相关常用方法
        public int length(); -获取字符串长度
        public String concat(String str) -将源字符串末尾添加上str字符串,是生成的一个新的字符串,与+相似
        public char charAt(int index) -得到索引值index里的单个字符
        public int indexOf(String str) -查找串str中在主串中首次出现的索引位置,如查找失败返回-1

        String中截取的相关常用方法
        重载方法截取:
        public String substring(int index) -截取从index到字符串末尾的字符串,生成新的字符串
        public String substring(int begin,int end) -截取[begin,end)的字符串,不影响源字符串

        String中分割的方法
        public String[] split(String regex) -按照参数进行切割,regex参考标准
        注:**split其实是一个正则表达式,如果按照英文点切分,必须写\.

         */
        String str3="nihhaoyayaya";

        //获取索引位置
        int index=str3.indexOf("ha");
        System.out.println("ha在nihhaoyayaya中哪个索引位置开始匹配成功:"+index); //3
        //截取
        String sub_string=str3.substring(5,9);
        System.out.println(sub_string); //oyay
        //分割
        String[] str3_split=str3.split("a");
        System.out.println(str3_split[1]); //oy

        /*
        String中与转换相关的常用方法
        public char[] toCharArray();  -将字符串转化为字符数组
        public byte[] getByte(); -获得当前字符串底层的字节数组
        public String replace(CharSequence oldString,charSequence newString);
        -将老字符串替换为新的字符串并返回替换之后的结果字符串
         */
        //转化成字符数组
        char[] chars = "hello".toCharArray();
        System.out.println(chars[2]);
        //转化成字节数组
        byte[] bytes = "aorld".getBytes();
        System.out.println(bytes[0]);
        //替换字符
        String str3_replace=str3.replace("o","m");
        System.out.println(str3);
        System.out.println(str3_replace);
    }


}
原文地址:https://www.cnblogs.com/huxiaobai/p/11443046.html