Java 方法 - 菜鸟教程
文章推薦指數: 80 %
Java 方法在前面几个章节中我们经常使用到System.out.println(),那么它是什么呢? println() 是一个方法。
System 是系统类。
out 是标准输出对象。
菜鸟教程--学的不仅是技术,更是梦想!
首页
HTML
CSS
JavaScript
Vue
Bootstrap
NodeJS
Python3
Python2
Java
C
C++
C#
Go
SQL
Linux
jQuery
本地书签
首页
HTML
CSS
JS
本地书签
Search
Python3教程
Python2教程
Vue3教程
vue2教程
Bootstrap3教程
Bootstrap4教程
Bootstrap5教程
Bootstrap2教程
Java教程
Java教程
Java简介
Java开发环境配置
Java基础语法
Java对象和类
Java基本数据类型
Java变量类型
Java修饰符
Java运算符
Java循环结构
Java条件语句
Javaswitchcase
JavaNumber&Math类
JavaCharacter类
JavaString类
JavaStringBuffer
Java数组
Java日期时间
Java正则表达式
Java方法
JavaStream、File、IO
JavaScanner类
Java异常处理
Java面向对象
Java继承
JavaOverride/Overload
Java多态
Java抽象类
Java封装
Java接口
Java枚举
Java包(package)
Java高级教程
Java数据结构
Java集合框架
JavaArrayList
JavaLinkedList
JavaHashSet
JavaHashMap
JavaIterator
JavaObject
Java泛型
Java序列化
Java网络编程
Java发送邮件
Java多线程编程
JavaApplet基础
Java文档注释
Java实例
Java8新特性
JavaMySQL连接
Java9新特性
Java测验
Java正则表达式
Java流(Stream)、文件(File)和IO
Java方法
在前面几个章节中我们经常使用到System.out.println(),那么它是什么呢?
println()是一个方法。
System是系统类。
out是标准输出对象。
这句话的用法是调用系统类System中的标准输出对象out中的方法println()。
那么什么是方法呢?
Java方法是语句的集合,它们在一起执行一个功能。
方法是解决一类问题的步骤的有序组合
方法包含于类或对象中
方法在程序中被创建,在其他地方被引用
方法的优点
1.使程序变得更简短而清晰。
2.有利于程序维护。
3.可以提高程序开发的效率。
4.提高了代码的重用性。
方法的命名规则
1.方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头写,不使用连接符。
例如:addPerson。
2.下划线可能出现在JUnit测试方法名称中用以分隔名称的逻辑组件。
一个典型的模式是:test
方法的定义
一般情况下,定义一个方法包含以下语法:
修饰符返回值类型方法名(参数类型参数名){
...
方法体
...
return返回值;
}
方法包含一个方法头和一个方法体。
下面是一个方法的所有部分:
修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。
定义了该方法的访问类型。
返回值类型:方法可能会返回值。
returnValueType是方法返回值的数据类型。
有些方法执行所需的操作,但没有返回值。
在这种情况下,returnValueType是关键字void。
方法名:是方法的实际名称。
方法名和参数表共同构成方法签名。
参数类型:参数像是一个占位符。
当方法被调用时,传递值给参数。
这个值被称为实参或变量。
参数列表是指方法的参数类型、顺序和参数的个数。
参数是可选的,方法可以不包含任何参数。
方法体:方法体包含具体的语句,定义该方法的功能。
如:
publicstaticintage(intbirthday){...}
参数可以有多个:
staticfloatinterest(floatprincipal,intyear){...}
注意:在一些其它语言中方法指过程和函数。
一个返回非void类型返回值的方法称为函数;一个返回void类型返回值的方法叫做过程。
实例
下面的方法包含2个参数num1和num2,它返回这两个参数的最大值。
/**返回两个整型变量数据的较大值*/
publicstaticintmax(intnum1,intnum2){
intresult;
if(num1>num2)
result=num1;
else
result=num2;
returnresult;
}
更简略的写法(三元运算符):
publicstaticintmax(intnum1,intnum2){
returnnum1>num2?num1:num2;
}
方法调用
Java支持两种调用方法的方式,根据方法是否返回值来选择。
当程序调用一个方法时,程序的控制权交给了被调用的方法。
当被调用方法的返回语句执行或者到达方法体闭括号时候交还控制权给程序。
当方法返回一个值的时候,方法调用通常被当做一个值。
例如:
intlarger=max(30,40);
如果方法返回值是void,方法调用一定是一条语句。
例如,方法println返回void。
下面的调用是个语句:
System.out.println("欢迎访问菜鸟教程!");
实例
下面的例子演示了如何定义一个方法,以及如何调用它:
TestMax.java文件代码:
publicclassTestMax{
/**主方法*/
publicstaticvoidmain(String[]args){
inti=5;
intj=2;
intk=max(i,j);
System.out.println(i+"和"+j+"比较,最大值是:"+k);
}
/**返回两个整数变量较大的值*/
publicstaticintmax(intnum1,intnum2){
intresult;
if(num1>num2)
result=num1;
else
result=num2;
returnresult;
}
}
以上实例编译运行结果如下:
5和2比较,最大值是:5
这个程序包含main方法和max方法。
main方法是被JVM调用的,除此之外,main方法和其它方法没什么区别。
main方法的头部是不变的,如例子所示,带修饰符public和static,返回void类型值,方法名字是main,此外带个一个String[]类型参数。
String[]表明参数是字符串数组。
void关键字
本节说明如何声明和调用一个void方法。
下面的例子声明了一个名为printGrade的方法,并且调用它来打印给定的分数。
示例
TestVoidMethod.java文件代码:
publicclassTestVoidMethod{
publicstaticvoidmain(String[]args){
printGrade(78.5);
}
publicstaticvoidprintGrade(doublescore){
if(score>=90.0){
System.out.println('A');
}
elseif(score>=80.0){
System.out.println('B');
}
elseif(score>=70.0){
System.out.println('C');
}
elseif(score>=60.0){
System.out.println('D');
}
else{
System.out.println('F');
}
}
}
以上实例编译运行结果如下:
C
这里printGrade方法是一个void类型方法,它不返回值。
一个void方法的调用一定是一个语句。
所以,它被在main方法第三行以语句形式调用。
就像任何以分号结束的语句一样。
通过值传递参数
调用一个方法时候需要提供参数,你必须按照参数列表指定的顺序提供。
例如,下面的方法连续n次打印一个消息:
TestVoidMethod.java文件代码:
publicstaticvoidnPrintln(Stringmessage,intn){
for(inti=0;i
Java编译器根据方法签名判断哪个方法应该被调用。
方法重载可以让程序更清晰易读。
执行密切相关任务的方法应该使用相同的名字。
重载的方法必须拥有不同的参数列表。
你不能仅仅依据修饰符或者返回类型的不同来重载方法。
变量作用域
变量的范围是程序中该变量可以被引用的部分。
方法内定义的变量被称为局部变量。
局部变量的作用范围从声明开始,直到包含它的块结束。
局部变量必须声明才可以使用。
方法的参数范围涵盖整个方法。
参数实际上是一个局部变量。
for循环的初始化部分声明的变量,其作用范围在整个循环。
但循环体内声明的变量其适用范围是从它声明到循环体结束。
它包含如下所示的变量声明:
你可以在一个方法里,不同的非嵌套块中多次声明一个具有相同的名称局部变量,但你不能在嵌套块内两次声明局部变量。
命令行参数的使用
有时候你希望运行一个程序时候再传递给它消息。
这要靠传递命令行参数给main()函数实现。
命令行参数是在执行程序时候紧跟在程序名字后面的信息。
实例
下面的程序打印所有的命令行参数:
CommandLine.java文件代码:
publicclassCommandLine{
publicstaticvoidmain(String[]args){
for(inti=0;i
例如,你可以使用finalize()来确保一个对象打开的文件被关闭了。
在finalize()方法里,你必须指定在对象销毁时候要执行的操作。
finalize()一般格式是:
protectedvoidfinalize()
{
//在这里终结代码
}
关键字protected是一个限定符,它确保finalize()方法不会被该类以外的代码调用。
当然,Java的内存回收可以由JVM来自动完成。
如果你手动使用,则可以使用上面的方法。
实例
FinalizationDemo.java文件代码:
publicclassFinalizationDemo{
publicstaticvoidmain(String[]args){
Cakec1=newCake(1);
Cakec2=newCake(2);
Cakec3=newCake(3);
c2=c3=null;
System.gc();//调用Java垃圾收集器
}
}
classCakeextendsObject{
privateintid;
publicCake(intid){
this.id=id;
System.out.println("CakeObject"+id+"iscreated");
}
protectedvoidfinalize()throwsjava.lang.Throwable{
super.finalize();
System.out.println("CakeObject"+id+"isdisposed");
}
}
运行以上代码,输出结果如下:
$javacFinalizationDemo.java
$javaFinalizationDemo
CakeObject1iscreated
CakeObject2iscreated
CakeObject3iscreated
CakeObject3isdisposed
CakeObject2isdisposed
Java正则表达式
Java流(Stream)、文件(File)和IO
4篇笔记
写笔记
#0 Lichee 442***[email protected]当一个对象被创建时候,构造方法用来初始化该对象。
构造方法和它所在类的名字相同,但构造方法没有返回值。
通常会使用构造方法给一个类的实例变量赋初值,或者执行其它必要的步骤来创建一个完整的对象。
不管你与否自定义构造方法,所有的类都有构造方法,因为Java自动提供了一个默认构造方法,它把所有成员初始化为0。
一旦你定义了自己的构造方法,默认构造方法就会失效。
Lichee Lichee 442***[email protected]年前(2017-01-11)
#0 原来来如此 aur***[email protected]当创建对象时,系统会自动调用构造方法没有自定义构造方法时,系统会调用默认构造方法构造方法可以重载,不同的构造方法名字相同,参数列表不同,参数列表是其识别的依据、标志,类似不同人可能有相同的名字,但有不同的身份证号。
当自定义构造方法时,系统依据传入的参数类型、数量,自动匹配构造方法初始化对象原来来如此 原来来如此 aur***[email protected]年前(2017-07-04)
#0 DIRN 117***[email protected] 参考地址51对于Java的可变参数:
typeName...parameterName
一个函数至多只能有一个可变参数,且可变参数为最后一个参数。
对于可变参数,编译器会将其转型为一个数组,故在函数内部,可变参数名即可看作数组名。
且
voidfunction(String...args);
voidfunction(String[]args);
这两个方法的命名是相等的,不能作为方法的重载。
可变参数,即可向函数传递0个或多个参数,如:
voidfunction("Wallen","John","Smith");
voidfunction(newString[]{"Wallen","John","Smith"});
这两种调用方法效果是一样的。
对于可变参数的方法重载。
voidfunction(String...args);
voidfunction(Stringargs1,Stringargs2);
function("Wallen","John");
优先匹配固定参数的方法。
更多内容可参考:Java可变参数
DIRN DIRN 117***[email protected] 参考地址4年前(2018-09-06)
#0 李保民 141***[email protected] 参考地址4方法中的参数绑定&变量类型的理解巩固:
参数绑定:调用方把参数传递给实例方法时,调用时传递的值会按参数位置一一绑定。
基本类型参数的传递实例:
publicclassMain{
publicstaticvoidmain(String[]args){
Personp=newPerson();
intn=15;//n的值为15tip:基本类型变量
p.setAge(n);//传入n的值tip:参数n传递的是值
System.out.println(p.getAge());//15
n=20;//n的值改为20
System.out.println(p.getAge());//15还是20?tip:15
}
}
classPerson{
privateintage;
publicintgetAge(){
returnthis.age;
}
publicvoidsetAge(intage){
this.age=age;
}
}
基本类型参数的传递,是调用方值的复制,双方各自的后续修改,互不影响。
基本类型变量:“持有某个数值”,变量名指向具体的数值。
引用类型参数的传递实例:
publicclassMain{
publicstaticvoidmain(String[]args){
Gameg=newGame();
String[]gamename={"王者","荣耀"};//gamename变量指向的是这个数组的内存地址
g.setName(gamename);//传入gamename数组tip:传入的是内存地址↑
System.out.println(g.getName());//王者荣耀
gamename[1]="农药";//gamename数组的第二个元素修改为"农药"
System.out.println(g.getName());//"王者荣耀"还是"王者农药"?tip:王者农药
}
}
classGame{
privateString[]name;
publicStringgetName(){
returnthis.name[0]+""+this.name[1];
}
publicvoidsetName(String[]name){
this.name=name;
}
}
引用类型参数的传递,调用方的变量,和接收方的参数变量,指向的是同一个数组地址(内存地址)。
双方任意一方对这个对象(数组)的修改,都会影响对方(因为指向同一个对象)
引用类型变量:变量名指向某个对象的内存地址。
李保民 李保民 141***[email protected] 参考地址6个月前(03-29)
点我分享笔记
取消
分享笔记
昵称昵称(必填)
邮箱邮箱(必填)
引用地址引用地址
分类导航
HTML/CSSHTML教程HTML5教程CSS教程CSS3教程Bootstrap3教程Bootstrap4教程Bootstrap5教程FontAwesome教程Foundation教程JavaScriptJavaScript教程HTMLDOM教程jQuery教程AngularJS教程AngularJS2教程Vue.js教程Vue3教程React教程TypeScript教程jQueryUI教程jQueryEasyUI教程Node.js教程AJAX教程JSON教程Echarts教程Highcharts教程Google地图教程服务端Python教程Python2.x教程Linux教程Docker教程Ruby教程Java教程C教程C++教程Perl教程Servlet教程JSP教程Lua教程Rust教程Scala教程Go教程PHP教程数据结构与算法Django教程Zookeeper教程设计模式正则表达式Maven教程Verilog教程ASP教程AppML教程VBScript教程数据库SQL教程MySQL教程PostgreSQL教程SQLite教程MongoDB教程Redis教程Memcached教程数据分析Python教程NumPy教程Pandas教程Matplotlib教程Scipy教程R教程Julia教程移动端Android教程Swift教程jQueryMobile教程ionic教程Kotlin教程XML教程XML教程DTD教程XMLDOM教程XSLT教程XPath教程XQuery教程XLink教程XPointer教程XMLSchema教程XSL-FO教程SVG教程ASP.NETASP.NET教程C#教程WebPages教程Razor教程MVC教程WebForms教程WebServiceWebService教程WSDL教程SOAP教程RSS教程RDF教程开发工具Eclipse教程Git教程Svn教程Markdown教程网站建设HTTP教程网站建设指南浏览器信息网站主机教程TCP/IP教程W3C教程网站品质
Advertisement
反馈/建议
在线实例
·HTML实例
·CSS实例
·JavaScript实例
·Ajax实例
·jQuery实例
·XML实例
·Java实例
字符集&工具
·HTML字符集设置
·HTMLASCII字符集
·JS混淆/加密
·PNG/JPEG图片压缩
·HTML拾色器
·JSON格式化工具
·随机数生成器
最新更新
·
JavaScript获取...
·
JavaScript实现...
·
HTMLDOMstyle...
·
HTMLDOMscroll...
·
HTMLDOMscroll...
·
HTMLDOMscroll...
·
Dockerstats命令
站点信息
·
意见反馈
·
免责声明
·
关于我们
·
文章归档
关注微信
Copyright©2013-2022菜鸟教程
runoob.comAllRightsReserved.备案号:闽ICP备15012807号-1
微信关注
延伸文章資訊
- 1Java 方法宣告與流程 - 翻轉工作室
import java.util.*;. /* Ex6_1 類別開始 */. public class Ex6_1 {. /* main 方法開始 */. public static void ...
- 2Java Tutorial 第二堂(3)方法、類別與套件
直接從類別定義出發,再定義靜態方法(Static method),對一些簡單需求來說,確實是不必要,不過就程式的組織與架構上,Java 的作法與一些語言並沒有差別,只不過要求 ...
- 3Java學習筆記-方法(Method)
將程式模組化有便於分析、加速開發、維護簡單、容易偵錯的優點, 因此模糊化程式設計在程式設計中非常常見。 不過也需要注意模組的獨立性以及模組間的結合與溝通。 在java ...
- 4關於方法| Java SE 6 技術手冊
在J2SE 5.0 後當您使用方法重載時,要注意到autoboxing、unboxing 的問題,來看看範例7.9,您認為結果會是什麼? 範例7.9 OverloadTest.java. pub...
- 5Java學習之路08---方法 - iT 邦幫忙
方法格式 · 修飾符. 告訴compiler如何調用該方法(option); 例如封裝性的 public , private ,靜態方法的 static · 返回類型. 決定方法執行完成後的返回...