1 package com.bytezero.stringclass;
2
3 import com.sun.tools.javac.Main;
4 import jdk.jfr.StackTrace;
5 import org.junit.Test;
6
7 import java.util.Locale;
8
9 /**
10 *String的使用
11 *
12 *
13 *
14 * @author Bytezero1·zhenglei! Email:420498246@qq.com
15 * create 2021-10-19 10:34
16 */
17 public class StringTest {
18
19
20
21
22
23
24
25 /*
26 结论:
27 1.常量与常量的拼接结构在常量池,且常量池中不会存在相同内容的常量
28 2.只要其中有一个是变量,结构就在堆中
29 3.如果拼接的结果调用intern()方法,返回值就是在常量池中
30
31
32 */
33 @Test
34 public void test3(){
35 String s1 = "javaEE";
36 String s2 = "hadoop";
37
38 String s3 = "javaEEhadoop";
39 String s4 = "javaEE"+"hadoop";
40
41 String s5 = s1 + "hadoop";
42 String s6 = "javaEE" + s2;
43 String s7 = s1 +s2;
44
45 System.out.println(s3 == s4); //true
46 System.out.println(s3 == s5); //false
47 System.out.println(s3 == s7); //false
48 System.out.println(s3 == s6); //false
49 System.out.println(s5 == s6); //false
50 System.out.println(s5 == s7); //false
51 System.out.println(s6 == s7); //false
52
53 String s8 = s5.intern();//返回得到的s8使用的常量池中已经存在的 "javaEEhadoop"
54 System.out.println(s3 == s8); //true
55
56 System.out.println("**************************");
57 String s9 = s6.intern();//返回得到的s8使用的常量池中已经存在的 "javaEEhadoop"
58 System.out.println(s3 == s9); //true
59
60
61 }
62
63
64
65
66
67 /*
68
69 String 的实例化方式:
70 方式一:通过字面量定义的方式
71 方式二:通过new + 构造器的方式
72 */
73 @Test
74 public void test2(){
75
76 //通过字面量定义的方式:此时的 s1 和 s2 的数据“zhenglei”声明在方法区中的字符串常量池中
77 String s1 = "zhenglei";
78 String s2 = "zhenglei";
79
80 //通过 new + 构造器的方式:此时的S3 和 S4保存的地址值,是数据在堆空间中开辟空间以后对应的
81 //地址值。
82 String s3 = new String("zhenglei");
83 String s4 = new String("zhneglei");
84
85 System.out.println(s1 == s2); //true
86 System.out.println(s1 == s3); //false
87 System.out.println(s1 == s4); //false
88 System.out.println(s3 == s4); // false
89
90
91 }
92
93 /*
94 String:字符串,使用一对" "引起来表示
95 1.String 声明为final的,不可被继承
96 2.String实现了 Serializable接口:表示字符串时支持序列化的。
97 实现了Comparable接口,表示Sting可以比较大小
98 3.String内部定义了final char[] value用于储存字符串数据
99 4.String:代表不可变的字符序列,简称:不可变性
100 体现:1.当都对字符串重新赋值时,需要重写指定内存区域赋值,不能使用原有的
101 value进行赋值
102 2.当对现有的字符串进行连接操作时,也需要重新指定内存区域赋值,不能
103 使用原有的value进行赋值
104 3.当调用Stringe的replace()方法修改指定字符或字符串时,也需要重新指定
105 内存区域赋值,不能使用原有的value进行赋值.
106
107
108 5.通过字面量的方式(区别于 new)给一个字符串赋值,此时的字符串值声明在字符串常量池中
109 6.字符串常量池中是不会储存相同内容的字符串的
110
111 String s = new String("abc"); 方式创建对象,在内存中创建了几个对象?
112 两个:一个是堆空间中new结构,另一个是char[]对应的常量池的数据:“abc”
113
114
115
116 String 对象的创建
117 String str = "hello";
118
119 //从本质上this.value = new char[0];
120 String s1 = new String();
121
122 //this.value = original.value;
123 String s2 = new String(String original);
124
125 //this.value = Arrays.copyOf(value,value.length);
126 String s3 = new String(char[] a);
127
128 String s4 = new String(char[] a,int startIndex,int count);
129
130
131
132
133
134
135 */
136 @Test
137 public void test1(){
138
139 String s1 = "abc"; //字面量的定义方式
140 String s2 = "abc"; //
141 s1 = "Hello";
142
143 System.out.println(s1 == s2); //地址值
144
145 System.out.println(s1); //Hello
146 System.out.println(s2); //abc
147
148 System.out.println("********************************");
149 String s3 = "abc";
150 s3 += "def";
151 System.out.println(s3); //abcdef
152 System.out.println(s2);
153
154 System.out.println("********************************");
155 String s4 = "abc";
156 String s5 = s4.replace('a', 'm');
157 System.out.println(s4); //abc
158 System.out.println(s5); //mbc
159 }
160 }

Java 常用类 String的使用的更多相关文章

  1. Java 常用类String类、StringBuffer类

    常用类 String类.StringBuffer类 String代表不可变的字符序列 "xxxxxxx"为该类的对象 举例(1) public class Test { publi ...

  2. 深入理解Java常用类----String

         Java中字符串的操作可谓是最常见的操作了,String这个类它封装了有关字符串操作的大部分方法,从构建一个字符串对象到对字符串的各种操作都封装在该类中,本篇我们通过阅读String类的源码 ...

  3. 深入理解Java常用类----String(二)

    上篇介绍了String类的构造器,获取内部属性等方法,最后留下了最常用的局部操作函数没有介绍,本篇将接着上篇内容,从这些最常见的函数的操作说起,看看我们日常经常使用的这些方法的内部是怎么实现的.第一个 ...

  4. java常用类-String类

    * 字符串:就是由多个字符组成的一串数据.也可以看成是一个字符数组. * 通过查看API,我们可以知道 * A:字符串字面值"abc"也可以看成是一个字符串对象. * B:字符串是 ...

  5. java常用类String

    String: String类: 代表字符串 是一个final类,代表不可变的字符序列 字符串是常量,用双引号引起来表示.值在创建后不可更改 String对象的字符内容是存储在一个字符数组Value[ ...

  6. Java常用类String的面试题汇总

    比较两个字符串时使用"=="还是equals()方法? 当然是equals方法."=="测试的是两个对象的引用是否相同,而equals()比较的是两个字符串的值 ...

  7. Java常用API(String类)

    Java常用API(String类) 概述: java.lang.String 类代表字符串.Java程序中所有的字符串文字(例如 "abc" )都可以被看作是实现此类的实例 1. ...

  8. Java常用类:包装类,String,日期类,Math,File,枚举类

    Java常用类:包装类,String,日期类,Math,File,枚举类

  9. Java基础 —— Java常用类

    Java常用类: java.lang包: java.lang.Object类: hashcode()方法:返回一段整型的哈希码,代表地址. toString()方法:返回父类名+"@&quo ...

  10. Java常用类学习笔记总结

    Java常用类 java.lang.String类的使用 1.概述 String:字符串,使用一对""引起来表示. 1.String声明为final的,不可被继承 2.String ...

随机推荐

  1. 每日一库:使用Viper处理Go应用程序的配置

    在开发Go应用程序时,处理配置是一个常见的需求.配置可能来自于配置文件.环境变量.命令行参数等等.Viper是一个强大的库,可以帮助我们处理这些配置. 什么是Viper? Viper是一个应用程序配置 ...

  2. 给python脚本传递命令行参数

    记录一下给python脚本传参数的几种方式 最简单的方式 在cmd/bat脚本中调用python脚本传递参数 #传递参数 python test.py arg1 arg2 arg3 #在python中 ...

  3. 使用rider调试lua

    emmylua1.3.5及以上版本支持rider调试,但emmylua的新版本只支持rider2020及以上版本,所以如果想用rider来调试lua,就要升级rider为2020,emmylua插件从 ...

  4. 从零开始配置 vim(15)——状态栏配置

    vim 下侧有一个状态栏,会显示当前打开的文件等一系列内容,只是我们很少去关注它.而且原生的vim也支持对状态栏进行自定义.这篇文章主要介绍如何自定义状态栏 设置状态栏 我们可以采用 set stat ...

  5. HarmonyOS实战[二]—超级详细的原子化服务体验[可编辑的卡片交互]快来尝试吧

    相关文章: HarmonyOS实战[一]--原理概念介绍安装:基础篇 [本文正在参与"有奖征文|HarmoneyOS征文大赛"活动] 1.创建HarmonyOS应用 选择Java程 ...

  6. Python 使用SQLAlchemy数据库模块

    SQLAlchemy 是用Python编程语言开发的一个开源项目,它提供了SQL工具包和ORM对象关系映射工具,使用MIT许可证发行,SQLAlchemy 提供高效和高性能的数据库访问,实现了完整的企 ...

  7. 2.8 CE修改器:寻找共享代码

    本关我们将学习共享代码,在C语言中角色属性都是以结构体的方式进行存储的,而结构体所存储的信息都是连续性的,这一关我们将会解释如何处理游戏中的共用代码,这种代码是通用在除了自己以外的其他同类型对像上的常 ...

  8. 《Java 面经手册》PDF,417页11.5万字,完稿!

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 我膨胀了 ,在看了大部分以面试讲解的 Java 文章后,发现很多内容的讲解都偏向于翻 ...

  9. Sea-Search03总结&&un finish

    使用到的设计模式 Facade门面模式 为何使用? 在搜索项目中,由于使用Mvc架构且数据库中各种不同类型的数据源并没有放在同一张表,于是我们不可避免的在Controller中需要注入多个servic ...

  10. 架构设计理念&模型

    理念 今天我们还需要关注 DDD 吗?https://www.infoq.cn/article/should-we-focus-on-ddd 事件风暴:https://en.wikipedia.org ...