Function⽅法-java
Java ⽅法
System.out.println();
println()是⼀个⽅法
System是系统类
out是标准输出对象
什么是⽅法
⽅法定义
⽅法调⽤
void 关键字
通过值传递参数
⽅法重载
变量作⽤域
命令⾏参数的使⽤
构造⽅法
可变参数
finalize()⽅法
什么是⽅法
Java执⾏语句的合集,⼀起执⾏⼀个功能
解决⼀类问题的步骤的有序组合
包含于类或者对象中
在程序中被创建,在其他地⽅被引⽤
优点
1. 使程序简短⽽清晰
2. 有利于程序维护
3. 可以提⾼程序开发效率
4. 提⾼代码复⽤性
⽅法命名规则
1. 第⼀个单词⼩写开头,从第⼆个单词起,每个单词的⾸字母⼤写
2. 下划线可能出现在Junit测试⽅法中⽤于分割名称的逻辑组件
⽅法定义
语法格式:
//修饰符返回值类型⽅法名(参数类型参数名){
执⾏的⽅法体
//如果有返回值
return 返回值;
}
修饰符:可选的,告诉编译器如何调⽤该⽅法,定义该⽅法访问类型
返回值类型:可能会有返回值,retrunValueType是⽅法⽅悔之的数据类型。有些⽅法执⾏所有的操作,但没有返回值,这种情况下关键字为void。
⽅法名:⽅法的实际名称
参数类型:参数像是⼀个占位符
⽅法体:包含具体的语句定义该⽅法的功能
名人座右铭
例如:public static int age(int day){....}
参数可以有很多个
static float interest(float principal,int year){....}
注意:在⼀些其他语⾔中⽅法制过程和函数。,⼀个返回⾮void类型的⽅法称为函数,⼀个返回void类型返回值的⽅法叫过程。
⽰例
/** 返回两个整型变量数据的较⼤值 */
public static int max(int num1, int num2) {
int result;
源源不断
if (num1 > num2)
result = num1;
el
result = num2;菜心的做法大全
return result;
}
⽅法调⽤
Java ⽀持两种调⽤⽅法的⽅式,根据⽅法是否返回值来选择。
当程序调⽤⼀个⽅法时,程序的控制权交给了被调⽤的⽅法。当被调⽤⽅法的返回语句执⾏或者到达⽅法体闭括号时候交还控制权给程序。当⽅法返回⼀个值的时候,⽅法调⽤通常被当做⼀个值。例如:
int larger = max(30,40);
如果⽅法返回值是void,⽅法调⽤⼀定是⼀条语句
System.out.print("helloworld!");
⽰例
public class TestMax {
/** 主⽅法 */
public static void main(String[] args) {
int i = 5;
int j = 2;
int k = max(i, j);
System.out.println( i + " 和 " + j + " ⽐较,最⼤值是:" + k);
}
/** 返回两个整数变量较⼤的值 */
public static int max(int num1, int num2) {
int result;
if (num1 > num2)
result = num1;
el
result = num2;
return result;
}
}
这个程序包含 main ⽅法和 max ⽅法。main ⽅法是被 JVM 调⽤的,除此之外,main ⽅法和其它⽅法没什么区别。
main ⽅法的头部是不变的,如例⼦所⽰,带修饰符 public 和 static,返回 void 类型值,⽅法名字是 main,此外带个⼀个 String[] 类型参数。String[] 表明参数是字符串数组。
void 关键字
⽰例
public class TestVoidMethod {
public static void main(String[] args) {
printGrade(78.5);
}
public static void printGrade(double score) {
if (score >= 90.0) {
System.out.println('A');
}
el if (score >= 80.0) {
System.out.println('B');
}
el if (score >= 70.0) {
System.out.println('C');
}
el if (score >= 60.0) {
System.out.println('D');
}
el {
System.out.println('F');
}
}
}
通过值传递参数
冰心作者简介
调⽤⼀个⽅法时候需要提供参数,你必须按照参数列表指定的顺序提供。
⽰例
public static void nPrintln(String message, int n) {
for (int i = 0; i < n; i++) {
System.out.println(message);
}
}
⽰例:交换两个变量的值
public class TestPassByValue {
/** 交换两个变量的⽅法 */
public static void swap(int n1, int n2) {
System.out.println("\t进⼊ swap ⽅法");
System.out.println("\t\t交换前 n1 的值为:" + n1
+ ",n2 的值:" + n2);
// 交换 n1 与 n2的值
int temp = n1;
n1 = n2;
n2 = temp;
System.out.println("\t\t交换后 n1 的值为 " + n1
+ ",n2 的值:" + n2);
}
public static void main(String[] args) {
int num1 = 1;
int num2 = 2;
System.out.println("交换前 num1 的值为:" +
num1 + " ,num2 的值为:" + num2);
// 调⽤swap⽅法
swap(num1, num2);
System.out.println("交换后 num1 的值为:" +
num1 + " ,num2 的值为:" + num2);
}
}
⽅法重载
上⾯使⽤的max⽅法仅仅适⽤于int型数据。但如果你想得到两个浮点类型数据的最⼤值呢?
解决⽅法是创建另⼀个有相同名字但参数不同的⽅法,如下⾯代码所⽰:
public static double max(double num1, double num2) {
if (num1 > num2)
return num1;
el
return num2;
}
如果你调⽤max⽅法时传递的是int型参数,则 int型参数的max⽅法就会被调⽤;
如果传递的是double型参数,则double类型的max⽅法体会被调⽤,这叫做⽅法重载;
就是说⼀个类的两个⽅法拥有相同的名字,但是有不同的参数列表。
Java编译器根据⽅法签名判断哪个⽅法应该被调⽤。
⽅法重载可以让程序更清晰易读。执⾏密切相关任务的⽅法应该使⽤相同的名字。
重载的⽅法必须拥有不同的参数列表。你不能仅仅依据修饰符或者返回类型的不同来重载⽅法。变量作⽤域
变量的范围是程序中该变量可以被引⽤的部分。
⽅法内定义的变量被称为局部变量。
局部变量的作⽤范围从声明开始,直到包含它的块结束。
局部变量必须声明才可以使⽤。
⽅法的参数范围涵盖整个⽅法。参数实际上是⼀个局部变量。
for循环的初始化部分声明的变量,其作⽤范围在整个循环。
你可以在⼀个⽅法⾥,不同的⾮嵌套块中多次声明⼀个具有相同的名称局部变量,但你不能在嵌套块内两次声明局部变量。
命令⾏参数的使⽤
有时候你希望运⾏⼀个程序时候再传递给它消息。这要靠传递命令⾏参数给main()函数实现。
命令⾏参数是在执⾏程序时候紧跟在程序名字后⾯的信息。
⽰例
public class CommandLine {
public static void main(String args[]){
for(int i=0; i<args.length; i++){
System.out.println("args[" + i + "]: " + args[i]);
}
}
}
工具简笔画构造⽅法
当⼀个对象被创建时候,构造⽅法⽤来初始化该对象。构造⽅法和它所在类的名字相同,但构造⽅法没有返回值。
通常会使⽤构造⽅法给⼀个类的实例变量赋初值,或者执⾏其它必要的步骤来创建⼀个完整的对象。
不管你是否⾃定义构造⽅法,所有的类都有构造⽅法,因为Java⾃动提供了⼀个默认构造⽅法,默认构造⽅法的访问修改符和类的访问修改符相同(类为 public,构造函数也为 public;类改为 private,构造函数也改为 private)。
⼀旦你定义了⾃⼰的构造⽅法,默认构造⽅法就会失效。
⽰例
// ⼀个简单的构造函数
class MyClass {
int x;
/
/ 以下是构造函数
MyClass() {
x = 10;
}
}
调⽤构造⽅法初始化对象
public class ConsDemo {
public static void main(String args[]) {
千秋直美MyClass t1 = new MyClass();
MyClass t2 = new MyClass();
System.out.println(t1.x + " " + t2.x);
}
}
可变参数
JDK 1.5 开始,Java⽀持传递同类型的可变参数给⼀个⽅法。
⽅法的可变参数的声明如下所⽰:
< parameterName
⽰例
public class VarargsDemo {
public static void main(String args[]) {
// 调⽤可变参数的⽅法
printMax(34, 3, 3, 2, 56.5);
printMax(new double[]{1, 2, 3});
}
public static void printMax( numbers) {
if (numbers.length == 0) {
System.out.println("No argument pasd");
return;
}
double result = numbers[0];
for (int i = 1; i < numbers.length; i++){
if (numbers[i] > result) {
result = numbers[i];
}
}
System.out.println("The max value is " + result);
}
}
红晕的读音finalize()⽅法
Java 允许定义这样的⽅法,它在对象被垃圾收集器析构(回收)之前调⽤,这个⽅法叫做 finalize( ),它⽤来清除回收对象。例如,你可以使⽤ finalize() 来确保⼀个对象打开的⽂件被关闭了。
在 finalize() ⽅法⾥,你必须指定在对象销毁时候要执⾏的操作。
finalize() ⼀般格式是:
protected void finalize()
{
// 在这⾥终结代码
}
关键字 protected 是⼀个限定符,它确保 finalize() ⽅法不会被该类以外的代码调⽤。
当然,Java 的内存回收可以由 JVM 来⾃动完成。如果你⼿动使⽤,则可以使⽤上⾯的⽅法。
⽰例
public class FinalizationDemo {
public static void main(String[] args) {
Cake c1 = new Cake(1);
Cake c2 = new Cake(2);
Cake c3 = new Cake(3);
c2 = c3 = null;
<(); //调⽤Java垃圾收集器
}
}
class Cake extends Object {
private int id;
public Cake(int id) {
this.id = id;
System.out.println("Cake Object " + id + "is created");
}
protected void finalize() throws java.lang.Throwable {
super.finalize();
电饭锅焖鸡腿
System.out.println("Cake Object " + id + "is dispod");
}
}