关于Java编程语言中的return语句实例介绍
众所周知,return 只能用在有返回类型的函数中,但是有返回值的函数一定要有return吗?return都可以用在函数的哪些地方呢?这是本文需要讨论的问题。 %w#hFn{$u;M(O;S A3jF/PNEA
i5? zI%wA z
例一: Io!B-j|7?c;dZ
$n$M'r-f^?
class test {
public String test() { ,qd)H ^m f'm
"t$o.IDs8KF
if(true){ ,K`p&Z8F
return "";
}
else{
return ""; 9X c.o J@3Wa*?u5P
} p2EQeiE6T5i/wM
_"z_0iP/vy*L%j o U.i
} H2hwwxSN ?.U
} "@E9V*Y#? ?GG)w
8reo+`#b'D
s ~b3O(PqL
上面这样即可通过编译,但是下面这两个例子却不能通过编译: 4f7ZtJu0JYJ8D
3@8b3SBd7V.F:~;MV
4Yr!h5X/G2fF g[
(一)
d}Et"c@
class test {
1Q(B%KMB.G0g!R
public String test() { x_#|6]/M{V
if(true){ &WpH|vZ&f'X2F"m
+}}~5u*^
return "";
G+k6j.k4OA-Cy
} u3T^m3Z
%nBTs*s]0xy`
}
qXtY}U4i
} 3TH]+m#j!F*{
3[h0y"z$M4mP M
TE%jH,||tAY
(u\/i,s;Dsq
(二)
A#H'a;Pf7qm
class test { \?DB{y;I:c8{
public String test() { -lXF;f`%X&h1g
if(isTrue()){
return "";
}
else if(!isTrue()){//两个if里的判断包括了所有的可能性,但是还是编译期error F6Jl1iO;u
7BTq pHqKPX/i$u,n
return "";
3R+iUd`;S\0\`+e
}
}
"\7sEm _8@Iy
boolean isTrue(){ l$[c3Px,?6WQ
0I\`(m5d#W t
return true; ,Z0o g.Df7t
} ^fQ O$hw(D"|Z~
}z5Uc.w%] C)_
} *gL#UiUd e5g1W
.vPg/Qp4R^
#W%N2W?$?P+ci{J%||
结论1:
对于(一),这是因为java编译器认定单独的if语句只在当一定条件满足情况下才执行,它认为if不会有任何情况下都能执行的能力。 2e;\3p?6p
对于(二),这是因为java编译器对if else 语句能够全面囊括所有情况的能力只限定在的if...else(或if...else if...else)时,而不包括if...else if。 ~9^k4R.RH
再看例二: (T| B+K:v,B4y5W$V
,txy_sy
class test {
*l?}#BF{%L
public String test() {
#F K_L8vn5G{?
while(true){
return "";
}
} 'n)}B(U5e(je |t
} 3b/B`Y%QpL
上面这样即可通过编译,但是下面这样不行: "ng*h?8_d
i"CJ,@*oj N2u ?p
class test {
public String test() {
while(isTrue()){ d\o }7vh
return "";
,qF+^P1Q P
} w'_/rt"VS/D
}
boolean isTrue(){ q^O(A(IEs _%D
return true; "aE0mR'Uk%n
} 9D{rH`%m ]
E)HuGO k!QC3c
} 'V.K;Pu_"u4P*X)g
dO1X LB L*e
结论2: rr pix I s*Lr
\6g8v,?8|9KS
这是因为编译器认为while语句有在任何情况下都能执行的能力,但是只在入参为true的情况下有该能力。 q A(t,E9_g9b4o'Q|!Y
j4W8cg6G#j"{Va
再看例三:
7S4LvlQ$D@
public class test {
Fq:~${~s1\S?-a
String test() throws Exception{ )Z t Mk7RT'\/mo
I"J8w5Yj){U.F
throw new Exception();//抛出异常后,跳出程序,程序中止
-H*s.T0ry3\qRc]
} zd]8B$m(}
}
wn'Vd~
结论3: 8Q5R9l]_m U+k
如果函数中创建了异常,并抛出,则该函数可以不返回值。
页:
[1]