JAVA-基础-字符串相关知识

35 篇文章 0 订阅

1.创建字符串

public static void main(String[] args) {
        //创建字符串的三种方式
        //1.
        String str1 = "hello";
        //2.
        String str2 = new String("hello");
        //3.
        char[] chars = {'h','e','l','l','o'};
        String str3 = new String(chars);

        System.out.println(str1);
        System.out.println(str2);
        System.out.println(str3);

    }

String属于引用类型,str1引用了hello,改变str1的引用并不能改变常量池中的hello;
在这里插入图片描述

2.理解字符串的引用

public static void main(String[] args) {
        //创建字符串的三种方式
        //1.
        String str1 = "hello";
        //2.
        String str2 = new String("hello");
        //String str2 =str1;
        //3.
        char[] chars = {'h','e','l','l','o'};
        String str3 = new String(chars);

        System.out.println(str1==str2);//false
        System.out.println(str2==str3);//false
        System.out.println(str3==str1);//false
        三个str都不相同,但在改用str2=str1时,str1的引用和str2相同,因此显示true,

    }

==对比的是两个引用的身份,字符串的equals代表对比两个字符串的内容,
在这里插入图片描述
在这里插入图片描述

String str1 = new String("hello");
        //2.
        //String str2 = new String("hello");
        String str2 = new String("hello");

这里的str1和str2并不相等,因为他们都指向了新的对象,常量池中存在了两个不同的"hello";
想要创建字符串指向已经存在的字符,需要使用intern

public static void main(String[] args) {
        //创建字符串的三种方式
        //1.
        String str1 = "hello";
        //2.
//        String str2 ="hello";

        String str2 = new String("hello").intern();
        //3.
        String str3 = new String("hello");

        System.out.println(str1==str2);
        System.out.println(str2==str3);
        System.out.println(str3==str1);

在这里插入图片描述

3.字符,字节和字符串

字符串的内部包含着一个字符数组,String和char[]可以相互转换

常用的String转char方法

方法名类型作用
public String(char value[])构造将字符数组中的所有内容转化字符串
public String (char value[],int offset,int count )构造将字符串数组中的部分内容转为字符串
public char charAt(int index)普通取得指定索引位置的字符,索引从0开始
public char[] tocharArray()普通将字符串变为字符数组返回

字节常用于数据传输以及编码转换的处理之中,String也能方便和byte[]相互转换

public String (byte bytes[])构造将字节数组变为字符串
public String (byte bytes[],int offset,int length)构造将部分字节数组中的内容变为字符串
public byte[] getBytes()普通将字符串以字节数组的形式返回
public byte[] getBytes(String charsetName)throws unsupportedEncodingException普通编码转换处理

4.StringBuffer和StringBuilder

任何字符串常量都是String对象,且String的常量一旦声明不可改变,如果改变对象内容,改变的是其引用的指向而已
虽然String的操作简单,但由于String的不可更改特性,为了方便字符串的修改,提供StringBuffer和StringBuilder类,两者的大部部分功能相同。
String和StringBuffer最大的区别:String的内容无法修改,而StringBuilde可以修改字符串中的的内容
但两者不能直接转换,需要遵守以下的转换原则:
1.String变为StringBuffer:利用StringBuffer的构造方法或append()方法
2.StringBuffer变为String:调用toString类没有的方法
String和StringBuffer、StringBuilder的区别
String的内容不可修改,其余两者可以修改
StringBuffer和StringBuilder大部分功能是相似的
StringBuffer采用同步处理,属于线程安全操作,而StringBuilder未采用同步处理,属于线程不安全操作

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值