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

网站建设完成汇报北京企业官网网站建设报价

网站建设完成汇报,北京企业官网网站建设报价,html个人网页制作源代码,保山网站建设多少钱一、String的不可变性 为什么不可变&#xff1f;设计者认为可变字符串带来的灵活性<不可变带来的好处 好处&#xff1a;安全&#xff08;网络传参、URL、HashMap key&#xff09;、线程安全&#xff08;多线程共用没风险&#xff09;、可缓存&#xff08;字符串常量池复用…

一、String的不可变性

为什么不可变?设计者认为可变字符串带来的灵活性<不可变带来的好处

好处:安全(网络传参、URL、HashMap key)、线程安全(多线程共用没风险)、可缓存(字符串常量池复用)

Java中的字符串是不可变的,但是你说oi,咋可能,我这不是变了吗,

public class Demo{public static void main(String[] args){String name = "ikun";name = "not_ikun";}
}

但这并不是字符串不变性的含义,它并没有改变内存中的字符串对象,而是在内存中的指向变为了not_ikun

我们接着说为什么不想更改这些字符串对象呢,因为它使Java能够保存大量的内存空间,比如当我们用anothername时,就会指向之前的ikun,如果不这样的话,我们在使用成百上千上万...个不同的变量,它们都具有完全相同的字符串值,就指向了同一个字符串值,大大节省了内存空间

public class Demo{public static void main(String[] args){String name = "ikun";String anothername = "ikun";}
}

怎么保证不可变?

        final类:String被final修饰,不能被继承,不允许被改写

        final数组:底层存储时private final char[](或新版本byte[] + 编码标志),指向地址不可变

        没有暴露修改的方法:String没有setCharAt()之类的方法,内部方法也都是产生新对象,不会修改原对象

        hashCode缓存:不可变可以安全缓存哈希值,提升性能。

二、字符串常量池(String Pool)

Java会把字面量字符串(也就是一样的)放在常量池中复用,通过==比较可以验证是否时同一个对象

public class Demo{public static void main(String[] args){String name = "ikun";String anothername = "ikun";System.out.println(name == anothername); // 这里打印会是true}
}

三、new String 与字面量的区别

public class Demo{public static void main(String[] args){String name = "ikun";String anothername = new String("ikun");System.out.println(name == anothername); // 这里打印会是false}
}

“ikun”在常量池,new String("ikun")在堆里重新创建一个对象,可以说它们并不是同一个ikun😏

四、常用的String方法

方法作用例子
length()获取长度"abc".length() -> 3
charAt(int)返回指定位置字符"abc".charAt(1) -> 'b'
equals(Object)比较内容"abc".equals("abc")
equalsIgnoreCase()忽略大小写比较"Abc".equalsIgnoreCase("abc")
substring(int) / substring(int, int)截取子串"abcdef".substring(2) -> "cdef""abcdef".substring(2,4) -> "cd"
indexOf(String)子串首次出现位置"abcabc".indexOf("bc") -> 1
lastIndexOf(String)子串最后出现位置"abcabc".lastIndexOf("bc") -> 4
contains(String)是否包含子串"abc".contains("b") -> true
startsWith()是否以...开头"abc".startsWith("a") -> true
endsWith()是否以...结尾"abc".endsWith("c") -> true
replace()替换子串"abcabc".replace("a","x") -> "xbcxbc"
split(String)按分隔符拆分"a,b,c".split(",") -> ["a","b","c"]
trim()去除首尾空格" abc ".trim() -> "abc"
toUpperCase()转大写"abc".toUpperCase() -> "ABC"
toLowerCase()转小写"ABC".toLowerCase() -> "abc"
valueOf()基本类型转字符串String.valueOf(123) -> "123"

 五、可变字符串StringBuilder 和 StringBuffer

Java-String StringBuilder StringBuffer有什么区别-CSDN博客

  • String 不可变,频繁拼接低效。

  • StringBuilder:可变,单线程推荐,效率高。

  • StringBuffer:可变,线程安全,老项目用得多,新项目少。

http://www.dtcms.com/wzjs/839146.html

相关文章:

  • 高端手机网站设计wordpress默认中文
  • 怎么通过做网站来赚钱吗天津在线制作网站
  • 有微重庆网站吗企业管理系统项目经历
  • 江西省住房保障建设厅网站兰州seo关键词优化
  • top的域名网站做冰饮视频网站
  • 天津建设网站天津市地铁规划图如何查询网站服务器地址
  • 自建营销型网站模板平台公司会倒闭吗
  • 哪个网站可以做身份核验权威发布公众号
  • 庆阳定制网站wordpress文章页面修改
  • 手机wap网站建设解决方案百度指数的需求指数
  • 做宾馆网站wordpress-
  • 住宅和城乡建设部网站深圳网站建设公司fantodo
  • 滁州做网站公司什么平台可以接国外订单
  • 网站浮动窗口怎么做贵州省住房和城乡建设厅网网站首页
  • 高级网站设计效果图新乡网络公司推荐
  • 机关网站建设工程总结做兼职的网站有哪些工作内容
  • 网站建设企业咨询网页设计这个行业怎么样
  • 山东联通网站备案免费软件库下载
  • wordpress 友情链接 nofollow网站建设 优化
  • 建设工程 质量 协会网站网站最合适的字体大小
  • vue适合做门户网站吗建设外贸网站
  • 个人怎样免费建网站vps 做镜像网站
  • 南阳网站设计北京建设银行官方网站
  • 漳州手机网站建设公司哪家好免费漫画app推荐
  • 品牌的宣传及推广石家庄全网seo
  • 支付网站建设推广的会计分录阳性最新消息
  • 手机在线网站小说代理平台
  • 聊城 网站建设深圳 福田网站建设
  • 海外网站加速器下载爱站网收录
  • 谢岗网站仿做平面设计师磨刀石