Java中简单的方法调用

【石鼻城】
  平时战国今无在,陌上征夫自不闲。北客初来试新险,蜀人従此送残山。独穿暗月朦胧里,愁渡奔河苍茫间。渐入西南风景变,道边修竹水潺潺。
【平时战国今无在,意思是战国的历史已经没有了。陌上征夫自不闲。我觉得这首诗,很适合自己的现在学习的心情。北客初来试新险,蜀人从此送残山。残山是个什么意思?蜀人说的是苏子自己吗?独穿暗月朦胧里,愁渡奔河苍茫间。感情也可能是相通的。这个感情以后用得着。】


关于方法的调用,原来不用这样详细的解释的。就直接说这样就调用了函数就行了。


public class NewLine {
public static void newLine(){
System.out.println("空一行");
}
public static void threeLine(){
newLine();
newLine();
newLine();
}
public static void main(String[] args){
System.out.println("First Line.");
threeLine();
System.out.println("second line.");
threeLine();
}


}
//这就是方法的调用了。它写了一个方法,然后在方法里写了东西。用的时候就直接用了方法名。如果是调用的话,应该是a.request.
当然,我们在里讲的不是函数的调用。


阅读包含多个方法的类定义时,不能按照从头到尾的顺序阅读,为什么?因为程序不是这样执行的。不管main方法位于源代码文件的什么地方,程序总是从这个方法的第一条语句开始执行,语句按照顺序以每次一条的方式执行,知道遇到方法调用,我们可将方法调用视为改道。不是直接执行下一条语句,而是跳转到被调用的方法的第一行,执行完这个方法的全部语句后,再回到离开的地方继续执行。


如果如果被调用的方法中还有被调用的方法,就一个又一个的调用。
我写了一个很好玩的内容,就是说,一步一步的调用。然后体会其中的跟踪功能。


/*我想通过调用,写出
“平时战国今无在,陌上征夫自不闲。
北客初来试新险,蜀人従此送残山。
独穿暗月朦胧里,愁渡奔河苍茫间。
渐入西南风景变,道边修竹水潺潺。”


*/


/*public class NewLine {
public static void newLine1(){
System.out.println("平时战国今无在,");

}

public static void newLine2(){
System.out.println("陌上征夫自不闲。");
}
public static void newLine3(){
System.out.println("北客初来试新险,");
}
public static void newLine4(){
System.out.println("蜀人従此送残山。");
}
public static void newLine5(){
System.out.println("独穿暗月朦胧里,");
}
public static void newLine6(){
System.out.println("愁渡奔河苍茫间。");
}
public static void newLine7(){
System.out.println("渐入西南风景变,");
}

public static void newLine10(){
System.out.println("道边修竹水潺潺。");
}


public static void main(String[] args){
newLine1();
newLine2();
newLine3();
newLine4();
newLine5();
newLine6();
newLine7();

newLine10();
}


}*/
//这就是方法的调用了。
/*这个方法也太简单了。我想用一个更多的调用方法。
 * 
 * */




/*还是这首诗,然后我来写一个比较复杂的内容,故意搞的很复杂。*/


public class NewLine{
public static void g(){
System.out.println("我真会耍,从a一路调用到g,abcdefg。");
System.out.println("是不是很像一个指针?或者是一个盒子,拆开大盒子,见到小盒子,再拆小盒子,见到小小盒子,再拆...");

}
public static void f(){
g();
}
public static void e(){
f();
}
public static void d(){
e();
}
public static void c(){
d();
}
public static void b(){
c();
}
public static void a(){
b();
}
public static void main(String[] args){
a();

}

}




Java擅长跟踪当前的运行方法。因此,println执行完毕后,它就会离开newLine的地方,newLine执行完毕后,回到离开threeLine的地方,而threeLine执行完毕后,又回到离开main的地方。


我们在阅读代码的时候,不能按照顺序阅读,而要按照执行流程阅读。


我可能被人耍了。反正我天天都不舒服,昨天舒服一次。我就感动的要哭了。
感情事说之不尽。


墨突不暇黔,孔席未尝暖。安知渭上叟,跪石留双骭。一朝婴世故,辛苦平多难。亦欲就安眠,旅人讥客懒。【这首诗我是没有看明白。什么是墨突不暇黔,孔席未尝暖。这个我要看翻译。】


我总是记不住形参和实参。怎么办?实参是具体的数据,形参知识一个符号,这个符号是代替的一个量。这样可以使得方法更具有一般性。用处变的更广泛。


public class PrintTwice {
public static void printTwice(String s) {// 这个s就是形参。
System.out.println(s);
System.out.println(s);
}


public static void main(String[] args) {
printTwice("Don't make me say this twice!");// 这个是往方法printTwice中传值。传的值称之为实参。
// 把实参传给了形参。
}


}
/*
 * printTwice 包含了一个名为s,类型为String的形参,调用printTwice时,必须提供一个类型为String的实参
 * 方法执行前,实参会赋给形参。在这个示例中,实参“Don't make me say this twice!”被赋给形参。
 * 感觉很像是声明了一个变量。然后再往变量里传值。我们了解一个人,其实是了解一个人所做的事,这个人是形参,所做的事就是实参。
 * 我们把这个人所作的事赋给这个人。只有这个人才会做这样的事。
 * 这个过程称之为参数传递。因为值从方法外传到了方法内。实参可以是任何表达式。因此,如果声明了一个String变量,就可将其用作实参。 String
 * arguement = "never say never."; printTwice(arguement);
 * 注意,用作实参的值必须与形参的类型相同。如果不一致,就会报错 Exception in thread "main" java.lang.Error:
 * Unresolved compilation problem: The method printTwice(String) in the type
 * PrintTwice is not applicable for the arguments (int)
 * 
 * at PrintTwice.main(PrintTwice.java:8)
 * 形参和其他变量只存在于当前的方法中,在mian中,没有s这样的变量,如果试图在这个方法中使用它。将导致编译错误。同样
 * printTwice中没有args变量。这个变量位于main中。于是我们就有了定义。只在定义它的方法中存在的变量。我们称之为局部变量。
 */





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java,可以使用反射机制来调用方法。通过反射,可以在运行时获取类的信息,并动态地调用类的方法。 要调用某个方法,首先需要获取对应的Method对象。可以使用Class类的getMethod()方法或getDeclaredMethod()方法来获取Method对象。getMethod()方法只能获取公共方法,而getDeclaredMethod()方法可以获取所有方法,包括私有方法。获取Method对象后,就可以使用invoke()方法调用方法。 下面是一个示例代码,演示了如何使用反射调用方法: ```java import java.lang.reflect.Method; public class ReflectExample { public static void main(String[] args) throws Exception { // 获取Class对象 Class<?> clazz = MyClass.class; // 获取方法名和参数类型 String methodName = "myMethod"; Class<?>[] parameterTypes = {int.class, String.class}; // 获取Method对象 Method method = clazz.getDeclaredMethod(methodName, parameterTypes); method.setAccessible(true); // 如果方法是私有的,需要设置可访问 // 创建对象实例 Object obj = clazz.newInstance(); // 调用方法 Object result = method.invoke(obj, 123, "hello"); // 输出结果 System.out.println(result); } } class MyClass { private String myMethod(int num, String str) { return str + num; } } ``` 以上代码,首先通过Class.forName()方法获取MyClass类的Class对象。然后,使用getDeclaredMethod()方法获取方法名为"myMethod",参数类型为int和String的Method对象。接着,使用newInstance()方法创建MyClass类的实例。最后,调用invoke()方法调用方法,并获取返回值。 我希望我的回答对你有帮助。如果你还有其他
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值