Java 常用类 String的使用
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的使用的更多相关文章
- Java 常用类String类、StringBuffer类
常用类 String类.StringBuffer类 String代表不可变的字符序列 "xxxxxxx"为该类的对象 举例(1) public class Test { publi ...
- 深入理解Java常用类----String
Java中字符串的操作可谓是最常见的操作了,String这个类它封装了有关字符串操作的大部分方法,从构建一个字符串对象到对字符串的各种操作都封装在该类中,本篇我们通过阅读String类的源码 ...
- 深入理解Java常用类----String(二)
上篇介绍了String类的构造器,获取内部属性等方法,最后留下了最常用的局部操作函数没有介绍,本篇将接着上篇内容,从这些最常见的函数的操作说起,看看我们日常经常使用的这些方法的内部是怎么实现的.第一个 ...
- java常用类-String类
* 字符串:就是由多个字符组成的一串数据.也可以看成是一个字符数组. * 通过查看API,我们可以知道 * A:字符串字面值"abc"也可以看成是一个字符串对象. * B:字符串是 ...
- java常用类String
String: String类: 代表字符串 是一个final类,代表不可变的字符序列 字符串是常量,用双引号引起来表示.值在创建后不可更改 String对象的字符内容是存储在一个字符数组Value[ ...
- Java常用类String的面试题汇总
比较两个字符串时使用"=="还是equals()方法? 当然是equals方法."=="测试的是两个对象的引用是否相同,而equals()比较的是两个字符串的值 ...
- Java常用API(String类)
Java常用API(String类) 概述: java.lang.String 类代表字符串.Java程序中所有的字符串文字(例如 "abc" )都可以被看作是实现此类的实例 1. ...
- Java常用类:包装类,String,日期类,Math,File,枚举类
Java常用类:包装类,String,日期类,Math,File,枚举类
- Java基础 —— Java常用类
Java常用类: java.lang包: java.lang.Object类: hashcode()方法:返回一段整型的哈希码,代表地址. toString()方法:返回父类名+"@&quo ...
- Java常用类学习笔记总结
Java常用类 java.lang.String类的使用 1.概述 String:字符串,使用一对""引起来表示. 1.String声明为final的,不可被继承 2.String ...
随机推荐
- 将地址栏的参数变成json序列化。
将地址栏的参数变成json序列化. GetQueryJson1 () { let url = this.$route.query.redirect; // 获取当前浏览器的URL (redirect= ...
- VictoriaMetrics 1.84.0发布
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 11.25日,valyala大神发布了VictoriaMe ...
- 收藏-即时通讯(IM)开源项目OpenIM-功能手册
OpenIM简介 OpenIM是由IM技术专家打造的开源即时通讯组件,也是目前最受欢迎的开源IM项目之一,目前github star近万.开发者通过集成OpenIM组件,并私有化部署服务端,可以将即时 ...
- 深入浅出Java多线程(一):进程与线程
引言 大家好,我是你们的老伙计秀才. 在计算机系统的发展历程中,早期的计算机操作模式十分单一和低效.用户只能逐条输入指令,而计算机则按照接收指令的顺序逐一执行,一旦用户停止输入或进行思考,计算机会处于 ...
- 虚拟桌宠模拟器:VPet-Simulator,一个开源的桌宠软件, 可以内置到任何WPF应用程序
虚拟桌宠模拟器:VPet-Simulator,一个开源的桌宠软件, 可以内置到任何WPF应用程序 虚拟桌宠模拟器 一个开源的桌宠软件, 可以内置到任何WPF应用程序 获取虚拟桌宠模拟器 OnSteam ...
- 20.6 OpenSSL 套接字分发RSA公钥
通过上一节的学习读者应该能够更好的理解RSA加密算法在套接字传输中的使用技巧,但上述代码其实并不算完美的,因为我们的公钥和私钥都必须存储在本地文本中且公钥与私钥是固定的无法做到更好的保护效果,而一旦公 ...
- 14.7 Socket 循环结构体传输
在上述内容中笔者通过一个简单的案例给大家介绍了在套接字编程中如何传递结构体数据,本章将继续延申结构体传输,在某些时候例如我们需要传输一些当前系统的进程列表信息,或者是当前主机中的目录文件,此时就需要使 ...
- 从嘉手札<2023-11-27>
"我也没做错什么,放它去看海,总比跟着我好" 很多时候,悲伤总是细细的钻进心底 悄悄的生根发芽 待到了时机 它便如同一株参天巨树般郁郁葱葱 郁郁葱葱的令人发疯 人生本就像是做了一场 ...
- 来了!HelloGitHub 年度热门开源项目
年关将至,「HelloGitHub 月刊」也迎来了年终盘点时刻. 在过去的一年里,「HelloGitHub 月刊」一共分享了 520 个开源项目.我始终秉持着分享 GitHub 上有趣.入门级开源项目 ...
- 教你用JavaScript实现粘性导航
案例介绍 欢迎来的我的小院,我是霍大侠,恭喜你今天又要进步一点点了!我们来用JavaScript编程实战案例,做一个粘性导航.移动页面导航仍在页面上方.通过实战我们将学会scrollY属性.offse ...