String类的使用和原理

一、创建字符串

        String str1="Hello world";
        String str2=new String("Hello world");
        char[] array={
   'a','b','c'};
        String str3=new String(array);
        System.out.println(str1);
        System.out.println(str2);
        System.out.println(str3);

二、字符串使用

(一)、字符串比较原理

         //字符串比较
        String str1="Hello world";
        String str4="Hello world";
        //放在了字符串常量池中
        System.out.println(str1==str4);
        //两个引用(地址)比较
        String str2=new String("Hello world");
        System.out.println(str1==str2);
        //内容比较
        System.out.println(str1.equals(str2));

在这里插入图片描述
在这里插入图片描述

(二)、字符串内容不可变

//字符串不可变:虽然内容发生了改变,但是其引用了3个对象,本不是其本身发生了改变。
        String str5="hello";
        str5=str5+" world";
        str5+="!!!";
        System.out.println(str5);
        
       输出: hello world!!!

注意:虽然是输出了“hello world”,但是这是三个str5引用拼接而成,已经不是第一个str5的引用改变了对象。

在这里插入图片描述若是一定要改变字符串内容:真能通过反射机制

//通过反射来改变String对象的内容
        System.out.println("=======反射==========");
        String str6="Hello";
        // 获取 String 类中的 value 字段. 这个 value 和 String 源码中的 value 是匹配的
        Field valueField=String.class.getDeclaredField("value");
        // 将这个字段的访问属性设为 true
        valueField.setAccessible(true);
        // 把 str 中的 value 属性获取到
        char[] value=(char[]) valueField.get(str6);
        // 修改 value 的值
        value[0]='h';
        System.out.println(str6);
        
        输出:hello

(三)字符与字符串

//字符与字符串
public class Demo1 {
   
    public static void main(String[] args) {
   
        //将字符数组中的内容转化为字符串
        char[] Array1={
   'h','e','l','l','o'};
        String str1=new String(Array1);
        System.out.println(str1);
        //部分字符数组转化为字符串
        String str2=new String(Array1,1,3);
        System.out.println(str2);
        //取得指定索引位置的字符
        System.out.println(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值