java中关于字符数组的一道题。请教!

 我来答
科创17
2022-11-09 · TA获得超过5918个赞
知道小有建树答主
回答量:2846
采纳率:100%
帮助的人:177万
展开全部
分类: 电脑/网络 >> 程序设计 >> 其他编程语言
问题描述:

1、下面哪些语句能够正确地生成5个空字符串?

A String a[]=new String[5]; for(int i=0;i<5;a[++]="");

B String a[]={"","","","",""};

C String a[5];

D String[5]a;

E String []a=new String[5]; for( int i=0;i<5;a[i++]=null);

原答案是AB,但是其他的就不行?

为什么E可以编译并运行得到5个空字符串?

解析:

看样子你刚刚入门,那么我们就先说简单的。

1.Java规定,定义一个数组只能采取以下方式:

Object o[] = new Object[x];

或者 Object o[] = {o1,o2,...,ox};

所以C和D语法错误。

2.Java中有字符串为空和空字符串两种说法。例如:

String s;定义了一个字符串,该对象为空

s = "";将一个空字符串赋给刚刚定义的字符串

3.s = null称为“将字符串置为空”,s=""称为“将一个空字符串赋给s。

所以E不合题意。

如果有兴趣,继续向下看。

Java虽然声称去掉了C/C++令人厌恶的指针,但是我个人认为事实上Java处处充满了指针。我们定义任何非基本数据类型时,都是定义了一个指针(尽管在Java中官方称呼是“引用”)。例如:

String s;

事实上就是定义了一个指针,Java虚拟机为它在栈中分配一个空间,其实是一个固定长度的地址,如果没有初始化,它的值将是一个特殊的指向null的地址。当我们用这样的语句赋值时:

s = "a";

Java虚拟机将在堆中新开辟一个空间,里面存放“a”这个值以及相关所需信息,同时将存放在栈中的s的值修改为这个新开辟空间的入口地址。当使用这样的语句:

String s2 = s;

Java虚拟机将在栈中分配一个空间(同样是固定长度的地址),同时将s的值复制到这个新的空间。

如果你能够理解上面的文字,那么像这类问题你就会认为是很自然的事情了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式