在一次采访问题中,采访者问我
以下陈述之间的共同点和区别是什么:
String s = "Test";
String s = new String("Test");
Run Code Online (Sandbox Code Playgroud)
内存分配有什么不同吗?
我想知道在哪里使用字符串对象(在我的java代码中的哪种情况).好吧,我理解diff btwn字符串文字和字符串对象,但我想知道,因为java给了我们制作字符串对象的能力,必须有一些原因,在某些时候字符串对象的创建会很有用.所以我想知道在哪种情况下我们可以选择字符串对象来代替字符串文字.
import java.util.*;
import java.lang.*;
public class Test{
public static void main(String[] argv){
String s1="abc";
String s2=(String) s1.clone();
}
}
Run Code Online (Sandbox Code Playgroud)
为什么这个简单的测试程序不起作用?
以下是String类 的构造函数
public String(String original) {
int size = original.count;
char[] originalValue = original.value;
char[] v;
if (originalValue.length > size) {
// The array representing the String is bigger than the new
// String itself. Perhaps this constructor is being called
// in order to trim the baggage, so make a copy of the array.
int off = original.offset;
v = Arrays.copyOfRange(originalValue, off, off+size);
} else {
// The array representing the String is the same
// size …Run Code Online (Sandbox Code Playgroud) 这两种方法有区别吗?
public String toString() {
return this.from.toString() + this.to.toString();
}
public String toString() {
return new String(this.from.toString() + this.to.toString());
}
Run Code Online (Sandbox Code Playgroud)
(当然,假设from.toString()和to.toString()方法正在返回字符串).
基本上我对Java中的字符串处理感到困惑,因为有时字符串被视为基本类型,即使它们是类实例.
public static void main(String [] a)
{
String s = new String("Hai");
String s1=s;
String s2="Hai";
String s3="Hai";
System.out.println(s.hashCode());
System.out.println(s1.hashCode());
System.out.println(s2.hashCode());
System.out.println(s3.hashCode());
System.out.println(s==s2);
System.out.println(s2==s3);
}
Run Code Online (Sandbox Code Playgroud)
从上面的代码中,任何人都可以解释当JVM遇到这一行时会发生什么(s == s2)?
我知道String s = new String("Hello World")应该避免,因为它会为"Hello World"创造额外的空间,这在大多数情况下是不必要的.
解释为什么String s = new String("Hello World")应该避免的相关问题在这里:
"text"和new String("text")之间有什么区别?
但我们什么时候需要使用String s = new String("Hello World"),而不是String s = "Hello World"?这是我遇到的面试问题.
如果String s = new String("Hello World")在大多数情况下应该避免,为什么Java仍然允许这样做?
可能的重复:
Java字符串声明
Java字符串:"String s = new String("silly");"
Java中表达式"new String(...)"的用途是什么?
什么是区别
String a = new String("SomeValue");
Run Code Online (Sandbox Code Playgroud)
和
String a = "SomeValue";
Run Code Online (Sandbox Code Playgroud)
有什么不同,哪一个更好,为什么?
谢谢.
当我尝试用Java执行代码时,它给了我2个不同的输出
String txt1="Hello";
String txt2="Hello";
System.out.println((boolean)txt1==txt2);
String txt1=new String("Hello");
String txt2=new String("Hello");
System.out.println((boolean)txt1==txt2);
Run Code Online (Sandbox Code Playgroud) 在记事本中打开一个新文件并在其中插入没有引号的句子,"四分和七年前".
Four 4 characters
score 5 characters
and 3 characters
seven 5 characters
years 5 characters
ago 3 characters
Run Code Online (Sandbox Code Playgroud)
总计:25 + 5空格= 30个字符.
您会发现该文件在磁盘上的大小为30个字节:每个字符1个字节.以getSize.txt名称将文件保存到磁盘.然后查看文件的大小.通常,每个字符都占用一个字节.
大小:30字节
磁盘大小:4.00 KB(4,096字节)
以下段落是从pdf复制粘贴的.
如果您在计算机查看时查看该文件,您会发现每个字节不包含字母而是数字 - 该数字是与该字符对应的ASCII代码(见下文).所以在磁盘上,文件的数字如下所示:
F ourandseven
70 111 117 114 32 97 110 100 32 115 101 118 101 110
通过查看ASCII表,您可以看到每个字符与使用的ASCII代码之间的一一对应关系.注意32用于空格--32是空格的ASCII码.如果我们想要技术上正确的话,我们可以将这些十进制数扩展为二进制数(所以32 = 00100000) - 这就是计算机真正处理事物的方式.
1)我知道每件事都以比特和字节的形式存储,所以通常这意味着 - "你会发现每个字节不包含字母而是数字 - 数字是与字符对应的ASCII码" .一个字节是8位.那么"每个字节一个数字 - 数字是ASCII代码"怎么样?除了0和1之外,一个字节如何包含一个ASCII数字(例如,49为'1')?
2)磁盘上的大小和大小有什么区别?ASCII和Unicode如何适应它?
3)在Java中,字符串是对象.我可以说这是一个多个字符连在一起吗?String str ="四分和七年前"那么str如何存储在内存中.它与保存在记事本文件中的方式相同吗?