Java中的字符串简介

认识String

  1. 创建字符串
        // 方式一
        String str = "Hello world";
        System.out.println(str);
        // 方式二
        String str2 = new String("Hello world");
        System.out.println(str2);
        // 方式三
        char[] array = {'a', 'b', 'c'};
        String str3 = new String(array);
        System.out.println(str3);

“hello” 这样的字符串字面值常量,类型也是 String。
String 也是引用类型.,String str = “Hello”。
2. 字符串比较相等

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

        String str3 = new String("Hello");
        String str4 = new String("Hello");
        System.out.println(str3 == str4);

String 使用 == 比较并不是在比较字符串内容,而是比较两个引用是否是指向同一个对象。
3. 字符串常量池

        String str1 = new String("hello") ;
        String str2 = "hello" ;
        System.out.println(str1 == str2);

        String str3 = new String("hello").intern() ;
        String str4 = "hello" ;
        System.out.println(str3 == str4);

在JVM底层实际上会自动维护一个对象池(字符串常量池):
a. 如果现在采用了直接赋值的模式进行String类的对象实例化操作,那么该实例化对象(字符串内容)将自动保存到这个对象池之中。
b. 如果下次继续使用直接赋值的模式声明String类对象,此时对象池之中如若有指定内容,将直接进行引用;如若没有,则开辟新的字符串对象而后将其保存在对象池之中以供下次使用。
4. 字符串不可变

		String str = "hello" ; 
		str = str + " world" ; 
		str += "!!!" ; 
		System.out.println(str); 

形如 += 这样的操作,表面上好像是修改了字符串,其实不是。+= 之后 str 打印的结果却是变了,但是不是 String 对象本身发生改变,而是 str 引用到了其他的对象。

字符, 字节与字符串

  1. 字符与字符串
    字符串内部包含一个字符数组,String 可以和 char[] 相互转换。
		String str = "helloworld" ; 
		// 将字符串变为字符数组
		char[] data = str.toCharArray() ; 
		for (int i = 0; i < data.length; i++) { 
			 System.out.print(data[i]+" "); 
		} 
		// 字符数组转为字符串
		System.out.println(new String(data)); // 全部转换
		System.out.println(new String(data,5,5)); // 部分转换
  1. 字节与字符串
    字节常用于数据传输以及编码转换的处理之中,String 也能方便的和 byte[] 相互转换。
		String str = "helloworld" ; 
		// String 转 byte[] 
		byte[] data = str.getBytes() ; 
		for (int i = 0; i < data.length; i++) { 
			System.out.print(data[i]+" "); 
		} 
		// byte[] 转 String 
		System.out.println(new String(data)); 

字符串的常见操作
字符串比较

		String str1 = "hello" ;
        String str2 = "Hello" ;
        System.out.println(str1.equals(str2));
        System.out.println(str1.equalsIgnoreCase(str2));

        System.out.println("A".compareTo("a"));
        System.out.println("a".compareTo("A"));
        System.out.println("A".compareTo("A"));
        System.out.println("AB".compareTo("AC"));
        System.out.println("刘".compareTo("杨"));

compareTo()是一个可以区分大小关系的方法,是String方法里是一个非常重要的方法。

字符串查找

        //使用contains()进行位置查找 最简单
        String str = "hello world" ;
        System.out.println(str.contains("world"));

        //使用indexOf()方法进行位置查找
        String str2 = "hello world" ;
        System.out.println(str2.indexOf("world")); //
        System.out.println(str2.indexOf("book")); //
        if (str.indexOf("hello") != -1) {
            System.out.println("可以查到指定字符串!");
        }

字符串拆分

        //按照空格拆分
        String str = "hello world hello boy" ;
        String[] result = str.split(" ") ;
        for(String s: result) {
            System.out.println(s);
        }

        //字符串的部分拆分
        String str2 = "hello world hello bit" ;
        String[] result2 = str.split(" ",2) ;
        for(String s: result2) {
            System.out.println(s);
        }

        //拆分IP地址
        String str3 = "192.168.1.1" ;
        String[] result3 = str.split("\\.") ;
        for(String s: result3) {
            System.out.println(s);
        }

        //多次拆分
        String str4 = "name=zhangsan&age=18" ;
        String[] result4 = str.split("&") ;
        for (int i = 0; i < result4.length; i++) {
            String[] temp = result4[i].split("=") ;
            System.out.println(temp[0]+" = "+temp[1]);
        }

字符串截取

        String str = "hello world" ;
        System.out.println(str.substring(5));
        System.out.println(str.substring(0, 5));

字符串替换

        String str = "hello world" ;
        System.out.println(str.replaceAll("l", "_"));
        System.out.println(str.replaceFirst("l", "_"));

其他常用方法

    public static void main(String[] args) {
        //trim()方法的使用
        String str = " hello world " ;
        System.out.println("["+str+"]");
        System.out.println("["+str.trim()+"]");

        //大小写转换
        String str2 = " hello%$$%@#$%world 哈哈哈 " ;
        System.out.println(str2.toUpperCase());
        System.out.println(str2.toLowerCase());

        //字符串length()
        String str3 = " hello%$$%@#$%world 哈哈哈 " ;
        System.out.println(str3.length());

        //isEmpty()方法
        System.out.println("hello".isEmpty());
        System.out.println("".isEmpty());
        System.out.println(new String().isEmpty());

        //首字母大写
        System.out.println(fistUpper("yuisama"));
        System.out.println(fistUpper(""));
        System.out.println(fistUpper("a"));
    }
    public static String fistUpper(String str) {
        if ("".equals(str)||str==null) {
            return str ;
        }
        if (str.length()>1) {
            return str.substring(0, 1).toUpperCase()+str.substring(1) ;
        }
        return str.toUpperCase() ;
    }

StringBuffer使用

    public static void main(String[] args) {
        StringBuffer sb = new StringBuffer();
        sb.append("Hello").append("World");
        fun(sb);
        System.out.println(sb);

        //字符串反转
        StringBuffer sb2 = new StringBuffer("hello world");
        System.out.println(sb2.reverse());

        //删除
        StringBuffer sb3 = new StringBuffer("hello world");
        System.out.println(sb3.delete(5, 10));

        //插入
        StringBuffer sb4 = new StringBuffer("hello world");
        System.out.println(sb4.delete(5, 10).insert(0, "你好"));
    }
    public static void fun(StringBuffer temp) {
        temp.append("\n").append("www.word.com.cn");
    }

String、StringBuffer、StringBuilder的区别:
a. String的内容不可修改,StringBuffer与StringBuilder的内容可以修改。
b. StringBuffer与StringBuilder大部分功能是相似的。
c. StringBuffer采用同步处理,属于线程安全操作;而StringBuilder未采用同步处理,属于线程不安全操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值