【石鼻城】
平时战国今无在,陌上征夫自不闲。北客初来试新险,蜀人従此送残山。独穿暗月朦胧里,愁渡奔河苍茫间。渐入西南风景变,道边修竹水潺潺。
【平时战国今无在,意思是战国的历史已经没有了。陌上征夫自不闲。我觉得这首诗,很适合自己的现在学习的心情。北客初来试新险,蜀人从此送残山。残山是个什么意思?蜀人说的是苏子自己吗?独穿暗月朦胧里,愁渡奔河苍茫间。感情也可能是相通的。这个感情以后用得着。】
关于方法的调用,原来不用这样详细的解释的。就直接说这样就调用了函数就行了。
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中。于是我们就有了定义。只在定义它的方法中存在的变量。我们称之为局部变量。
*/
平时战国今无在,陌上征夫自不闲。北客初来试新险,蜀人従此送残山。独穿暗月朦胧里,愁渡奔河苍茫间。渐入西南风景变,道边修竹水潺潺。
【平时战国今无在,意思是战国的历史已经没有了。陌上征夫自不闲。我觉得这首诗,很适合自己的现在学习的心情。北客初来试新险,蜀人从此送残山。残山是个什么意思?蜀人说的是苏子自己吗?独穿暗月朦胧里,愁渡奔河苍茫间。感情也可能是相通的。这个感情以后用得着。】
关于方法的调用,原来不用这样详细的解释的。就直接说这样就调用了函数就行了。
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中。于是我们就有了定义。只在定义它的方法中存在的变量。我们称之为局部变量。
*/