/*String:字符串,使用一对""引起来表示。1.String声明为final的,不可被继承2.String实现了Serializable接口:表示字符串是支持序列化的。实现了Comparable接口:表示String可以比较大小3.String内部定义了final char[] value用于存储字符串数据4.String:代表不可变的字符序列。简称:不可变性。体现:1.当对字符串重新赋值时,需要重写指定内存区域赋值,不能使用原有的value进行赋值。2. 当对现有的字符串进行连接操作时,也需要重新指定内存区域赋值,不能使用原有的value进行赋值。3. 当调用String的replace()方法修改指定字符或字符串时,也需要重新指定内存区域赋值,不能使用原有的value进行赋值。5.通过字面量的方式(区别于new)给一个字符串赋值,此时的字符串值声明在字符串常量池中。6.字符串常量池中是不会存储相同内容的字符串的。*/@Testpublic void test1(){String s1 = "abc";//字面量的定义方式String s2 = "abc";s1 = "hello";System.out.println(s1 == s2);//比较s1和s2的地址值System.out.println(s1);//helloSystem.out.println(s2);//abcSystem.out.println("*****************");String s3 = "abc";s3 += "def";System.out.println(s3);//abcdefSystem.out.println(s2);System.out.println("*****************");String s4 = "abc";String s5 = s4.replace('a', 'm');System.out.println(s4);//abcSystem.out.println(s5);//mbc}
 /*String的实例化方式:方式一:通过字面量定义的方式方式二:通过new + 构造器的方式面试题:String s = new String("abc");方式创建对象,在内存中创建了几个对象?两个:一个是堆空间中new结构,另一个是char[]对应的常量池中的数据:"abc"*/@Testpublic void test2(){//通过字面量定义的方式:此时的s1和s2的数据javaEE声明在方法区中的字符串常量池中。String s1 = "javaEE";String s2 = "javaEE";//通过new + 构造器的方式:此时的s3和s4保存的地址值,是数据在堆空间中开辟空间以后对应的地址值。String s3 = new String("javaEE");String s4 = new String("javaEE");System.out.println(s1 == s2);//trueSystem.out.println(s1 == s3);//falseSystem.out.println(s1 == s4);//falseSystem.out.println(s3 == s4);//falseSystem.out.println("***********************");Person p1 = new Person("Tom",12);Person p2 = new Person("Tom",12);System.out.println(p1.name.equals(p2.name));//trueSystem.out.println(p1.name == p2.name);//truep1.name = "Jerry";System.out.println(p2.name);//Tom}
    /*结论:1.常量与常量的拼接结果在常量池。且常量池中不会存在相同内容的常量。2.只要其中有一个是变量,结果就在堆中。3.如果拼接的结果调用intern()方法,返回值就在常量池中*/@Testpublic void test3(){String s1 = "javaEE";String s2 = "hadoop";String s3 = "javaEEhadoop";String s4 = "javaEE" + "hadoop";String s5 = s1 + "hadoop";String s6 = "javaEE" + s2;String s7 = s1 + s2;System.out.println(s3 == s4);//trueSystem.out.println(s3 == s5);//falseSystem.out.println(s3 == s6);//falseSystem.out.println(s3 == s7);//falseSystem.out.println(s5 == s6);//falseSystem.out.println(s5 == s7);//falseSystem.out.println(s6 == s7);//falseString s8 = s6.intern();//返回值得到的s8使用的常量值中已经存在的“javaEEhadoop”System.out.println(s3 == s8);//true}@Testpublic void test4(){String s1 = "javaEEhadoop";String s2 = "javaEE";String s3 = s2 + "hadoop";System.out.println(s1 == s3);//falsefinal String s4 = "javaEE";//s4:常量String s5 = s4 + "hadoop";System.out.println(s1 == s5);//true}

String字符串拼接相关推荐

  1. C# string为什么可以与int相加? string字符串拼接深入分析

    目录 前言 字符串拼接 分析 新的问题 结论 最后 拓展一:与struct相加 拓展二:Java的底层实现 前言 最近在研究关于string的一些东西,发现底层实现挺有意思的,想来研究下string字 ...

  2. String字符串拼接小例

    >>>写出下面程序运行结果: public class StringTest {public static void main(String[] args) {String s1 = ...

  3. C++string容器-字符串拼接

    string字符串拼接 功能描述: 实现在字符串末尾拼接字符串 函数原型: 代码如下: #include <iostream> using namespace std; #include ...

  4. Java对于字符串的处理【String和int之间的转换、字符串拼接、字符串获取长度、字符串大小写转换、字符串去空格、字符串分割、字符串替换、字符串提取、字符串比较、字符串查找】

    文章目录 String字符串 和 整型int 的相互转换 String转化为int int 转换为 String 字符串拼接 使用连接运算符 "+" 使用 concat() 方法 ...

  5. 面试:字符串拼接,什么时候用StringBuilder?

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | www.jianshu.com/p/a80c9 ...

  6. 1.3 字符串拼接(连接)

    对于已经定义的字符串,可以对其进行各种操作.连接多个字符串是字符串操作中最简单的一种.通过字符串连接,可以将两个或多个字符串.字符.整数和浮点数等类型的数据连成一个更大的字符串. String 字符串 ...

  7. service 层 拼接的html 代码如何直接返回_字符串拼接,会走StringBuilder 吗?

    前言 最近在突然想到了String字符串拼接问题,于是做了一个demo测试了一下,到底String类型的字符串在拼接的时候,哪种情况下会走会走StringBulider进行字符串拼接,而哪种情况编译器 ...

  8. java字符串拼接_字符串拼接,什么时候会走StringBuilder?

    ☞ 程序员进阶必备资源免费送「21种技术方向!」 ☜ 粉丝福利: 专属优惠码4折优惠,当当网买书满400-230(点击查看) 前言 最近在突然想到了 String 字符串拼接问题,于是做了一个 dem ...

  9. 字符串拼接,什么时候会走StringBuilder?

    作者:叫我不矜持 www.jianshu.com/p/a80c9b2b89cd 前言 最近在突然想到了String字符串拼接问题,于是做了一个demo测试了一下,到底String类型的字符串在拼接的时 ...

最新文章

  1. Tafficserver旁路接入方案综述
  2. 炎热夏天到底如何让自己更凉快? - 生活至上,美容至尚!
  3. python画图程序有图-python-1 简单的turtle画图程序
  4. 企业文件存储服务器规划,企业文件存储服务器
  5. java获取指定年月往前推12个月的年月_java 获取日期的几天前,几个月前和几年前的实例...
  6. SpringCloud使用Prometheus监控(基于Eureka)
  7. squid android 工具包,xUtils Android工具包 v3.9.0
  8. WAMP(windows+apache+mysql+php)
  9. bzoj 4568 [Scoi2016]幸运数字
  10. sam格式的结构和意义_SAM文件基础知识
  11. 双十一,一群金融大脑去了趟苏州!
  12. iOS字体大小适配机型的几种方法
  13. Synopsys ICC 笔记
  14. 抓取得物数据出现验证码的解析思路
  15. web前端学习笔记26-事件类型——一般事件、页面事件、表单事件
  16. osgEarth目标选择
  17. citus插件安装及使用
  18. 14-排序优化:如何实现一个通用的、高性能排序函数?
  19. java/php/net/pythona鞋店管理信息系统设计
  20. CSDN【精品专栏】 第一期

热门文章

  1. FaceApp一夜爆红引争议,这些AI黑科技都来了!
  2. 计算机网络学习心得—概述
  3. html表单控件元素
  4. vue表单控件的联动实现
  5. 华为服务器iso文件安装,云服务器安装iso
  6. gunicorn日志系列1-输出限制大小的问题 Unable to configure root logger: Unable to add handler ‘console‘: ‘console‘
  7. 浅谈Oracle服务器归档日志,oracle服务器运行时管理归档日志文件不管理联机重做日志文件...
  8. 《考拉小巫的英语学习日记》读书笔记
  9. LeetCode刷题笔记_20210926
  10. 冻结表格(tablefix)