网站建设公司需要有什么东西,seo工具在线访问,做个网站好还是做淘宝好,nginx wordpress rewrite一、String类概述1、概述java.lang.String类代表字符串。Java程序中所有的字符串文字(例如 abc )都可以被看作是实现此类的实例。String 是引用数据类型#xff0c;不是基本数据类型。类String 中包括用于检查各个字符串的方法#xff0c;比如用于比较字符串abc )都可以被看作是实现此类的实例。String 是引用数据类型不是基本数据类型。类String 中包括用于检查各个字符串的方法比如用于比较字符串搜索字符串提取子字符串以及创建具有翻译为大写或小写的所有字符的字符串的副本。2、特点【重要】a、字符串不变字符串的值在创建后不能被更改。【非常重要】DemoString s1 abc;s1 def;System.out.println(s1); // s1 abcdef分析内存中有abcabcdef两个对象s1从指向abc改变指向指向了abcdef 字符串本身并没有改变而是改变了指向。扩展String对象怎么就不可变底层char[]数组有final修饰意味着这个数组不能扩容等来达到存更多的字符char[]数组是私有的程序员无法直接操作这个char[]数组而且String没有提供这样的方法来修改char[]数组的元素的值。String提供的所有的方法对字符串的修改都是给你返回一个新的字符串对象。b、因为String对象是不可变的可以把一些字符串存到常量池中字符串在常量池中可以被共享。DemoString str1 abc;String str2 abc;分析内存中只有一个 abc 对象被创建同时被 s1 和 s2 共享。c、字符串对象底层的存储JDK1.9之前底层是用 char[ ] 存储JDK1.9之后底层选用 byte[ ] 存储DemoString str abc;相当于char datas[] {a, b, c};String str new String(datas);d、String 类型不能被继承因为 String 是由final 修饰的。二、String类使用步骤1、导包String 这个类 是 java.lang.String 包内的不需要手动导入。扩展常用的如 基本数据类型String还有一些工具类只要是 lang 包下面的就不必写import 导包语句。2、创建字符串创建字符串的常见31种方式。(三种构造方法一种直接创建)a、构造方法创建public String() 初始化新创建的 String对象以使其表示空字符序列public String(char[] value) 通过当前参数中的字符数组来构造新的String。public String(byte[] bytes) 通过使用平台的默认字符集解码当前参数中的字节数组来构造新的String。Demo// 无参构造String str new String()// 通过字符数组构造char chars[] {a, b, c};String str2 new String(chars);// 通过字节数组构造byte bytes[] { 97, 98, 99 };String str3 new String(bytes);b、直接创建String str 字符串内容; // 右边直接用双引号分析这里面虽然没有 new 关键字但同时创建了一个 String 对象。三、String 对象的创建String str “hello”;String s1 new String(); // 本质上 this.value new char[0];String s2 new String(String original); //this.value original.value;String s3 new String(char[] a); //this.value Arrays.copyOf(value, value.length);String s4 new String(char[] a,int startIndex,int count).......图解面试题(1)String str new String(hello); 涉及几个对象—— 两个(2)String str1 new String(hello);String str2 new String(hello);涉及几个对象—— 三个四、字符串是如何存储的字符串常量存储在字符串常量池目的是共享。字符串非常量对象存储在堆中。字符串常量池1、当直接创建一个字符串时变量会到字符串常量池中去寻找该字符串如果找到了该变量指向该字符串如果没有找到会用 byte[ ]拼接成所需的字符串然后放入常量池中并指向它。2、使用 new 关键字创建字符串会在堆区创建一个 String 对象而且底层是用 byte[ ] 数组拼接的这个 String 对象并没有放入字符串常量池中而是在堆中该变量指向该对象的地址。扩展字符串常量池在哪里(Oracle官方虚拟机HotSpot)(1)JDK1.6以及之前方法区中(2)JDK1.7挪到堆中即在堆中单独划分了一块字符串常量(3)JDK1.8从堆中挪出挪到一个 “元空间meta space”即类似于方法区五、字符串的拼接结论(1)因为只有常量池中才是共享比较才为 true(2)常量与常量的拼接结果在常量池中(3)只要其中有一个是变量结果就在堆中(4)如果拼接的结果调用 intern() 方法就在常量池中六、空字符串1、表现方式(1)String str ;(2)String str2 new String();(3)String str3 new String();2、判断是否为空(1)if(str ! null str.length() 0)(2)if(str ! null str.equals())(3)if(.equals(str)) 推荐(4)if(str!null str.isEmpty())