String,s,=,new,String("xyz");
英语作文 > :String,s,=,new,String("xyz");是由小学生作文网为您精心收集,如果觉得好,请把这篇文章复制到您的博客或告诉您的朋友,以下是String,s,=,new,String("xyz");的正文:
第一篇:《String s = new String(xyz)详解》
问题:
String s = new String("XYZ"); 到底生成了几个对象?
要理解这个,就要知道string类的工作原理。
你知道在java中除了8中基本类型外,其他的都是类对象以及其引用。所以 "xyz "在java中它是一个String对象.对于string类对象来说他的对象值是不能修改的,也就是具有不变性。 看:
String s= "Hello ";
s= "Java ";
String s1= "Hello ";
String s2=new String( "Hello ");
啊,s所引用的string对象不是被修改了吗?之前所说的不变性,去那里了啊?
你别着急,让我告诉你说发生了什么事情:
在jvm的工作过程中,会创建一片的内存空间专门存入string对象。我们把这片内存空间叫做string池。
String s= "Hello ";当jvm看到 "Hello ",在string池创建string对象存储它,并将他的引用返回给s。
s= "Java ",当jvm看到 "Java ",在string池创建新的string对象存储它,再把新建的string对象的引用返回给s。而原先的 "Hello "仍然在string池内。没有消失,他是不能被修改的。 所以我们仅仅是改变了s的引用,而没有改变他所引用的对象,因为string对象的值是不能被修改的。
String s1= "Hello ";jvm首先在string池内里面看找不找到字符串 "Hello ",找到,返回他的引用给s1,否则,创建新的string对象,放到string池里。这里由于s= "Hello "了,对象已经被引用,所以依据规则s和s1都是引用同一个对象。所以 s==s1将返回true。(==,对于非基本类型,是比较两引用是否引用内存中的同一个对象)
String s2=String( "Hello ");jvm首先在string池内里面看找不找到字符串 "Hello ",找到,不做任何事情,否则,创建新的string对象,放到string池里面。由于遇到了new,还会在内存上(不是string池里面)创建string对象存储 "Hello ",并将内存上的(不是string池内的)string对象返回给s2。所以s==s2将返回false,不是引用同一个对象。
好现在我们看题目:
String s = new String( "xyz ");
首先在string池内找,找到?不创建string对象,否则创建, 这样就一个string对象 遇到new运算符号了,在内存上创建string对象(此处内存用堆来理解,比较好,应该是从字符串池中复制一份相同的对象放到堆中,要是理解不对,请多多指教!!),并将其返回给s,又一个对象
所以总共是2个对象 ---一个是string池中的对象,一个是堆中的对象,并把堆中的对象交给s持有
第二篇:《Java习题二》
1. 指出下列程序的运行结果
public class Example
{
String str=new String("good");
char[]ch={'a','b','c'};
public static void main(String args[])
{
Example ex=new Example();
ex.change(ex.str,ex.ch);
System.out.print(ex.str+" and ");
Sytem.out.print(ex.ch);
}
public void change(String str, char ch[])
{
str="test ok";
ch[0]='g';
}
}
传值和传地址
① good and abc
② good and gbc
③ test ok and abc
④ test ok and gbc
2. 给出下面代码: 静态数组, arr
public class Person
{
static int arr[] = new int[10];
public static void main(String a[])
{
System.out.println(arr[1]);
}
}String,s,=,new,String("xyz");。
哪个语句是正确的?
① 编译时将产生错误;
② 编译时正确,运行时将产生错误;
③ 输出零;
④ 输出空。
3.下列哪些语句关于内存回收的说明是正确的?
① 程序员必须创建一个线程来释放内存;
② 内存回收程序负责释放无用内存
③ 内存回收程序允许程序员直接释放内存
④ 内存回收程序可以在指定的时间释放内存对象
4.1) public void modify() {
2) int I, j, k;
3) I = 100;
4) 魏太后while ( I > 0 ) {
5) j = I * 2;
6) System.out.println (" The value of j is " + j );
7) k = k + 1;
8) I--;
9) }
10) }
① line 4
② line 6
③ line 7 局部变量必须初始化,成员变量不需初始化,数组不需初始化 ④ line 8
5.指出下列哪些方法与方法public void add(int a){}为合理的重载方法。
① public int add(int a)
② public void add(long a)
③ public void add(int a,int b)
④ public void add(float a)
6.给出下面代码段
1) public class Test {
2) int m, n;
3) public Test() {}
4) public Test(int a) { m=a; }
5) public static void main(String arg[]) {
6) Test t1,t2;
7) int j,k;
8) j=0; k=0;
9) t1=new Test();
10) t2=new Test(j,k);
11) }
12) }
哪行将引起一个编译时错误?
① ine 3
② line 5
③ line 6
④ line 10
7.main()方法的返回类型是:
① int
② void
③ Boolean
犹如④ static
8.System类在哪个包中?
① java.util
② java.io
③ java.awt
④ java.lang
9.给出下面代码:
public class Test
{
static int a[] = new a[10];
public static void main(String args[])
{
System.out.println(a[10]);
}
}
那个选项是正确的?
① 译时将产生错误;
② 编译时正确,运行时将产生错误;
③ 输出零;
④ 输出空。
10.String s = "hello";
String t = "hello";
char c[] = {'h','e','l','l','o'} ;
下列哪些表达式返回true?
① s.equals(t);t
② t.equals(c);f
③ s==t;t
④ t.equals(new String("hello"));t
11.下述哪些说法是正确的?
① 实例变量是类的成员变量
② 实例变量是用static关键字声明的
③ 方法变量在方法执行时创建
④ 方法变量在使用之前必须初始化( 见test24.java)
12.String s = new String("xyz");创建了几个String Object?
13.int 和 Integer 有什么区别?
14.Java有没有goto?是关键字吗? 无
15.用最有效率的方法算出2乘以8等於几? 2<<3
16. a = null 和 a.length() = 0 有什么区别?
17.public class Something
{
void doSomething ()
{
private String s = "";方法变量没有访问权限
int l = s.length();String,s,=,new,String("xyz");。
}
} 个 1
有错吗?若有,错在哪里?
18.public class Something
{
public static void main(String[] args)
{
Something s = new Something();
System.out.println("s.doSomething() returns " + doSomething());或者创建实例再调用,或者改成static方法
}
public static String doSomething()
{
return "Do something ...";
}
}
有错吗?若有,错在哪里?
19. 此处,Something类的文件名叫OtherThing.java
class Something
{编译没错,执行有错
private 改成public static void main(String[] something_to_do)
{
System.out.println("Do something ...");
}
}
有错吗?若有,错在哪里?
20. class Test
{
public static void main(String[] args)
{
String s=new String("Hello");
String ss=method(s);
System.out.println(ss);
}
public static String method(String s)
{
s+="world";没有返回值
}
}
程序返回的结果是什么?
21.class Compare
{
public static void main(String [] args)
{
String str1=new Strin关于荷花的作文g("abc");
String str2=new String("abc");
String str3=str1;
String str4=”bcd”;
String str5=”bcd”;
if(str1==str2)
{
System.out.println("str1==str2"); }
else
{
System.out.println("str1!=str2"); }
if(str1==str3)
{
System.out.println("str1==str3"); }
else
{
System.out.println("str1!=str3");
}
if(str4==str5)
{
System.out.println("str4==str5"); }
else
{
System.out.println("str4!=str5");
}
if(str1.equals(str2))
{
System.out.println("str1 equal str2"); }
else
{
System.out.println("str1 not equal str2"); }
if(str1.equals(str3))
{
System.out.println("str1 equal str3"); }
else
{
System.out.println("str1 not equal str3");
第三篇:《java 习题答案》
一、选择题
1、为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为( A )
A) static void method() B) public void method()
C) final void method() D) abstract void method()
2、Java中main()函数的返回值是什么类型( D )
A) String B) int C) char D) void
3、以下说法正确的是( A)
A) Java中所有的方法都必须在类内定义
B) Java中主方法可以不在类内定义,其他方法都必须定义在类内
C) Java中主方法必须定义在类内,其他方法可以不必定义在类内
D) Java中所有方法都不必在类内定义
4、Java不支持多重继承,但我们可以通过( B )实现
A) 多态 B) 接口 C) 覆盖 D) 抽象类
5、已知表达式int[] m = {0, 1, 2, 3, 4, 5, 6 };下面哪个表达式的值与数组元素个数相等(B )
A) m.length() B) m.length C) m.length()+1 D) m.length+1
6、所有的异常类皆继承哪一个类( C )
A) java.io.Exception B) java.lang.Throwable
C) java.lang.Exception D) java.lang.Error
7、关于布尔类型说法正确的是( A )
A) boolean表示布尔类型,它的取值只有true和false
B) bool表示布尔类型,它的取值只有true和false
C) boolean表示布尔类型,它的取值只有1和0
D) bool表示布尔类型,它的取值只有1和0
8、在异常处理中,如释放资源、关闭文件等善后操作由( C )来完成
A) try子句 B) catch子句 C) finally子句 D) throw子句
9、要开发Java程序,需要安装的开发包是( A )
A) jdk B) eclipse C) notepad
D) 记事本String,s,=,new,String("xyz");。
10、给出下面的代码段:
public class Test {
static int arr[] = new int[10]; 初始化了10个整形的数组
public static void main(String a[])
{过去未来String,s,=,new,String("xyz");。
System.out.println(arr[1]);
}
}
String,s,=,new,String("xyz");由小学生作文网收集整理,转载请注明出处!
上一页 1 2 3 4 下一页