当前位置: 首页 > news >正文

网站怎么做后台大型网站制作

网站怎么做后台,大型网站制作,网站侵权 做网站有责任吗,五个网站页面1、引言 在上一篇文章中,我们理解了字符串的常用方法,细心的同学大概已经发现,不管是将字符串中的字符转变为大写或小写,或是完成字符串的替换,又或是去除空白字符等等,只要涉及到字符串的修改&#xff0c…

1、引言

在上一篇文章中,我们理解了字符串的常用方法,细心的同学大概已经发现,不管是将字符串中的字符转变为大写或小写,或是完成字符串的替换,又或是去除空白字符等等,只要涉及到字符串的修改,我们都是生成了一个新的字符串,而不是改变原有的字符串。

例如(toLowerCase方法的源码,返回新的字符串对象):

这是因为String类的对象是不可以被修改的(字符串具有不可变性)。关于字符串为什么不可以被修改,答案就在下面的文章中~

2、字符串为什么具有不可变性

2.1 String类在源码中的设计

2.1.1 String类被final所修饰

为什么不可被修改呢?我们先来观察String类的源码:

我们可以看到String类被final所修饰,但是这并不是字符串不可变的原因,因为当类被final修饰时,只能说明这个类不能被继承,也就是说String类不可被继承,而不是不可变。

2.1.2 value被final所修饰

我们继续往下看,

我们又发现,value数组也被final修饰了,我们知道,String类的value数组才真正存储了字符串的内容,到这里,有的同学就开始激动了,就说:"value数组被final修饰了,变成了常量,常量不可变,所以字符串就具有不可变性!!!"。

但事实并不是这样,因为数组是一个引用类型,当引用类型被final修饰,只能说明当前引用变量的指向不能改变,而并不是不能修改它所指向的内容,我们来观察以下代码:

我们发现,当数组被final修饰后,我们可以改变它的内容,但是不能改变它的指向,也就是说final修饰value数组并不是字符串不可变的原因。(很多同学都会在这里产生误解)

2.1.3 value数组被private修饰封装

其实这点才是字符串不可变的真正原因,value数组被封装在了String类当中,没有提供任何的get和set方法,无法获取到字符串,当然也不可能被修改。

2.2 总结

1.当一个类被final修饰,说明这个类不能被继承。也就是说,String类被final修饰不是字符串不可变的原因。

2.当一个引用类型被final所修饰,说明这个引用的指向不能改变,但是可以修改这个引用所指向的内容。也就是说,value被final修饰不是字符串不可变的原因。

3.value被private修饰,被封装起来才是字符串不可变的真正原因。

3、字符串的修改

3.1 使用"+"对字符串拼接

我们已经理解了字符串为什么不可变,也知道了字符串的修改实质上会再创建一个新对象,

因此,我们每使用一次"+"来完成字符串的拼接(以及对字符串进行修改)实质上就是创建了一个新的String类对象:

而每次都要创建新对象,会占用大量的内存空间,效率非常低下,所以我们不推荐这样来完成字符串的拼接,为了提高效率,我们使用StringBuilder和StringBuffer类来完成对字符串的修改。

3.2 StringBuilder和StringBuffer类

StringBuilder和StringBuffer的功能大部分是相同,我们这里就以StringBuilder来讲。

3.2.1 append方法完成拼接

我们可以通过append来完成字符串的拼接(拼接在尾部,相当于String的"+"):

我们可以通过append来拼接多种类型,且返回值都是this(说明在原来的串上进行的修改,不会产生新的对象):

拼接完成后,我们可以调用StringBuilder中重写的toString方法,使用String类型来接收生成的字符串:

这样,可以减少额外对象的生成,大大的提高了效率!

3.2.2 StringBuilder和StringBuffer中的字符串修改方法

我们发现,在这两大类中,提供了能够修改字符串的方法,很方便的供我们使用。

例如reverse方法:

我们可以很轻松的在原来的字符串上完成字符的逆置。

例如insert方法:

我们可以在指定下标处完成插入。

注:这些方法都是在原本的字符串上进行的修改,不会生成新的对象,效率很高。

4、String、StringBuilder、StringBuffer的区别

1.String的内容不可被修改,StringBuilder和StringBuffer的内容可以被修改。

2.StringBuilder和StringBuffer的功能大体相同。

3.StringBuffer采用同步处理,属于线程安全操作;而StringBuilder未采用同步处理,属于线程不安全操作。(学习中,后面再说~)

http://www.khdw.cn/news/45353.html

相关文章:

  • wordpress缓存类一键优化是什么意思
  • 北京建设网站网站seo常规优化
  • 保定建设环境项目网站电脑培训学校网站
  • 老薛主机做两个网站网站专业术语中seo意思是
  • 网站页面优化简单吗咖啡seo是什么意思
  • 什么是全网整合营销江门网站优化公司
  • 上海做网站就用乐云seo举一个病毒营销的例子
  • 烟台网站建设推荐企汇互联见效付款免费发布广告
  • 邯郸建设网站的公司哪家好湖南网络优化服务
  • 扬中网站优化seo研究中心
  • 建设部网站监管平台营销型网站建设企业
  • 德化网站建设网站百度seo关键词优化
  • 做视频网站收入网络营销能干什么工作
  • 网站怎么下载视频山东进一步优化
  • 举报网站建设公司排名第一的手机清理软件
  • linux 配置网站域名网络营销网站
  • ps图做ppt模板下载网站有哪些内容百度百度
  • 手绘风网站企业seo自助建站系统
  • 在网站建设中什么用于搭建页面结构平台推广广告宣传词
  • 什么网站上做任务赚钱怎样制作属于自己的网站
  • 苏州优化网站科学新概念seo外链
  • 郑州本地做团购的网站汕头seo
  • 自动化营销网站建设百度风云榜排行榜
  • 计算机网站开发的目的贵阳百度快照优化排名
  • 男生女生做污事网站 localhost2022百度指数排名
  • 泉州网站开发人员客户推广渠道有哪些
  • 网站建设方案可以乱写吗精准引流推广团队
  • 网站做任务包括什么企业培训课程设置
  • 怎么找做网站平台公司seo优化神器
  • 长春网站改版怎么在平台上做推广