String字符串存储:分析字符串是不可变对象的原因

 

String字符串存储

  • String字符串:存储分析

    • 就是字符串内部维护了一个:字符数组:char[] ;

       

    • 1.1源码分析:构造方法,用于创建对象;

      //1,String的构造方法:String();
      public String() {
         this.value = "".value;
      }

      //2,String的构造方法:String(String);
      public String(String original) {
         this.value = original.value;
         this.hash = original.hash;
      }

      //3,String的构造方法:String(char[]); //重点分析
      public String(char value[]) {
         this.value = Arrays.copyOf(value, value.length);
      }

      /*

      笔记:
      1,根据构造方法3,可以看出,String内部维护了一个char[]数组,调用Arrays类的copyOf方法;
      2,分析Arrays类;
      3,分析copyOf()方法:该方法被static修饰,不能被子类重写;存放在内存的方法区,只有一份!

      */
    • 1.2:字符数组存储:

      • 字符数组:Arrays.copyOf();

      • 该方法被static修饰,不能被子类重写;static修饰的方法,存放在方法区;


        /**
        * 总结:分析Arrays类:
        *
        */
        public class ArraysDemo01 {
           public static void main(String[] args) {

               //1.1 定义一个字符数组
               char[] charArr=new char[5];

               //1.2 给数组赋值
               charArr[0]='h';
               charArr[1]='e';
               charArr[2]='l';
               charArr[3]='l';
               charArr[4]='o';

               //1.3 遍历数组
               for (char x: charArr) {
                   System.out.print(x);//hello
              }

               System.out.println("-----------------");

               /**
                * 用Arrays类的copyOf(char[],int i)方法:
                * 1,参数类型:char[]数组,int类型;
                * 2,返回值类型:char[];
                * 3,该方法被static修饰;
                */
               //1.4
               char[] charArr1=Arrays.copyOf(charArr,5);

               for (char c:charArr1) {
                   System.out.print(c);//hello
              }


          }
        }

posted @   gzs1024  阅读(66)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示