网易首页 > 网易号 > 正文 申请入驻

Java开发技术之字符串String类的特点

0
分享至

字符串的学习,有的同学就看看API,记下方法,有的同学看看源代码,还有的同学画画图,自然学的深度是不一样的。

* The {@code String} class represents character strings. All

* string literals in Java programs, such as {@code “abc”}, are

* implemented as instances of this class.

* Strings are constant; their values cannot be changed after they

* are created. String buffers support mutable strings.

* Because String objects are immutable they can be shared. For example:

* String str = “abc”;

* is equivalent to:

* char data[] = {‘a’, ‘b’, ‘c’};

* String str = new String(data);

* Here are some more examples of how strings can be used:

* System.out.println(“abc”);

* String cde = “cde”;

* System.out.println(“abc” + cde);

* String c = “abc”.substring(2,3);

* String d = cde.substring(1, 2);

* The class {@code String} includes methods for examining

* individual characters of the sequence, for comparing strings, for

* searching strings, for extracting substrings, and for creating a

* copy of a string with all characters translated to uppercase or to

* lowercase. Case mapping is based on the Unicode Standard version

* specified by the {@link java.lang.Character Character} class.

* The Java language provides special support for the string

* concatenation operator ( + ), and for conversion of

* other objects to strings. String concatenation is implemented

* through the {@code StringBuilder}(or {@code StringBuffer})

* class and its {@code append} method.

* String conversions are implemented through the method

* {@code toString}, defined by {@code Object} and

* inherited by all classes in Java. For additional information on

* string concatenation and conversion, see Gosling, Joy, and Steele,

* The Java Language Specification.

String 类代表字符串。Java 程序中的所有字符串字面值(如 “abc” )都作为此类的实例实现。

字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享。例如:

String str = “abc”;

等效于:

char data[] = {‘a’, ‘b’, ‘c’};

String str = new String(data);

下面给出了一些如何使用字符串的更多示例:

System.out.println(“abc”);

String cde = “cde”;

System.out.println(“abc” + cde);

String c = “abc”.substring(2,3);

String d = cde.substring(1, 2);

String 类包括的方法可用于检查序列的单个字符、比较字符串、搜索字符串、提取子字符串、创建字符串副本并将所有字符全部转换为大写或小写。大小写映射基于 Character 类指定的 Unicode 标准版。

Java 语言提供对字符串串联符号(“+”)以及将其他对象转换为字符串的特殊支持。字符串串联是通过 StringBuilder(或 StringBuffer)类及其 append 方法实现的。字符串转换是通过 toString 方法实现的,该方法由 Object 类定义,并可被 Java 中的所有类继承。有关字符串串联和转换的更多信息,请参阅 Gosling、Joy 和 Steele 合著的 The Java Language Specification。

1.String是个final类

2.String是不可变的字符序列

String对象的字符内容是存储在一个字符数组中的。

private意味着外面无法直接获取字符数组,而且String没有提供value的get和set方法,

final意味着字符数组的引用不可改变,即通过让value指向新的数组对象来实现修改String对象,

而且String也没有提供方法来修改value数组某个元素值,因此字符串的字符数组内容也不可变。

疑问?那么字符串的拼接、字符串的截取、字符串的替换等操作是如何实现的呢?

每次修改都创建一个新的char数组来表示修改结果。

3.String对象的创建

String str = “hello”;

String s1 = new String();// 本质上 this.value = new char[0];

String s2 = new String(String original);//this.value = original.value;

String s3 = new String(char[] a);//this.value = Arrays.copyOf(value, value·length);

String s4 = new String(char[] a,int startIndex,int count)

4.字符串对象是如何存储的

字符串常量存储在字符串常量池,目的是共享

字符串非常量对象存储在堆中。

5.String的拼接

结论:

常量与常量的拼接结果在常量池

只要其中有一个是变量,结果就在堆中

如果拼接的结果调用intern()方法,就在常量池中

6.String对象的比较

==比较的是地址。

equals比较的是字符串的内容,重写了Object的equals方法。

publicbooleanequals(Object anObject) {

if(this== anObject) {

returntrue;

if(anObjectinstanceofString) {

String anotherString = (String)anObject;

intn = value.length;

if(n == anotherString·value·length) {

charv1[] = value;

charv2[] = anotherString.value;

inti = 0;

while(n– != 0) {

if(v1[i] != v2[i])

returnfalse;

i++;

returntrue;

returnfalse;


文章转载链接:http://www.atguigu.com/jsfx/12148.html

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
使命终结!中国联通:6月12日起停止在线上办理5G通信壳业务

使命终结!中国联通:6月12日起停止在线上办理5G通信壳业务

快科技
2024-05-31 00:46:23
张教授再次语出惊人:想长寿,就要带点“病”

张教授再次语出惊人:想长寿,就要带点“病”

今日养生之道
2024-05-30 07:55:02
汪峰为森林北写新歌!歌词和给章子怡写的反差大,森林北甜蜜回应

汪峰为森林北写新歌!歌词和给章子怡写的反差大,森林北甜蜜回应

古希腊掌管月桂的神
2024-05-30 14:04:59
中央督察组暗查重庆:生态破坏,问题突出!

中央督察组暗查重庆:生态破坏,问题突出!

户外小阿隋
2024-06-01 01:28:04
北京留美学生霸凌同胞,被抓后亲爹来美捞人,得知保释金额后崩溃

北京留美学生霸凌同胞,被抓后亲爹来美捞人,得知保释金额后崩溃

元芳
2024-05-30 09:49:10
葛斯齐直播爆大瓜!大s的钱,他找一个朋友帮了忙!这人是谁?

葛斯齐直播爆大瓜!大s的钱,他找一个朋友帮了忙!这人是谁?

娱乐八卦木木子
2024-06-01 01:47:29
穆帅逆袭!获1.5亿天价合约!联手德布劳内,萨拉赫,冲欧冠资格

穆帅逆袭!获1.5亿天价合约!联手德布劳内,萨拉赫,冲欧冠资格

阿泰希特
2024-05-31 15:42:41
中国体坛怎么了?国体局前局长被抓,儿子也被带走

中国体坛怎么了?国体局前局长被抓,儿子也被带走

体坛说球人
2024-05-31 15:33:53
1比3爆大冷出局!3届大满贯冠军无缘32强,网友:可以退役了

1比3爆大冷出局!3届大满贯冠军无缘32强,网友:可以退役了

体坛知识分子
2024-05-31 06:15:06
癌细胞最害怕的3种碱性食物,每天适当吃,“饿死癌细胞”?

癌细胞最害怕的3种碱性食物,每天适当吃,“饿死癌细胞”?

肿瘤科王红军
2024-05-31 14:19:34
中国女排为何1-3溃败?前队长惠若琪说大实话,点名1人,球迷怒批

中国女排为何1-3溃败?前队长惠若琪说大实话,点名1人,球迷怒批

林子说事
2024-06-01 01:47:34
自动气象站功能:智能预警,提前防范自然灾害

自动气象站功能:智能预警,提前防范自然灾害

山东博科仪器有限公司
2024-04-25 14:10:56
反制美制裁,中方一出手就是3400亿,华为发布悬赏令,芯片战升级

反制美制裁,中方一出手就是3400亿,华为发布悬赏令,芯片战升级

户外钓鱼哥阿旱
2024-05-31 14:51:41
《庆余年3》正式官宣,十大主演名单公布,开播时间初步确定

《庆余年3》正式官宣,十大主演名单公布,开播时间初步确定

娱乐倾城巷
2024-05-31 17:06:19
消息人士:华为或即将被搬迁!

消息人士:华为或即将被搬迁!

互联鱼
2024-05-30 17:22:36
没拦网!没进攻!没防守!朱婷赛后怒斥女排3大问题,无力救主

没拦网!没进攻!没防守!朱婷赛后怒斥女排3大问题,无力救主

小豆豆赛事
2024-05-31 22:04:02
莫名其妙!印媒:15名解放军士兵头部受印军重击生还希望渺茫

莫名其妙!印媒:15名解放军士兵头部受印军重击生还希望渺茫

小弟萝卜呀1
2024-05-28 21:43:35
又一“全国优秀县委书记”晋升副省级,张振丰任浙江省副省长

又一“全国优秀县委书记”晋升副省级,张振丰任浙江省副省长

澎湃新闻
2024-05-31 09:44:29
深夜!爆雷!

深夜!爆雷!

中国基金报
2024-06-01 00:10:14
浙江又一厅级干部被查:帅气的皮囊之下藏污纳垢,违纪违法

浙江又一厅级干部被查:帅气的皮囊之下藏污纳垢,违纪违法

故衣谈历史
2024-05-31 17:48:32
2024-06-01 05:02:44
IT爱好者小尚
IT爱好者小尚
分享IT教育类信息
630文章数 54关注度
往期回顾 全部

科技要闻

业务不卖了,字节跳动重新做游戏

头条要闻

胡塞武装称已袭击美国航母 美官员称未发现航母遭袭

头条要闻

胡塞武装称已袭击美国航母 美官员称未发现航母遭袭

体育要闻

欧文:当老二怎么了?硬就行了!

娱乐要闻

白玉兰提名:胡歌、范伟争视帝

财经要闻

证监会:对恒大地产罚款41.75亿

汽车要闻

外观内饰升级/六项权益 全新哈弗H6开启预售

态度原创

艺术
亲子
家居
健康
公开课

艺术要闻

穿越时空的艺术:《马可·波罗》AI沉浸影片探索人类文明

亲子要闻

朝阳公园空降猫和老鼠大奶酪?六一就去这儿遛娃!

家居要闻

风雅自来 中式的和谐平衡

晚餐不吃or吃七分饱,哪种更减肥?

公开课

近视只是视力差?小心并发症

无障碍浏览 进入关怀版