Java知识7 Java方法 void关键字 构造方法【多测师】

一、Java方法:
println 是一个方法
System  是系统类
out  是标准输出对象
这句话的用法是调用系统类 System 中的标准输出对象 out 中的方法 println()。

方法定义:包含的语法
修饰符 返回值类型 方法名(参数类型 参数名){ 
... 
方法体 
... 
return 返回值; }
修饰符:可选的 告诉编译器如何调用该方法 定义了方法的访问类型
返回值类型:方法可能有返回值 returnValueType是返回数据类型 没有返回值returnValueType为void
方法名:方法名和参数表共同构成方法签名
参数类型:参数像一个占位符 当方法被调用的时候 传递值给参数、这个值被称为实参或变量 参数列表是
指方法的参数类型、顺序和参数的个数 参数是可选的 方法可以不包含任何参数
方法体:方法体包含具体的语句 定义该方法的功能

在一些其它语言中方法指过程和函数。一个返回非void类型返回值的方法称为函数;一个返回void类型返回值的方法叫做过程。
实例:下面方法包含2个参数 num1和num2 它返回这俩个参数的最大值
/** 返回两个整型变量数据的较大值 */
public static int max(int num1, int num2) {
   int result;
   if (num1 > num2)
      result = num1;
   else
      result = num2;
   return result;
}

二、方法调用
定义一个方法、进行调用代码如下:
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;
   else
    result = num2;

   return result;
  }
}
这个程序包含 main 方法和 max 方法。main 方法是被 JVM 调用的,除此之外,
main 方法和其它方法没什么区别。
main 方法的头部是不变的,如例子所示,带修饰符 publicstatic,返回 void 类型值,
方法名字是 main,此外带个一个 String[] 
类型参数。String[] 表明参数是字符串数组。

三、void关键字
举例看如何声明和调用一个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');
   } else if (score >= 80.0) {
    System.out.println('B');
   } else if (score >= 70.0) {
    System.out.println('C');
   } else if (score >= 60.0) {
    System.out.println('D');
   } else {
    System.out.println('F');
   }
  }
}
运行结果:C
这里printGrade方法是一个void类型方法,它不返回值。
一个void方法的调用一定是一个语句。 所以,它被在main方法第三行以语句形式调用。就像任何以分号结束的语句一样。

四、通过值传递参数
调用一个方法适合需要提供参数、你必须按照参数列表指定的顺序提供
举例子:按值传递效果 创建一个方法 用户交换俩个变量
public class TestPassByValue {
  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);
  }

  /** 交换两个变量的方法 */
  public static void swap(int n1, int n2) {
   System.out.println("	进入 swap 方法");
   System.out.println("		交换前 n1 的值为:" + n1 + ",n2 的值:" + n2);
   // 交换 n1 与 n2的值
   int temp = n1;
   n1 = n2;
   n2 = temp;

   System.out.println("		交换后 n1 的值为 " + n1 + ",n2 的值:" + n2);
  }
}

五、变量作用域
方法内定义的变量为局部变量、局部变量的作用范围从声明开始 直到包含它的块结束

六、构造方法
当一个对象被创建时、构造方法用来初始化该对象、构造方法和类同名字 但构造方法没有返回值
通常会使用构造方法给一个类的实例变量赋初值
不管你是否定义了构造方法 所有的类都有构造方法 因为Java自动提供了一个默认的构造方法
它把所有成员初始化为0 
自己定义了构造方法、默认的构造方法就会失效
实例代码如下:(没有给参数的构造方法)
//一个简单的构造函数
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);
  }
}
运行结果:10  10

如下为有参数的构造方法:
//一个简单的构造函数
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);
  }
}
运行结果:10  20

七、可变参数
Java支持传递同类型的可变参数给一个方法
在方法声明中、在指定参数类型后加一个省略号(…)
一个方法中只能指定一个可变参数、它必须是方法的最后一个参数 任何普通的参数必须在它之前声明
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(double... numbers) {
   if (numbers.length == 0) {
    System.out.println("No argument passed");
    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);
  }
}

八、实例化对象
import java.util.Date;

public class DateDemo {
  public static void main(String[] args) {
   //初始化Date对象、进行实例化
   Date date = new Date();   //创建一个Date对象
   date.toString();
   //使用 toString() 函数显示日期时间
   System.out.println(date);
  }
}
原文地址:https://www.cnblogs.com/xiaoshubass/p/13110725.html