String str1="JAVA";
String str2="JAVA";
String str3=new String("JAVA");
String str4=new String("JAVA").intern();
Run Code Online (Sandbox Code Playgroud)
将创建2个对象.str1并且str2因为String文字池概念而引用同一个对象并str3指向新对象,因为使用new运算符并str4指向同一个对象,str1并且str2因为intern()方法将字符串池检查到具有相同值的字符串.
str1=str2=str3=str4=null;
Run Code Online (Sandbox Code Playgroud)
一个对象将有资格获得GC.这是通过创建的对象String str3=new String("JAVA").始终可以通过存储在字符串文字池中的引用访问第一个String对象.
我的解释是否正确?
public interface I1
{
static class Test{}
}
Run Code Online (Sandbox Code Playgroud)
为什么Java允许用Interface编写类?
在接口中编写静态类是个好主意吗?我们可以有效使用它的任何例子吗?
public class StringTest
{
public static void main(String... args)
{
String str=null;
System.out.println(str);
}
}
Run Code Online (Sandbox Code Playgroud)
为什么这段代码显示为null?当我们将引用变量传递给println()方法时,它将调用toString()方法.对于String类,toString()方法将调用返回当前对象.String str=null表示没有对象存在.
class StringTest1
{
public static final void main(String... a)
{
String str1="JAVA";
String str2="WORLD";
String str3=str1+str2;
}
}
Run Code Online (Sandbox Code Playgroud)
在此过程中将创建多少个对象?我想会创建3个对象.
class StringTest2
{
public static final void main(String... a)
{
String strTest="JAVA"+"WORLD";
}
}
Run Code Online (Sandbox Code Playgroud)
在此过程中将创建多少个对象?可以访问多少个对象?有人告诉我"JAVA"+"WORLD"是一个表达式,它不会存储在字符串池中.
public class ThreadTest extends Thread
{
int i=0;
public void run()
{
i=1;
}
public static void main(String... args)
{
ThreadTest tTest=new ThreadTest();
tTest.start();
System.out.println(tTest.i);
}
}
Run Code Online (Sandbox Code Playgroud)
为什么这有时打印1,有时打印0?在这个程序中会创建多少个线程?据我了解,这个程序中将创建2个线程.如果我错了,请纠正我.