About String in Java

				如今做了一个重大决定,不定期温习The Basement Of Java
  1. String对象的认知简述

    首先 String不属于 8种基本数据类型, String是一个对象。 因为对象的默认值是null。但它又是一种特殊的对象,有其对象没有的一些特性。

    new String()和new String("")都是声明一个空字符串,而不是null。
  2. 常量池(constant pool)

    常量池指的是在编译期被确定,并保存在已编译的.class文件中的一些数据。它包括了关于类、方法、接口等中的常量,也包括字符串常量。
  3. 字符串池

    在JVM中存在着一个字符串池,其中保存着许多String对象,并且可以被共享使用,因此它提高了效率。String类是final的,它的值一经创建便不可改变,因此我们不用担心String由于共享而带来的程序混乱。字符串池由String类维护,我们可以调用intern()方法来访问字符串池。
  • 例1

    public class Test {

    public static void main(String args[]) {

    String str0 = "abc";

    String str1 = "abc";

    String str2 = "a" + "bc";

    System.out.println(str0 == str1);

    System.out.println(str0 == str2);

    }

    }

    运行结果:

    true

    true

    解释:Java会确保一个字符串常量只有拷贝, 因为例子中的 str0和 str1中的” 中的” abc ”都是字符串常量, 它们在编译期就被确定了,所以 str0== str1为 true ;而” a”和” ” 和bc ”也都是字符,当一个字符由多个字符串连接而成时它自己肯定也是字符串常量,所以 s2 也同样在编译期就被解析为一个字符串常量。所以得出

    str0 = str1 = str2
  • 例2

    public class Test {

    public static void main(String args[]) {

    String str0 = "kvill";

    String str1 = new String("kvill");

    String str2 = "k" + new String("ill");

    System.out.println(str0 == str1);

    System.out.println(str0 == str2);

    System.out.println(str1 == str2);

    }

    }

    运行结果:

    false

    false

    false

    例2中str0还是常量池中”kvill”的应用,str1因为无法在编译期确定,所以是运行时创建的新对象”kvill”的引用,str2因为有后半部分new String(“ill”)所以也无法在编译期确定,所以也是一个新创建对象”kvill”的应用。

    明白了这些也就知道为何得出此结果了

String巩固的更多相关文章

  1. 透过WinDBG的视角看String

    摘要 : 最近在博客园里面看到有人在讨论 C# String的一些特性. 大部分情况下是从CODING的角度来讨论String. 本人觉得非常好奇, 在运行时态, String是如何与这些特性联系上的 ...

  2. JavaScript String对象

    本编主要介绍String 字符串对象. 目录 1. 介绍:阐述 String 对象的说明以及定义方式. 2. 实例属性:介绍 String 对象的实例属性: length. 3. 实例方法:介绍 St ...

  3. ElasticSearch 5学习(9)——映射和分析(string类型废弃)

    在ElasticSearch中,存入文档的内容类似于传统数据每个字段一样,都会有一个指定的属性,为了能够把日期字段处理成日期,把数字字段处理成数字,把字符串字段处理成字符串值,Elasticsearc ...

  4. [C#] string 与 String,大 S 与小 S 之间没有什么不可言说的秘密

    string 与 String,大 S 与小 S 之间没有什么不可言说的秘密 目录 小写 string 与大写 String 声明与初始化 string string 的不可变性 正则 string ...

  5. js报错: Uncaught RangeError: Invalid string length

    在ajax请求后得到的json数据,遍历的时候chrome控制台报这个错误:Uncaught RangeError: Invalid string length,在stackoverflow查找答案时 ...

  6. c# 字符串连接使用“+”和string.format格式化两种方式

    参考文章:http://www.liangshunet.com/ca/201303/218815742.htm 字符串之间的连接常用的两种是:“+”连接.string.format格式化连接.Stri ...

  7. 【手记】注意BinaryWriter写string的小坑——会在string前加上长度前缀length-prefixed

    之前以为BinaryWriter写string会严格按构造时指定的编码(不指定则是无BOM的UTF8)写入string的二进制,如下面的代码: //将字符串"a"写入流,再拿到流的 ...

  8. JavaScript中String对象的方法介绍

    1.字符方法 1.1 charAt() 方法,返回字符串中指定位置的字符. var question = "Do you like JavaScript?"; alert(ques ...

  9. 在多线程编程中lock(string){...}隐藏的机关

    常见误用场景:在订单支付环节中,为了防止用户不小心多次点击支付按钮而导致的订单重复支付问题,我们用 lock(订单号) 来保证对该订单的操作同时只允许一个线程执行. 这样的想法很好,至少比 lock( ...

  10. BCL中String.Join的实现

    在开发中,有时候会遇到需要把一个List对象中的某个字段用一个分隔符拼成一个字符串的情况.比如在SQL语句的in条件中,我们通常需要把List<int>这样的对象转换为“1,2,3”这样的 ...

随机推荐

  1. [转]ubuntu备份与恢复

    在 使用Ubuntu之前,相信很多人都有过使用Windows系统的经历.如果你备份过Windows系统,那么你一定记忆犹新:首先需要找到一个备份工 具(通常都是私有软件),然后重启电脑进入备份工具提供 ...

  2. 超级方便的linux命令手册

    超级方便的linux命令手册 NO 分类 PS1 命令名 用法及参数 功能注解 对应章节 1 文件管理 # ls ls -a 列出当前目录下的所有文件,包括以.头的隐含文件     文件管理 # ls ...

  3. Manthan, Codefest 19(Div. 1 + Div. 2)

    传送门 A. XORinacci 签到. Code /* * Author: heyuhhh * Created Time: 2020/2/26 9:26:33 */ #include <ios ...

  4. Linux用户和用户组管理命令

    一.用户管理命令 1.useradd   创建用户或更新默认新用户的信息 使用方法  useradd [options] 用户名 选项: useradd -u           指定UID具体数值, ...

  5. android图片保存到SQLlite如何实现?

    //写入数据库               ImageView pic = (ImageView) findViewById(R.id.picture);                        ...

  6. 「NOIP2015」斗地主

    传送门 Luogu 解题思路 给你们一张搜索顺序图,然后就大力模拟就好. 细节注意事项 爆搜题,你们懂的... 参考代码 写的有点丑了,洛谷上只能过加强版的88分,会T六个点 #include < ...

  7. 7.3 Varnish VCL 常用函数

  8. 前端学习笔记系列一:6 一种新的css预编译器stylus

    stylus是 CSS 的预处理框架.CSS 预处理,顾名思义,预先处理 CSS.那 stylus 咋预先处理呢?stylus 给 CSS 添加了可编程的特性,也就是说,在 stylus 中可以使用变 ...

  9. 1-5SpringBoot操作之Spring-Data-Jpa(二)CRUD实现

    本帖来演示下SpringBoot下,实用Spring-Data-Jpa来实现CRUD操作,视图层采用Freemarker 这里我们先把application.properties修改成applicat ...

  10. Ubuntu基于Apache为自己的网站开启HTTPS

    暂时放这里链接,之后整理 https://www.deanhan.cn/ubuntu-apache-https.html