java 中字符串和String类是如何联系起来的
Strings1="hello"底层调用了java的哪个构造函数publicfinalclassMyString{privatefinalcharvalue[];priv...
String s1 = "hello" 底层调用了java的哪个构造函数
public final class MyString {
private final char value[];
private int hash;
public MyString(char[] value) {
this.value = Arrays.copyOf(value, value.length);
}
public MyString(MyString original) {
this.value = original.value;
this.hash = original.hash;
}
public static void main(String[] args) {
char[] value = {'h','e','l','l','o'};
MyString myString = new MyString(value);
//如何用字符串,如“hello”构造MyString,不要告诉我把构造函数里面的MyString换成String
}
//这是String类的构造函数
public String(String original) {
this.value = original.value;
this.hash = original.hash;
} 展开
public final class MyString {
private final char value[];
private int hash;
public MyString(char[] value) {
this.value = Arrays.copyOf(value, value.length);
}
public MyString(MyString original) {
this.value = original.value;
this.hash = original.hash;
}
public static void main(String[] args) {
char[] value = {'h','e','l','l','o'};
MyString myString = new MyString(value);
//如何用字符串,如“hello”构造MyString,不要告诉我把构造函数里面的MyString换成String
}
//这是String类的构造函数
public String(String original) {
this.value = original.value;
this.hash = original.hash;
} 展开
3个回答
2015-11-29 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注
展开全部
* 字符串:就是由多个字符组成的一串数据。也可以看成是一个字符数组。
* 通过查看API,我们可以知道
* A:字符串字面值"abc"也可以看成是一个字符串对象。
* B:字符串是常量,一旦被赋值,就不能被改变。
通过构造方法* public String(String original):把字符串常量值转成字符串
展开全部
可以这样
String s="helo";
char[] array=s.toCharArray();
MyString mstr=new MyString(array);
追问
String s1 = "hello", 我就是想知道这句话底层是如何运行的,java是如何把String这个类和字符串联系在一起的
追答
String s="hello";
直接赋值的方式运行的时候会在java内置的一个字符串缓冲区中查找有没有这个字符串,如果有,直接返回地址引用,如果没有则在字符串缓冲区中创建并返回引用
而new创建的字符串也会先去字符串缓冲区查找有没有,但是不同的是,不管有没有都会在堆内存中创建一个,如果缓冲区没有则在缓冲区中创建一个,返回的是堆中创建的地址引用
所以
String s1="hello" 和 String s2="hello";
s1==s2 是 ture
s1.equals(s2) 也是 ture
而
String s1="hello" String s2=new String("hello");
s1==s2 是 false
s1.equals(s2) 才是 true
执行第一个String s1="hello";的时候字符串缓冲区是没有hello这个字符串的
所以在缓冲区创建了一个hello字符串对象
执行第二个String s2="hello";的时候,字符串缓冲区已经有了hello,就直接返回了
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你好String类是final类,不可以被重写,你的做法就不对
更多追问追答
追问
我知道String类不可以被重写,String s1 = "hello", 我就是想知道这句话底层是如何运行的,java是如何把String这个类和字符串联系在一起的
追答
你好:这个的话,实际是是编译的时候他会转换成16进制的。之后他把这个指向一个内存地址保存为hello;下次读取的时候直接回从指定的内存地址拿值。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询