zoukankan      html  css  js  c++  java
  • java常用类

    String

    String表示字符串,所谓字符串,就是一连串的字符;

    String是不可变类,一旦String对象被创建,包含在对象中的字符序列(内容)是不可变的,直到对象被销毁;

    常量池:JVM中一块独立的区域存放字符串常量和基本类型常量(public static final)。

    String使用private final char value[]来实现字符串的存储,也就是说String对象创建之后,就不能再修改此对象中存储的字符串内容,就是因为如此,才说String类型是不可变的.

    String对象比较:

    单独使用""引号创建的字符串都是常量,编译期就已经确定存储到常量池中;

    使用new String("")创建的对象会存储到堆内存中,是运行期新创建的;

    使用只包含常量的字符串连接符如"aa" + "bb"创建的也是常量,编译期就能确定,已经确定存储到常量池中;

    使用包含变量的字符串连接符如"aa" + s1创建的对象是运行期才创建的,存储在堆中;

    Eg:

    package string;

    public class StringDemo {

           public static void main(String[] args) {

                  /*

                   *  "" 其实表示的是  String的匿名对象

                   */

                  String s = "";

                  /**

                   * String()    初始化一个新创建的 String 对象,使其表示一个空字符序列。

                   *  "",不是表示 null

                   *  String(String original)

                   *  String s = new String("asd");// s 的值就是 asd

                   */

                  s = new String();//""

                  String s1  = new String("11");

                  String s2  = new String("11");

                  System.out.println(s1 == s2);//false

                  String s3 = "22";

                  String s4 = "22";

                  System.out.println(s3 == s4);//true

                  System.out.println(s3 == s2);//false

                  String  s5 = "2" + "2";//这句话其实在编译器编译后的class文件中 已经变成  "22"

                  //s5创建了几个对象?//回答:最多一个,如果常量池里面没有就是创建一个,如果常量池里本来就有就是创建零个!下面的str一样的道理。

                  String str = "A" +"B"+ "C" +"D" +"E";//String str = "ABCDE";

                  System.out.println(s3 == s5);//true

                  /**

                   * String特点:     不可变的,  一个String对象的内容不能变,一旦内容变量该对象就变成一个新的String对象了

                   *   String  str = "AAA";

                   *   str = str+"12";

                   */

                  String str1 = "ABCDE";

                  System.out.println(str == str1);//true

                  String str2 = "ABC" + "DE";

                  System.out.println(str == str2);//true

                  String  ss = "AB";

                  String str3 = ss + "CDE";//这里的str3在运行期才能确定内容值

                  System.out.println(str3 == str2);//false

                  String str4 = getStr() +"CDE";//在运行期才能确定 str4的值

                  System.out.println(str == str4);//false

                  System.out.println(str3 == str4);//false

                  /*

                   *  String s = "cd";      //一个String对象

                         s = s + "itcast";      //itcast也是String对象, 最后的s的值cditcast,也是一个String对象

                         System.out.print(s);

                   * */

           }

           public static String getStr(){

                  return "AB";

           }

    }

    Eg:

    package reviewDemo;

    public class Demo20 {

        public static void main(String[] args) {

            //s1,s2只新建了一个对象

            String s1 = "你好";

            String s2 = "你好";

           

            //s3,s4新建了两个对象

            String s3 = "你好";

            String s4 = "你好";

        }

    }

  • 相关阅读:
    迷宫寻找路径数
    136. 只出现一次的数字
    48. 旋转图像
    283. 移动零
    面试题 01.06. 字符串压缩
    位运算符
    367. 有效的完全平方数
    868. 二进制间距
    SpringAOP表达式
    Mybatis常见错误及纠错
  • 原文地址:https://www.cnblogs.com/fanweisheng/p/11132215.html
Copyright © 2011-2022 走看看