zhrb的空间
BlogJava
::
首页
::
新随笔
::
联系
::
聚合
::
管理
::
20 随笔 :: 0 文章 :: 29 评论 :: 0 Trackbacks
<
2024年11月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(1)
给我留言
查看公开留言
查看私人留言
随笔档案
2010年3月 (1)
2008年6月 (3)
2008年5月 (1)
2008年4月 (3)
2008年3月 (3)
2008年2月 (3)
2007年11月 (1)
2007年10月 (2)
收藏夹
Java(53)
(rss)
Java
raylong1982的JAVA博客(资源丰富)
(rss)
一个不错的JAVA个人博客,里面含有一些各种各样的资源(源代码、总结 .....)
王永庆的博客
很多我感兴趣的内容
搜索
最新评论
1. re: jEdit的一些常用设置
好!学习了,刚开始接触Jedit,希望LZ多写一些这样的配置教程
--路人甲
2. re: jEdit的一些常用设置
@xiaorenwu
eclipse更多的是一个ide
这个东西更多的是一个代码编辑器
一个重型,一个轻型。呵呵
--zhrb
3. re: jEdit的一些常用设置
还是eclipse好
--xiaorenwu
4. re: jEdit的一些常用设置
的肌肤感觉地方
--99书城
5. re: 接口与抽象类的区别....
@蒙娜丽莎
接口和抽象类差不多
--12
阅读排行榜
1. jEdit的一些常用设置(7754)
2. IE7无法支持Applet???(2047)
3. 判断字符串是否为数的几种方法 (1988)
4. Java中接口与抽象类的区别(一些学习体会,不知正确与否,请指正)(1499)
5. 接口与抽象类的区别....(1450)
评论排行榜
1. jEdit的一些常用设置(4)
2. IE7无法支持Applet???(4)
3. 判断字符串是否为数的几种方法 (4)
4. 接口与抽象类的区别....(3)
5. 面向对象的思维方法 [zz](3)
返回函数中的return语句(由java.util.Arrays 类的public static String toString(long[] a) 函数想到)
java类库中java.util.Arrays 类的toString方法的源代码。如下:
1
public
static
String toString(
long
[] a)
{
2
if
(a
==
null
)
3
return
"
null
"
;
4
int
iMax
=
a.length
-
1
;
5
if
(iMax
==
-
1
)
6
return
"
[]
"
;
7
8
StringBuilder b
=
new
StringBuilder();
9
b.append(
'
[
'
);
10
for
(
int
i
=
0
; ; i
++
)
{
11
b.append(a[i]);
12
if
(i
==
iMax)
13
return
b.append(
'
]
'
).toString();
14
b.append(
"
,
"
);
15
}
16
}
for循环有点奇怪,中间的那个表达式是空的。其实即使加上了条件,for (int i = 0; i<=iMax ; i++) 和源程序是一个效果的,纯粹是多余的,但是多余地加上了这条,结果编译出错了!提示没有返回语句
上面的文字摘自下面的文章:
http://www.blogjava.net/raylong1982/archive/2007/11/01/157542.html
我的理解是:
如果return语句唯一存在于for循环里面,for中间语句加入任何判断条件,除非这个判断条件绝对为真(如空语句、ture、3>2),否则判断条件就有可能为假导致无法执行到这个循环中的return语句,编译器显然不允许这种情况发生,所以当return语句只在for循环体内出现,就不允许for循环中间的那个语句出现类似i<=iMax这样的充满不确定性的判断,语法上。简单一句话,包含return的那个句子,至少要让编译器觉得,这个return是可以执行到的,以减少程序运行后出错的可能。
不过即使编译器如此努力,还是架不住人们可能出现的语义上的错误,看下面这段代码:
1
public
static
int
max(
int
a,
int
b)
{
2
for
(;;)
3
if
(
false
)
return
a
>
b
?
a:b;
4
}
从语义上分析,return是无论如何也执行不到的,但是编译器认为for循环内的语句肯定可以执行到,并且里面还有return语句,所以就想当然的认为应该可以执行到return语句,所以没有报错。至于到底有没有错,想想看、试一下就知道了。呵呵
posted on 2007-11-01 22:05
zhrb
阅读(832)
评论(0)
编辑
收藏
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
Powered by:
BlogJava
Copyright © zhrb