zoukankan      html  css  js  c++  java
  • String

    关于String类:

          Java.lang.String类使用finnal修饰,不能被继承,String是常量,其对象一旦构造就不不再改变,所有对String值发生的改变实际上是将该String的值赋给构造成新的String类;

    关于String数据内存:

    编码方式:

          Java字符串在内存中采用unicode编码方式,即任何一个字符(无论中文还是英文)都算一个字符长度,占用两个字节定长编码;

    常量池:

         Java在声明创建一个静态String类型数据时,选择在常量池,  所谓常量池(constant pool)指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。在常量池,java会尝试尽量使用同一个对象,对于重复出现的字符串常量,JVM首先会在常量池中查找,如果存在,就返回该对象。

    1  String str1 = "abc";
    2  String str2 = new String("abc");

          对于1 中的 String str1 = "abc",首先会检查字符串常量池中是否含有字符串abc,如果有则直接指向,如果没有则在字符串常量池中添加abc字符串并指向它.所以这种方法最多创建一个对象,有可能不创建对象。

         对于2中的String str2 = new String("abc"),首先会在堆内存中申请一块内存存储字符串abc,str2指向其内存块对象。同时还会检查字符串常量池中是否含有abc字符串,若没有则添加abc到字符串常量池中。所以 new String()可能会创建两个对象。

    String的匹配相等问题:

        比对象的内容是否相等使用equals(),比较两个引用是否指向同一个对象时用==;

    关于StringBuffer:

        AbstractStringBuilder是StringBuffer的父类,定义了一些字符串的基本操作,比如append、insert、indexOf等公共方法。

    未完,待续......
  • 相关阅读:
    Linux curl命令详解
    php技能树---大神的进阶之路
    PHP Socket 编程之9个主要函数的使用之测试案例
    史上最全的PHP正则表达式
    php 简单使用redis 队列示例
    PHP中使用 Memcached 的测试案例
    机动车驾驶(1)--- 禁令标志汇总 by John
    闵可夫斯基和(Mincowsky sum)
    二维平面上判断点是否在三角形内
    计算任意多边形的面积
  • 原文地址:https://www.cnblogs.com/zhishiyv/p/9576775.html
Copyright © 2011-2022 走看看