标签:没有 方法返回值 继承 inf 测试 参数 命名 系统 编译器
在前面我们经常使用到System.out.println(),那么它是什么呢?
这句话的用法是调用系统类System中的标准输出对象out中的方法println()。
java方法是语句的集合,他们在一起执行一个功能。
修饰符 返回值类型 方法名(参数类型 参数名){
。。。
方法体
。。。
return 返回值;
}

Java支持两种调用方法的方式,根据方法是否返回值来选择。
当程序调用一个方法时,程序的控制权交给了被调用的方法。当被调用方法的返回语句执行或者到达方法体闭括号时候交换控制权给程序。
当方法返回一个值的时候,方法调用通常被当作一个值。例如:
int larger=max(30,40);
如果方法返回值是void(可以有参数),方法调用一定是一条语句。例如,方法println()返回void。下面的调用是个语句:
public void ending(){
System.out.println("Thanking for view!")
}
无法从静态上下文中引用非静态方法。
package pkg2020华南虎;
/**
*
* @author yl
*/
public class TestMax {
public static void main(String[] args) {
int i = 20;
int j = 23;
int k = max(i, j);
System.out.println("Max number is "+k+".");
}
public static int max(int a, int b) {
int result;
if (a > b) {
result = a;
} else {
result = b;
}
return result;
}
}
main方法是被JVM调用 的,除此之外,main方法和其他方法没什么区别。String【】表明参数是字符串数组。
package pkg2020华南虎;
/**
*
* @author yl
*/
public class TestVoidMethod {
public static void main(String[] args) {
printGrade(78.5);
}
static void printGrade(double score) {
if (score > 90) {
System.out.println(score + " is perfect.");
} else if (score > 60) {
System.out.println(score + " is OK.");
} else {
System.out.println(score + " is Flunk.");
}
}
}
这里printGrade方法是一个void类型方法,它不返回值。
一个void方法的调用一定是一个语句。
调用一个方法的时候需要提供参数,你必须按照参数列表指定的顺序提供。
例如,下面的方法n次打印一个消息。
public static void nPrintln(String message,int n){
for(int i<0;i<n;i++){
System.out.println(message);
}
}
下面的例子演示按值传递的效果。
该程序创建一个方法,该方法用于交换两个变量。
package pkg2020华南虎;
/**
*
* @author yl
*/
public class SwapValue {
public static void main(String[] args) {
int num1 = 1;
int num2 = 5;
swap(num1, num2);
System.out.println("num1,num2:" + num1 + "," + num2);
}
static void swap(int a, int b) {
int temp;
temp = a;
a = b;
b = temp;
}
}
传递两个参数调用swap方法。但是,方法被调用后,实参的值并没有改变。
上面使用的max方法仅仅适用于int类型的数据,但是如果你想要的到两个浮点型数据的最大值呢?
解决方法是创建另一个有相同名字但是参数不同的方法,如下代码所示:
public static double max(double num1,double num2){
int result;
if(num1>num2)
result=num1;
else
result=num2;
return result;
}
如果你调用max方法时传递的是int型参数,则int型参数的max方法会被调用。
如果传递的是double型参数,则double类型的max方法体会被调用,这称为方法重载。
即一个类的两个方法拥有相同的名字,但是有不同的参数列表。Java编译器根据方法签名判断哪个方法应该被调用。方法重载可以让程序更清晰易读。执行密切相关任务的方法应该使用相同的名字。
package pkg2020华南虎;
/**
*
* @author yl
*/
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;类改为protected,构造函数也改为protected)。一旦你定义了自己的构造方法,默认构造方法就会失效。
实例
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);
}
}
大多时候需要一个有参数的构造方法。
实例
class MyClass{
int x;
MyClass(int i){//构造函数
x=i;
}
}
public class ConsDemo{
public static void main(String args[]){
MyClass t1=new MyClass(10);
MyClass t2=new MyClass(20);
System.out.println(t1.x+" "+t2.x);
}
}
JDK1.5开始,Java支持传递同类型的可变参数给一个方法。
实例
Java允许定义这样的方法,它在对象被垃圾收集器(回收)之前调用,这个方法叫做finalize(),它用来清除回收对象。例如,你可以使用finalize()来确保一个对象打开的文件被关闭了。
在finalize()方法里,你必须指定在对象销毁时候要执行的操作。
finalize()一般格式是:
protected void finalize(){
//终结代码
}
protected限定符不可被继承,确保finalize()方法不会被该类以外的代码调用;void返回语句。
当然,Java的内存回收可以由JVM来自动完成。如果你手动使用,则可以使用上面的方法。

标签:没有 方法返回值 继承 inf 测试 参数 命名 系统 编译器
原文地址:https://www.cnblogs.com/2020yl/p/12248018.html