zoukankan      html  css  js  c++  java
  • String

    字符串

    字符串是常量;它们的值在创建之后不能更改。因为 String 对象是不可变的,所以可以共享。
    

    字符串的特点

    1、字符串String类型本身是final声明的,意味着我们不能继承String。

    2、字符串的对象也是不可变对象,意味着一旦进行修改,就会产生新对象

    我们修改了字符串后,如果想要获得新的内容,必须重新接受。
    
    如果程序中涉及到大量的字符串的修改操作,那么此时的时空消耗比较高。可能需要考虑使用StringBuilder或StringBuffer的可变字符序列。
    

    3、String对象内部是用字符数组进行保存的

    > JDK1.9之前有一个char[] value数组,JDK1.9之后byte[]数组
    "abc"` 等效于 `char[] data={ 'a' , 'b' , 'c' }`。
    

    4、String类中这个char[] values数组也是final修饰的,意味着这个数组不可变

    5、就因为字符串对象设计为不可变,那么所以字符串有常量池来保存很多常量对象

     

    6、任意数据类型与"字符串"进行拼接,结果都是字符串

    7、字符串的对象个数

    String str1 = "hello";//1个,在常量池中
    String str3 = new String("hello");
    //str3首先指向堆中的一个字符串对象,然后堆中字符串的value数组指向常量池中常量对象的value数组

    字符串对象比较

    1、==:比较是对象的地址

    只有两个字符串变量都是指向字符串的常量对象时,才会返回true
    

    2、equals:比较是对象的内容,因为String类型重写equals,区分大小写

    3、equalsIgnoreCase:比较的是对象的内容,不区分大小写 

    4、compareTo:String类型重写了Comparable接口的抽象方法,自然排序,按照字符的Unicode编码值进行比较大小的,严格区分大小写  

    5、如何判断某个字符串是否是空字符串

    if("".equals(str))
    
    if(str!=null  && str.isEmpty())
    
    if(str!=null && str.equals(""))
    
    if(str!=null && str.length()==0)
    

    注释(indexof方法内源码涉及)ch < Character.MIN_SUPPLEMENTARY_CODE_POINT

    以0x开头代表十六进制,0开头的是八进制。
    Character. MIN_SUPPLEMENTARY_CODE_POINT这个数代表十进制中62355,刚好是2个字节。
    

      

      

     

     

     

     

     

     

    本文为原创文章,转载请标明出处
  • 相关阅读:
    2019高考数学理科Ⅱ卷解析版[解答题]
    对风说爱你
    佛教人生-伴侣
    【Echarts每天一例】-1
    算法中涉及的专业英语
    python--随机函数(random,uniform,randint,randrange,shuffle,sample)
    【linux shell系列--1】crontab命令
    【Python爬虫实战--3】html写正则表达式
    mysql启动参数 skip-grant-tables
    php通过反射执行某方法
  • 原文地址:https://www.cnblogs.com/harden13/p/14583686.html
Copyright © 2011-2022 走看看