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. 一键式文本纠错工具,整合了BERT、ERNIE等多种模型,让您立即享受纠错的便利和效果

    pycorrector一键式文本纠错工具,整合了BERT.MacBERT.ELECTRA.ERNIE等多种模型,让您立即享受纠错的便利和效果 pycorrector: 中文文本纠错工具.支持中文音似. ...

  2. 7.5 Windows驱动开发:监控Register注册表回调

    在笔者前一篇文章<内核枚举Registry注册表回调>中实现了对注册表的枚举,本章将实现对注册表的监控,不同于32位系统在64位系统中,微软为我们提供了两个针对注册表的专用内核监控函数,通 ...

  3. 4.8 C++ Boost 应用JSON解析库

    property_tree 是 Boost 库中的一个头文件库,用于处理和解析基于 XML.Json 或者 INFO 格式的数据. property_tree 可以提供一个轻量级的.灵活的.基于二叉数 ...

  4. 4.1 C++ Boost 字符串处理库

    Boost 库是一个由C/C++语言的开发者创建并更新维护的开源类库,其提供了许多功能强大的程序库和工具,用于开发高质量.可移植.高效的C应用程序.Boost库可以作为标准C库的后备,通常被称为准标准 ...

  5. MySQL 之单表查询(精简笔记)

    MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RD ...

  6. Linux 文件目录压缩与解压命令

    Linux 文件目录压缩与解压命令,融合多部Linux经典著作,去除多余部分,保留实用部分. compress压缩: compress是个历史悠久的压缩程序,文件经它压缩后,其名称后面会多出 &quo ...

  7. 文心一言 VS 讯飞星火 VS chatgpt (194)-- 算法导论14.3 2题

    二.用go语言,改写 INTERVAL-SEARCH 的代码,使得当所有区间都是开区间时,它也能正确地工作. 文心一言,代码正常运行: 在Go语言中,处理开区间(open intervals)时,我们 ...

  8. 关于SUPPLEMENTAL_LOG_DATA_MIN的设置问题

    Oracle数据库开启附加日志,用于Logminer或基于Logminer的一些操作. 客户咨询关于开启附加日志,SUPPLEMENTAL_LOG_DATA_MIN显示为啥是implicit,如何改成 ...

  9. windows-网页流视频下载

    一.m3u8 视频在线提取工具 https://blog.luckly-mjw.cn/tool-show/m3u8-downloader/index.html

  10. offline 2 online | 重要性采样,把 offline + online 数据化为 on-policy samples

    论文标题:Offline-to-Online Reinforcement Learning via Balanced Replay and Pessimistic Q-Ensemble CoRL 20 ...