Java——String类

1.实例化

1.直接赋值

String str = "haha" ;

2.传统赋值

String str = new String("haha") ;

2.字符串的比较

public class CompExer {

    public static boolean fun1(String str1,String str2){
        if(str1 == str2){
            return true;
        }
        return false;
    }

    public static boolean fun2(String str1,String str2){
        if(str1.equals(str2)){
            return true;
        }
        return false;
    }

    public static void main(String[] args) {
        String string1 = "haha";
        String string2 = new String("haha");
        System.out.println("等号比较:"+fun1(string1,string2));
        System.out.println("equals比较:"+fun2(string1,string2));
    }
}

结果:
在这里插入图片描述
String类中“==”与“equals”的区别:

  • “==”比较的是字符串的地址
  • “equals比较的是字符串的内容”

3.String的匿名对象

使用 “” 定义的内容本质上就是String的匿名对象

String string = “haha”;

这条语句的本质就是将一个String的匿名对象设置一个名字,而此匿名对象保存在堆中

4.两种实例化的区别

直接赋值在这里插入图片描述
没有开辟新的内存空间,且对象保存在对象池中以便下次使用

传统赋值:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190610193044269.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0N
使用此方法会开辟两块内存空间,其中一块会成为垃圾空间,且不会自动保存到对象池中,需要使用intern()方法手动入池

字符串不可变更

字符串一旦定义就不可变更

String str = "hello ";
str += “world”;
System.out.println(str); //hello world

以上变更的是字符串对象而非字符串常量,同时还会产生大量垃圾空间
由此引出StringBuffer和StringBuilder

StringBuffer和StringBuilder

操作字符串的两个类

Synchronized ——> StringBuffer
无 ——> StringBuilder

  • StringBuffer多线程情况下使用
    Synchronized:线程安全关键字
    StringBuilder,String:但线程情况下使用,多线程使用不安全

  • StringBuffer和StringBuilder在拼接的时候不会产生垃圾空间
    String在拼接时会产生新的空间

  • String在拼接时在底层被优化成StringBuilder ——> 调用append ——> 结果调用StringBuilder的toString()方法

String str = "hello ";
str += “world”;
System.out.println(str); //hello world

使用若在循环中使用拼接,优先使用StringBuilder

6.字符与字符串

在这里插入图片描述

package exer.bit.string;

import java.util.Arrays;

public class StringCom {
    public static void main(String[] args) {
        String str = "HelloWorld";
        char []data = str.toCharArray();
        System.out.println(Arrays.toString(data));
    }
}
  String str = "HelloWorld";
  char str2 = str.charAt(5);
  System.out.println(str2);

7.字节与字符串

在这里插入图片描述

package exer.bit.string;

import java.util.Arrays;

public class StringCom {
    public static void main(String[] args) {
        String str = "HelloWorld";
        byte[] data = str.getBytes();
        System.out.println(Arrays.toString(data));
    }
}

8.字符串比较

在这里插入图片描述

package exer.bit.string;

import java.util.Arrays;

public class StringCom {
    public static void main(String[] args) {
        String str1 = "Hello";
        String str2 = "hello";
        System.out.println(str1.equals(str2));   //false
        System.out.println(str1.equalsIgnoreCase(str2));   //true

    }
}

        String string1 = "A";
        String string2 = "a";
        String string3 = "helloA";
        String string4 = "helloB";
        System.out.println(string1.compareTo(string2));//-32
        System.out.println(string2.compareTo(string1));//32
        System.out.println(string3.compareTo(string4));//-1
        System.out.println(string1.compareTo("A"));//0

1.相等:返回0
2.小于:返回负数
3.大于:返回正数

9.字符串查找

在这里插入图片描述

package exer.bit.string;

import java.util.Arrays;

public class StringCom {
    public static void main(String[] args) {
        String string = "Hello World!";
        System.out.println(string.contains("World"));//true
        System.out.println(string.indexOf("W"));//6
        System.out.println(string.indexOf("W",2));//6
        System.out.println(string.endsWith("e"));//false
        System.out.println(string.lastIndexOf("h"));//-1
        System.out.println(string.lastIndexOf("h",2));//-1
    }
}

10.字符串替换

在这里插入图片描述

package exer.bit.string;

import java.util.Arrays;

public class StringCom {
    public static void main(String[] args) {
        String string = "Hello World!";
        System.out.println(string.replaceAll("l","^"));//He^^o Wor^d!
        System.out.println(string.replaceFirst("l","^"));//He^lo World!
    }
}

11.字符串拆分

在这里插入图片描述

package exer.bit.string;

import java.util.Arrays;

public class StringCom {
    public static void main(String[] args) {
        String string = "Hello World! Hello Java!";
        System.out.println(Arrays.toString(string.split(" ")));
        System.out.println(Arrays.toString(string.split("! ",2)));

        String string1 = "255.255.255.0";
        System.out.println(Arrays.toString(string1.split("\\.")));
        //有些内容无法拆分时需要使用“\”转义,例如* ^ | . \……
    }
}

12.字符串截取

在这里插入图片描述

package exer.bit.string;

import java.util.Arrays;

public class StringCom {
    public static void main(String[] args) {
        String string = "Hello World!";
        System.out.println(string.substring(6));//World
        System.out.println(string.substring(6,8));//左闭右开  Wo

    }
}

13.其他操作

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值