zoukankan      html  css  js  c++  java
  • 4.19JavaString基础

    4.19JavaString基础

    特点:

    • String类又称作不可变字符序列(StringBuilder---可变字符序列)---源码当中序列就是一个数组,利用数组定义的

      • 源码中用了final关键字,所以只能初始化一次

    • String位于java.lang包中,Java程序默认导入java.lang包下的所有类

    • Java字符串就是Unicode字符序列,如:"Java" = 'J'、'a'、'v'、'a'四个Unicode字符

    • Java没有内置的字符串类型,在标准的Java类库中提供了一个预定义的类String,每个用双括号引起来的字符串都是String类的一个实例

    String类的实例

    String e = ""; //空字符串
    String greeting = "Hello World";

    Java允许使用符号"+"把两个字符串连接起来

    String s1 = "Hello";
    String s2 = "World!";
    String s = s1 + s2;

    n-符号"+"把两个字符串按给定的顺序连接在一起,并且是完全按照给定的形式

    n-当"+"运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后进行连接

    实例:

    int age = 18;
    String str = "age is" + age; //str赋值为"age is 18"
    //这种通性通常被用在输出语句中
    System.out.println("age is" + age);

    String类和常量池

    (现阶段没有深入了解虚拟机底层)

    常量池分类

    全局字符串常量池(String Pool)

    特点:

    • 存放的内容是在类加载完成后存到String Pool中

    • 每个VM中只有一份,存放的是字符串常量的引用之(在堆中生成字符串对象实例)

    class文件常量池(Class Constant Pool)

    特点:

    • 在编译的时候每个class都有

    • 存放的是常量(文本字符串、final常量等)和符号引用---方法区

    运行时常量池(Runtime Constant Pool)

    特点:

    • 在类加载完成之后,将每个class常量池中的符号引用值转存到运行时常量池中

    • 每个class都有一个运行时常量池,类在解析之后,将符号引用替换成直接引用,与全局常量池中的引用值保持一致

    String基本用法:

    package com.cxl;

    import com.sun.xml.internal.ws.api.ha.StickyFeature;

    /**
    * 测试字符串的基本类型
    * @author Lucifer
    */
    public class TestString {
       public static void main(String[] args) {

           String str = "abc";
           String str2 = new String("defg"); //通过创建对象的方法去创建String变量
           String str3 = "abc" + "defgh"; //字符串拼接的方法创建
           String str4 = "18" + 19; //返回1819而不是37,这里的"+"号是字符串连接符不是运算符
           System.out.println(str4);

           System.out.println("########");
           String str10 = "Lucifer";
           String str11 = "Lucifer";
           String str12 = new String("Lucifer"); //因为这个是新建的一个对象,所以str11和str12不是同一个对象

           System.out.println(str10 == str11); //比较两个String变量是否是同一个对象---这个是true
           System.out.println(str11 == str12); //这个是false]
           System.out.println(str11.equals(str12)); //这个是true,因为equals是比较值而不是比较指向的对象是否一致
           /*
           分析为什么str11 == str12是false
           因为在类TestString被加载之后这些用双引号引起的字符串和拼接字符串会被拼接
           然后自动的放到常量池中---引用地址放到常量池中
           通常比较字符串都是比较值是否相等,所以比较字符串的话都是使用equals---因为比较值是否相等而不是比较地址是否相等
           (对象相同equals也会返回true---equals源码)---equals源码比较对象、比较字符
            */
      }
    }

     

    It's a lonely road!!!
  • 相关阅读:
    一些关于poi导入的样例
    一些常用的js,jquerry 样例
    Spring MVC使用@ResponseBody返回JSON数据406以及乱码问题解决方案
    最近用的几个sql语句
    读写配置文件
    vtk-py z-Buffer可见算法
    vtk-py求3d模型表面积
    VTK-py读取与显示相关函数
    833系列——二叉排序树
    三维空间判断线与三角形相交
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/14678515.html
Copyright © 2011-2022 走看看