常用类-复习
1. 画出如下几行代码的内容结构:
String s1 = "hello";
String s2 = "hello";
String s3 = new String("hello");
s1 += "world";

2.如何理解String类的不可变性
String 指向常量池的数据,不能做任何的修改,如果需要修改必须新造一个数据,用来存储新的内容

3.String类是否可以被继承?为什么?
String s = new String("hello");在内存中创建了几个对象?请说明
String不可以被继承
两个 一个是String s在堆里创建的对象,然后堆里的value会指到在常量池里创建的hello

4.String,StringBuffer,StringBuilder 三者的对比
String是不可变字符串
StringBuffer是线程安全的可变字符串
Stringbuilder是线程不安全的可变字符串
StringBuilder效率最高,其次是StringBuffer,String效率最低
开发中不涉及到多线程或涉及到多线程但不是共享数据时使用Stringbuilder,涉及到多线程且有共享数据时,因为有安全问题,需要使用StringBuffer
三者底层在jdk9之前都是用char型数据进行存储,在jdk9后用byte型数组进行存储,但String底层的数组是final的,StringBuffer和StringBuilder不是finla的
String每次赋值底层会new一个新的对象,StringBuffer和StringBuilder底层默认存储的数组长度为16,当创建的数组长度超出16时,底层会以2倍+2的方式新建数组,对内存消耗低,效率比String高

5.String的常用方法有哪些?(至少7个)
length() / charAt() / eqlaus() / compareTo() / startsWith() / endsWith()
containts() / indexOf() / lastIndexOf / getBytes() / toCharArray() / 
valueOf() / ...

内存解析

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇