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个字节。
    

      

      

     

     

     

     

     

     

    本文为原创文章,转载请标明出处
  • 相关阅读:
    IP地址分类
    Python 加密 shellcode 免杀
    java翻译到mono C#实现系列(2) mono实现GridView 横向滚动
    Hello Jexus(转并修改)
    @using (Html.BeginForm())和@{Html.BeginForm();}@{Html.EndForm();}对比
    FindLine把多行查找改为多行替换
    java翻译到mono C#实现系列(1) 重写返回键按下的事件
    mono 的System.Data.SqlClient小记录
    架构文件夹说明
    Xamarin Mono For Android 4.6.07004看不到新建android
  • 原文地址:https://www.cnblogs.com/harden13/p/14583686.html
Copyright © 2011-2022 走看看