String,s,=,new,String("xyz");

时间:2024-11-11 13:45:51 来源:作文网 作者:管理员

英语作文 > :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(&quot;xyz&quot;);由小学生作文网收集整理,转载请注明出处!

上一页 1 2 3 4 下一页
热门排行: 2016拜年词 好词