Java里方法的参数传递方式只有一种:值传递。 即将实际参数值的副本(复制品)传入方法内,而参数本身不受影响。
方法练习题:
/**
方法: 也称为函数, 解决功能封装的问题
声明:
修饰符 返回值类型 方法名(形参类型1 形参1, 形参类型2 形参2, 形参类型3 形参3 .....) {
语句;
return 返回值类型的具体值;
}
*/
public class MethodTest {
// 方法 = 方法签名 + 方法体
public static int add(int a, int b) {
System.out.println("add(int " + a + ", int " + b + ")");
int c = a + b;
return c;
// c = f(a,b)
}
public static void test() { // 既没有返回值, 也没有形参
System.out.println("test()...");
}
public static void main(String[] args) {
System.out.println("main begin...");
// 方法调用的依据只能是方法签名(方法的使用说明书)
// 方法名(实际参数1, 实际参数2);
// 方法的返回值 就是方法调用本身
int x = add(10, 20);
System.out.println("x:" + x);
System.out.println(add(100, 200));
//System.out.println(test()); // 方法的标志是() 方法无返回值时, 不可以打印输出方法调用
test(); // 方法的标志是()
System.out.println("main end...");
}
}
/*
1.编写程序,定义三个重载方法并调用。方法名为mOL。
三个方法分别接收一个int参数、两个int参数、一个字符串参数。第一个方法执行平方运算并输出结果,
第二个方法执行相乘并输出结果,第三个方法执行输出字符串信息。
在主类的main ()方法中分别用参数区别调用三个方法。
*/
public class Method1 {
public static int mOL(int a) {
int result = a * a;
return result;
}
public static int mOL(int a,int b) {
int result = a * b;
return result;
}
public static String mOL(String str) {
String tem = str;
return tem;
}
public static void main(String[] args) {
System.out.println(mOL(5));
System.out.println(mOL(5,6));
System.out.println(mOL("我是第三个方法!"));
}
}
/*
定义三个重载方法max(),第一个方法求两个int值中的最大值,第二个方法求两个double值中的最大值,
第三个方法求三个double值中的最大值,并分别调用三个方法。
*/
public class Method2 {
public static int max(int a,int b) {
int max = a > b ? a : b;
return max;
}
public static double max(double a,double b) {
double max = a > b ? a : b;
return max;
}
public static double max(double a,double b,double c) {
double max = a > b ? a : b;
max = max > c ? max : c;
return max;
}
public static void main(String[] args) {
System.out.println(max(5,6));
System.out.println(max(5.5,6.6));
System.out.println(max(5.5,6.6,7.7));
}
}
//编写程序,声明一个method方法,在方法中打印一个10*8的矩形,在main方法中调用该方法。
//再声明一个方法method2, 在方法中打印一个n*m的矩形,在main方法中调用该方法.
//再声明一个方法method3, 在方法中打印一个n*m的矩形,打印完后计算矩形的周长并返回, 在main方法中调用该方法,
//打印矩形的周长
public class MethodExer {
public static void method() {
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 8; j++) {
System.out.print("*");
}
System.out.println();
}
}
public static void method2(int n, int m) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
System.out.print("*");
}
System.out.println();
}
}
public static int method3(int n, int m) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
System.out.print("*");
}
System.out.println();
}
int l = (m + n) * 2;
return l;
}
public static void main(String[] args) {
System.out.println("main begin");
// 方法调用
//method();
//method2(10, 8);
System.out.println(method3(20, 60)); // 先打印矩形, 再打印返回值
}
}
public class StaticClass1{
//方法的“连环调用”以及方法的重载,在Method类中调用实现
public static void method() {
//打印一个10*8的矩形
method2(10,8);
}
public static void method2(int n,int m) {
//打印一个n*m的矩形
for (int i = 0;i < n;i++) {
for (int j = 0;j < m;j++) {
System.out.print("*");
}
System.out.println();
}
}
public static int method3(int n,int m) {
//打印一个n*m的矩形并返回其周长
method2(n,m);
return 2 * (n + m);
}
public static int method3(int n) {
//打印一个n*n的正方形并返回其周长
return method3(n,n);
}
}
public class Method {
//编写程序,声明一个method方法,在方法中打印一个10*8的矩形,在main方法中调用该方法。
//在声明一个method2,在方法中打印一个n*m的矩形,在main方法中调用该方法。
//在声明一个method2,在方法中打印一个n*m的矩形并计算矩形的周长,在main方法中调用该方法。
public static void main(String[] args) {
/*
StaticClass.method();
StaticClass.method2(8,9);
System.out.println(StaticClass.method3(7,8));
System.out.println(StaticClass.method3(7));
*/
StaticClass1.method();
StaticClass1.method2(2,3);
System.out.println(StaticClass1.method3(10,15));
System.out.println(StaticClass1.method3(7));
}
}