菜鸟笔记(9)方法(Method)
总算学到方法了.没学过方法之前.很多学过知识的例题都看不懂,为什么? 里面掺进方法了~.唉~~~~~~ 另外...我是按照书上学习顺序学习的.我有几本java教学书,有的是先学方法,在学类.有的反过来. 我是安先看简单方法在看类的顺序学习...所以类的一切我还都不知道...开开始接触方法.一上来就 一大堆概念...而且都没听说过...有点晕了...
在菜鸟笔记(8)中我稍微提到过方法.现在来具体说一下. 首先先来闲谈一下: >在以前的学习中偶每次都要用到方法.public static void main()中的mian()应该就是一个方法 {目前的理解大部分后面带()都属于方法.for()等不是..不知道对不对).看看学习以后会有什么新的理解,呵呵. 那么如果一个程序很大.就像一个对象很大我们要把它分成许多小多项处理一样,不然不容易差错,方法也用同样的 道理.我们同样要把大的程序划分成一个一个小的模块,这种技术叫分而治之,程序开发维护维护一个一个小模块 比整个大程序更易于维护管理.那么什么是模块,模块好像就是方法.还有类(目前我还没学到类...) >方法还有一个重复的特性.按照我的理解,程序中有很多东西要重复使用.那么这些东西如果用的少可以每次打 一遍.如果一个程序要用到几十次甚至几百次.那么我门就打几百次几十次同样的代码.显然不行.这时可以用到 方法.把常用的代码写成方法.然后以后只要用到这个方法,就用调用语句把它掉出来.其实就好像你写什么东西 总要用到一段话.那么我门应该提前Ctrl+C给他复制下来,用的时候直接Ctrl+V就OK了.我觉得跟这个意思差不多. >大家都知道java提供了API.他是JDK带的.同时sun在不断更新jdk.现在偶才知道JDK叫J2SE...那么jdk中带有大量的 方法和类.jdk在更新什么?大多数更新的其实只是类库而已.jdk1.5.等大规模的更新除外... 多数一句,大家常说的API好像就是java类库,里面提供了大量的方法说明.程序员自己也可以编写方法.这时肯定的. 不过sun给的类库以基本能应付各种基本的情况.(我猜的...),应该是比较全面了,sun自己也在不断更新嘛. 如果sun的类库里面有就不要自己编写了.耽误时间. >那么大家可以看到API中有方法大量使用的说明,都记下来不可能的.只能随用随找,但API是全英文同样是个 问题,没有别的办法,只能刻苦学习英语,目前我在重新学英语中...有很多人找API翻译过的...不过我听说翻译 的都不行...所以...还是努力学英语吧...其实不仅java.以后很多软件不会用的都要看帮助,帮助同样是全英文 的...要恨只能恨这些东西全是外国出的.我听说其实这个问题说大也很严重,现在国家很多机关都必须用国产软件. 比如放着office不用用wps...为什么,一方面推进国产软件发展.一方面防备万一,万一是说万一国家打仗, 好像是说我们还用外国软件.到时候会全部瘫痪什么的.当然,我也只是听说,并不是来吓人...呵呵.目前我还是 只用原装的.比如收信就用outlook...浏览器只用IE.现在有比IE好的浏览器,但大多数网上吹的神乎其神的大多 比IE差远了.不要详细那些.另外想整理硬盘最好也用开始菜单程序里面的.听说其他软件有的毁硬盘. >举一个最简单的例子说一下大概方法运行的过程.比如说某程序需要调用那个程序的方法.那么可以用调用格式 去调用.(格式现在还没学到...)然后写好调用语句,等程序执行到调用语句的时候,自动跳到调用的方法地方. 开始执行调用的方法.然后执行完方法后可以返回一个值给调用者.而这个值就是我们所需要的,也就是我门 调用方法要用的值.执行完方法后在回到调用语句.然后继续执行调用语句以外的东西.目前只知道返回语句是 return呵呵.方法中到了return以后自动跳转到调用方法的语句.然后自动执行调用方法后面的语句.道理听起来 不难理解,不知道做练习的时候会不会一样.呵呵 >我看过书,方法也有不调用值的,比如public static void main(String[] args )不过这个应该是特殊中的特殊吧 (我猜的),而且只要调用了这个方法,就可以跟着写我最常写的,System...(听说好的编程软件通常都能自定义 某写句子的快捷键,比如就可以把常用的分别定义.)但好像大多数方法调用的目的都是要取个值吧.有的 可以调用的同时给方法参数,比如以前我说过的ADD(i j)给负责加的方法.方法吧i和j相加以后,吧他们相加 的值返回给调用者.这时候调用者应该在用一个新的变量比如k来接受这个值,以后程序在用这个值的时候就用 k就可以了. >方法调用我理解的是.掉用要分为调用者和被调用者.比如大家在学校都做过大扫除.大扫除就是程序 调用者就是老师.老师说,XX去扫地.那么老师第一次可以告诉你扫地的方法,怎么怎么扫,以后再说你去扫地, 你就知道改如何扫了.而不用,说你去扫你,你要XXXXX扫...XX你去擦玻璃..同样的道理.玻璃这里是另一种方法. >书上写到方法的变量都是局部变量.方法中的参数也是局部变量,至于什么是局部变量我也不知道...但猜想 应该是对变量的东西做了限制,或许只有这个方法中才可以用.就像for循环中定义的变量,到了for外面就不能 用了. >另外我记得一个程序至少有一个方法.主方法.main()...可后来听说有的程序并不一定要有方法... 如果真是这样.我还没学到那里,也不着急.但大多数程序应该都至少有一个方法吧呵呵. >到目前为止只是初步的学习一些method的基础概念,给我的感觉也很模糊,也许做做练习会清楚一点.呵呵
关于概念我只会这么多,下面来具体说一下方法.关于方法至少要知道方法的声明 方法的调用.方法的重载也要知道. 首先是声明 声明格式如下: [modifiers] type methodName (parametertype1 parametername1,paratype2,paraname2…) { methodBody }
翻译过来: 修饰词 方法返回类型 方法名(参数类型1 参数名称1,参数类型2 参数名称2.....) {方法主体
}
关于这里的笔记我一直没想好怎么记.所以来了最简单的练习.在从练习中解释吧. 另外这个练习的目的只是让初学熟悉一下方法,并不要求掌握.方法好像和类关联特别大,所以 还是等学了类以后在详细介绍方法吧.稍微了解一点方法,就能学习retrun还有try等等了. public class Zzz { public static void main(String[] args){ int total=0; for(int i=1;i<=10;i++){ total=cheng(i); System.out.print(total+" "); } } public static int cheng(int x){ return x*x; } }
提前说明一下,目前我是先学的方法在再类.那么类的一切我现在都不知道...也就是说关于修饰符部分. 我这里只说我会的部分.等到类那里在详细学习. 这是前两天在论坛上看到别人问题.改了改.由于我也是初学...不懂的只能按自己意思理解... 第1行:不用多说声明公共类,类名Zzz //其实就是"Zzz"睡觉~~偶长期处于半睡眠状态~~ 第2行:public static void mian(String[] args){ 这行重点说一下,目前我学到的东西还没有脱离开这句,这也是我前面学习唯一用到的方法. >public和static是modifiers(修饰词),public的意思是公共的,在这之前我只见到过它修饰class ,第一次见到它修饰method...按照我的理解应该是公共的方法...听说后面有什么访问权限,那我猜 带public一定是谁都可以使用的. >后面的static目前还只知道是静态的.书上写的是这个method不会有更改,调用这类method时候,所有对象所 使用的都是同一段代码,meihod内容完全相同.我看到后面说好处是直接以类名调用就可以使用,而不需要 产生任何对象.常用的System.out.print().这时我才想起print()也是一个方法...它是System类调用的.. 中间的out好像是向外.那out.print就是向外面输出了呵呵.偶感觉这种方法真方便. >void是不返回任何值.应该是这个方法不用返回任何值吧.大多数方法好像后面都要加return返回值. 我看了下后面,如果要有返回值的时候那么type类型中不能填void.要返回int就填写int,其他就填其他 >methodname.方法名字.我目前只知道它是方法中的一个特殊方法.而且程序是从这里开始执行的. 看书上说其他方法都可以随意取名字(关键字以外),只有main等几个特殊的不能改变.后来我曾很愚蠢 的试了一下把mian改成别的.然后编译...居然还成功了...可惜解析以后的结果是: "Exception in thread "main" java.lang.NoSuchMethodError:main" 呵呵.错误... 后来我不死心...把新写的cheng方法名字改成main,结果得到的是同样的结果...至此我明白除了主方法 以外其他方法的名字都不能用main了... >parametertype parametername:参数类型,参数名称.类型这里是string.而里面是一个数组.我见到带 []只知道它是数组...我曾经试着改过main的参数类型,得到的是上面同样的结果.但是我改数组名称时候 发现不影响程序.目前我只试出来主方法除了数组名称以外其他均不能改...一改就...error..呵呵. 我也把pulbic去掉过,得到的是main method not public...还没学到权限那部分,也不知道它有什么权限. 学过方法然后就到类了,呵呵.到时候就知道了. 第3行:声明一个名称为total的int变量,初始是1. 第4行:for循环.没什么好说的. 第5行:这一行应该是调用语句.调用后面的方法.这里提前说一点.学类以后我会说到调用方法的格式 是类名.方法名 但这里为什么可以这么写呢?它算不算调用方法的语句呢?答案是它是调用方法的语句. 因为方法在同一个类.(这里是Zzz类)的时候可以这样写~目前知道这些就可以了.本篇只是熟悉一下方法. 简单介绍一下.另外有一点要知道,那就是运算过程.这一部是将cheng(i)的值,传给第9行方法中的x. 开始我还以为是做到这部直接就跳转到第9行的方法.但是我忽略了,在第9行中方法中参数的值是怎么来的? x的值是怎么来的?后来知道原来是i赋值过来的...然后在计算x*x最后return... 这也是我刚看别人帖子发现的错误.如果后面有不对的地方.请自动更正. 第6行:print方法输出. 第7,8行:大括号... 第9行:好,终于说到另一个重点了.这个是我自己加入的方法...public static int cheng(int x) >public static:应该和mian方法意思查不多,而我又没学到访问权限那里,也不敢多说.不过public和static 只是修饰词,不是必须加的.不过这里要加.我猜可能要不设public不能从主方法里面调用这个.因为我试过 去掉修饰词.得到的是non-static method cheng(int) cannot be referenced from a static context >int是返回数据类型了.main()这里是void.它不需要返回数据.而这里要返回一个int型数据. >cheng这个是乘...的拼音...这里是方法名 >int y这里应该是参数,参数的类型和参数的值.在第5行说过,这里的y参数是被第5行i给赋值了,然后在进行 第10行运算. 第10行: return x*x: return这个词我见过很多次了,开始只知道它是返回.现在终于知道,在方法 中只要见到retrun,那么立刻跳到调用方法处.然后执行调用方法处后面的语句.returen后面是一个expression (表达式)这个格式必须是方法声明中的数据类型.我理解应该是把x*x赋值给第9行方法里面的x 第11,12:两个大括号~~
各行解释完了,然后我们来看一下运行的顺序.从第3行开始说.程序先执行第3行,让后进入第4行的for循环. for循环的判断句i<=10是true,那么继续执行for后面的第5行.这里是调用方法.首先它要吧cheng(i)中i的值 赋值给下面cheng方法中的参数x,这时候x的到参数,继续进行下面的retrun x*x.执行完了以后return应该带 着这个值.回到第5行,也就是total=cheng(i)这里.并将x值返回给cheng里面的i.然后在吧i的值赋值给total. 这样total得到值以后继续执行System.out.print(total);执行完以后,for循环第一轮就结束了. 直到最后一轮循环结束,程序也结束了.