A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© itheiaiziji 初级黑马   /  2018-6-12 12:18  /  570 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

两种方式创建String对象的区别
public class StringDemo {
    public static void main(String[] args) {
        String s1="abc";
        String s2=new String("abc");

        //s1和s2有什么区别?
        //s1在内存中有一个对象,s2在内存中有两个对象

        System.out.println(s1==s2);//false
        System.out.println(s1.equals(s2));//true,因为String类重写了Object类中的equals方法,该方法用于判断字符串是否相等   
    }
}


2.常见的字符串操作方法
/***
* String 类适用于描述字符串事物
* 那么他就提供了多个方法对字符串进行操作
* 常见的操作有哪些?
*/
public class StringMethodDemo {
    //获取
    public static void method_get(){
        String str="abcdeakpf";
        //长度
        sop(str.length());//返回9
        //根据索引获取字符
        sop(str.charAt(4));//返回额e,访问不存在的角标时会发生java.lang.StringIndexOutOfBoundsException
        //根据字符获取索引
        sop(str.indexOf('a'));//返回0,如果没有找到,返回-1
        sop(str.indexOf('a',3));//从3位置开始找,返回5
        //反向索引一个字符出现位置
        sop(str.lastIndexOf("a"));//返回5
    }

    //判断
    public static void method_is(){
        String str="ArrayDemo.java";
        //判断文件名称是否是Array单词开头
        sop(str.startsWith("Array"));//true
        //判断文件名称是否是.java的文件
        sop(str.endsWith(".java"));//true
        //判断文件中是否包含Demo
        sop(str.contains("Demo"));//true

        //还有两种判断boolean equals(str),boolean equalsIgnoreCase(str)忽略大小写
    }

    /**
     * 转换
     * 1.将字符数组转换成字符串
     *      构造函数:
     *          String(char[]);
     *          String(char[] value, int offset, int count);
     *      静态方法:
     *          static String copyValueOf(char[]);
     *          static String copyValueOf(char[] data,int offset,int count);
     *          static String valueOf(char[]);
     * 2.将字符串转成字符数组
     *      char[] toCharArray();
     * 3.将字节数组转成字符串
     *      String(byte[]);
     *      String(byte[] value, int offset, int count);
     * 4.将字符串转成字节数组
     *      byte[] getBytes();
     * 5.将基本数据类型转成字符串
     *      static String valueOf(int)      
     *      static String valueOf(double);
     *      3+"";相当于String.valueOf(3);  
     * 特殊:字符串和字节数组在做转换的过程中,是可以指定编码表的   
     */
    public static void method_trans(){
        //将字符数组转换成字符串,字符串初始化就能完成
        char[] arr={'a','b','c','d','e'};
        String s=new String(arr, 1, 3);//返回“bcd”
        sop("s:"+s);
        //或者
        String ss=String.valueOf(arr);
        sop("ss:"+ss);//abcde
        String sss=String.copyValueOf(arr);
        sop("sss:"+sss);//abcde

        String s1="zxcvbnm";
        char[] chr=s1.toCharArray();
        for(char c:chr){
            sop("ch:"+c);
        }
    }

    //替换
    public static void method_replace(){
        String s="hello java";
        //String s1=s.replace('q','n');//如果要替换的字符不存在,返回的还是原串
        String s1=s.replace("java", "world");
        sop("s:"+s);
        sop("s1:"+s1);//hello world

    }

    //切割
    public static void method_splite(){
        String s="zhangsan,lisi,wangwu";
        String[] arr=s.split(",");
        for(String ss:arr){
            sop(ss);
        }
    }

    //子串,获取字符串中的一部分
    //String substring(begin);
    //String substring(begin,end);
    public static void method_sub(){
        String s="abcdef";
        sop(s.substring(2));//cdef,从指定位置开始到结尾,如果角标不存在,会出现字符串角标越界异常
        sop(s.substring(2, 4));//cd,包含头,不包含尾
        //原串不变
    }

    //大小写转换,去除空格,比较
    public static void method_all(){
        String s="     Hello World    ";
        sop("小写:"+s.toLowerCase());
        sop("大写:"+s.toUpperCase());
        sop("去除空格:"+s.trim());
        String s1="abc";
        String s2="aaa";
        sop(s1.compareTo(s2));//返回1,s1>s2
    }



    public static void sop(Object o){
        System.out.println(o);
    }

    public static void main(String[] args) {
        method_get();
        method_is();
        method_trans();
        method_replace();
        method_splite();
        method_sub();
        method_all();
    }
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马