String类创建对象的两种方式和区别
【摘要】 String类String类的理解和创建对象(1)String对象用于保存字符串,也就是一组字符序列(2)字符串常量对象是用双引号括起的字符序列。例如:"你好","123","abc"等(3)字符串的字符使用Unicode字符编码,一个字符(不区分字母还是汉字)占两个字节(4)String类较常用构造器:1)String s1 = new String();2)String s2 = new...
String类
String类的理解和创建对象
(1)String对象用于保存字符串,也就是一组字符序列
(2)字符串常量对象是用双引号括起的字符序列。例如:"你好","123","abc"等
(3)字符串的字符使用Unicode字符编码,一个字符(不区分字母还是汉字)占两个字节
(4)String类较常用构造器:
1)String s1 = new String();
2)String s2 = new String(String original);
3)String s3 = new String(char[] a);
4)String s4 = new String(charp[] a , int startIndex , int count);
代码演示
public class String01 {
public static void main(String[] args) {
//1.String 对象用于保存字符串,也就是一组字符序列
//2. "jack" 字符串常量, 双引号括起的字符序列
//3. 字符串的字符使用 Unicode 字符编码,一个字符(不区分字母还是汉字)占两个字节
//4. String 类有很多构造器,构造器的重载
// 常用的有 String s1 = new String(); //
//String s2 = new String(String original);
//String s3 = new String(char[] a);
//String s4 = new String(char[] a,int startIndex,int count)
//String s5 = new String(byte[] b)
//5. String 类实现了接口 Serializable【String 可以串行化:可以在网络传输】
// 接口 Comparable [String 对象可以比较大小]
//6. String 是 final 类,不能被其他的类继承
//7. String 有属性 private final char value[]; 用于存放字符串内容
//8. 一定要注意:value 是一个 final 类型, 不可以修改(需要功力):即 value 不能指向
// 新的地址,但是单个字符内容是可以变化
String name = "jack";
name = "tom";
final char[] value = {'a','b','c'};
char[] v2 = {'t','o','m'};
value[0] = 'H';
//value = v2; 不可以修改 value 地址
}
}
创建String对象的两种方式
(1)方式一:直接赋值String s = "zhouxiaomo";
(2)方式二:调用构造器String s= new String("zhouxiaomo");
两种创建 String 对象的区别
(1)方式一:先从常量池查看是否有"zhouxiaomo"数据空间,如果有,直接指向;如果没有则重新创
建,然后指向。s的最终指向的是常量池的空间地址。
(2)方式二:先从堆中创建空间,里面维护了value属性,指向常量池的zhouxiaomo空间。如果常量池
中没有"zhouxiaomo",重新创建,如果有,直接通过value指向。最终指向的就是堆中的空间地址。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)