A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄诗宾 高级黑马   /  2013-3-28 23:52  /  2945 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黄诗宾 于 2013-3-29 09:02 编辑
  1. interface USB{
  2.         public abstract void read();
  3.         public abstract void write();
  4. }
  5. class Print implements USB{
  6.         public void read(){
  7.           System.out.println("读取打印机数据");
  8.         }
  9.         public void write(){
  10.         System.out.println("写入打印机数据");
  11.         }
  12. }
  13. class MainBoard{
  14.         public void openPower(){
  15.           System.out.println("开机了");
  16.         }
  17.    
  18.         public void useUSB(USB u){
  19.            if(null == u) {
  20.               System.out.println("没有设备");
  21.                   return ;    //这里为何要加个return, 有什么含义?
  22.             }
  23.                 else
  24.            u.read();
  25.            u.write();//调用2个方法
  26.         }
  27. }
  28. class  Computer{
  29.         public static void main(String[] args) {
  30.                 MainBoard mb = new MainBoard();//建立对象
  31.                 mb.openPower();
  32.                 mb.useUSB(null);
  33.                 mb.useUSB(new Print());               
  34.         }
  35. }
复制代码
不太明白上面return的意义 ,代表终止循环么?
写法上还有其他替代方式没,麻烦达人解释!

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

8 个回复

倒序浏览
本帖最后由 曹玉龙 于 2013-3-29 00:02 编辑

        public void useUSB(USB u){
           if(null == u) {
              System.out.println("没有设备");
                  return ;    //这里为何要加个return, 有什么含义?
            }

这是判断,不是循环,当u==null的时候,意思是没有设备,return为了跳出方法,程序也就不用再往下运行浪费资源了.

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
return代表结束循环和中止方法
public void useUSB(USB u){
           if(null == u) {
              System.out.println("没有设备");
                  return ;    //这里为何要加个return, 有什么含义?
            }
           else
           u.read();
           u.write();//调用2个方法
        }
当null==n为真时,说明没有USB设备,没有USB设备的话那么else块中的  u.read();u.write();两个方法就不用调用了,没有意义。
所以程序在当前就中止方法了,程序就不用再往下执行else语句。
另外:此道程序我觉得声明异常抛出,是一个不错的解决方式,代码更加健壮!

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
HM李超 发表于 2013-3-29 00:54
return代表结束循环和中止方法
public void useUSB(USB u){
           if(null == u) {

如果是return u呢,会把u的值返回到哪里,知道空值没有意义,但还是想问问
异常还没学到
回复 使用道具 举报
本帖最后由 李慧声 于 2013-3-29 08:40 编辑

应该没有啥意义吧,这里要不要return都一样的,因为本函数的返回值为void,那么你要在函数中使用return的话只能写return;
我想这里应该是为了说明void这个关键字的吧,不是说这个函数没有返回值,而是返回值void,而且应该和break有点雷同吧。
回复 使用道具 举报
黄诗宾 发表于 2013-3-29 08:20
如果是return u呢,会把u的值返回到哪里,知道空值没有意义,但还是想问问
异常还没学到 ...

return u;说明该函数的返回值类型是USB这个类的实例,那么该函数的返回值类型就不能是void了,要写USB,返回值返回给调用该函数的调用者,但是呢,你在if判断了null==n才返回,但是n为空,就代表没指向任何对象,你在这里返回这个空的n,有什么意义呢?没意义,不建议这么做
回复 使用道具 举报
山西_李帅 来自手机 中级黑马 2013-3-30 13:01:17
7#
本帖最后由 山西_李帅 于 2013-3-30 13:05 编辑

你写的方法是void的时候不需要返回值。当你写的是public static int aaa ()
这样的情况时,很明显你写的方法需要返回一个int类型的值,这里就需要用到return了。
也就是说,当你写一个方法(函数) 时,第一要看返回的类型是什么,第二要看需要的参数列表有哪些。
也就是说这里的return没有意义,因为方法中写的返回类型是void本身不需要返回值。
回复 使用道具 举报
山西_李帅 来自手机 中级黑马 2013-3-30 13:03:14
8#
也就是说这里return没意义
回复 使用道具 举报
山西_李帅 来自手机 中级黑马 2013-3-30 14:19:15
9#
兄弟,上面给你回答也是对的,现在给你回答针对你这个题的一些见解。
你踢中的return的作用是当u==null时,直接跳出,打印没有设备。
打个比方,假如你下面还有while循环的话,当你u==null时,执行return跳出,也就不在去执行下面的循环鸟。明白了吗
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马