方法一、什么是方法,有什么用?(你能看一看如果程序中没有方法会怎样吗?)方法(英文单词:method)是一段可以完成特定功能并可以重复使用的代码片段。方法的出现使得代码具有高度的可重用性。在C语言中,方法被称为“函数”。在java中,不叫函数,叫方法。你定义/抽取了一个方法,而这个方法不能完成某个功能,那么你抽取的方法就没有意义。通常一个方法是一个“功能单元”。假设在以后的开发中,可以独立抽取某个功能,建议定义为一个方法,这样以后只要需要这个功能,就可以直接调用这个方法,不用重复写业务逻辑代码。2、方法中最难的部分是:如何根据业务提取方法。方法返回值的类型定义是什么?方法的名称是什么?定义的方法的形式参数列表是什么?....方法是一个独立的函数。3、方法定义【修饰符列表】返回值类型方法名(形参列表){方法体;}4、了解方法的每一个细节1、修饰符列表:可选,目前写成:publicstatic2,如何理解返回值?返回值是方法执行的结果。3、返回值类型可以指定哪些类型?4、返回值与“返回语句”的关系。5.只要方法名是合法的标识符,首字母小写,后面每个单词的首字母大写。看名字就知道意思。6.形参列表7.方法体:方法体中的代码按照自上而下的顺序逐行执行。8.如何调用方法?什么时候可以“类名”。被省略?实参表,简称实参。(调用方法时传递的实际数据。)实参和形参之间是一一对应的关系。5、JVM的内存结构中有3个重要的内存空间。方法区:存放代码片段,存放xxx.class字节码文件,这个空间最先有数据,类加载器首先加载这里的代码。堆内存:后来(面向对象)栈内存:栈里面存的是什么?每个方法执行所需的内存空间(局部变量)。6.关于数据结构中的栈数据结构原理:后进先出先出后出栈数据结构相关术语:栈帧:始终指向栈顶的元素(栈顶元素有右激活。)栈顶元素和栈底元素压栈,压入栈,压入栈,push弹出栈,弹出栈,pop我也讲过昨天吧:什么是数据结构?什么是算法?有一本书:数据结构与算法。数据结构和算法的选择非常重要,如果选择正确,程序的执行效率会大大提高。可以很好的优化程序。7、分析程序运行过程中的内存变化。如果只定义了方法而没有调用,则不会执行该方法。方法调用时:压栈(在栈中为方法分配空间)方法执行结束时:出栈(释放方法占用的空间,以及局部变量的内存。)方法重载overload1、什么情况下我们考虑使用方法重载机制?功能相似时,建议定义方法名一致,这样代码美观,方便编程。注意:如果功能不相似,方法名一定要不一致。2.当代码满足什么条件时构成方法重载?条件一:在同一个类中条件二:方法名相同条件三:形参列表不同(类型、个数、顺序)注:方法重载与返回值类型无关,与返回值类型无关处理修饰符列表。3、方法重载有什么好处?代码美观方便。代码写法递归1.需要了解什么是方法递归?该方法本身调用自身。2.使用递归时,必须加上结束条件。如果没有结束条件,就会发生堆栈内存溢出错误。StackOverflowError原因:已经入栈,但是还没有出栈,栈内存不够。3.画出递归方法的内存结构图。可以在递归过程中绘制图片。4.你可以使用循环而不是递归。尽可能使用循环。循环的执行消耗的内存较少,递归消耗的内存相对较多。另外,递归使用不当,很容易造成内存溢出,JVM停止工作。当然,只有少数情况只能使用递归,其他代码无法解决问题。5、当递归有结束条件且结束条件合法时,会不会内存溢出?或许。也许递归太深了。6.分享一些递归经验。实际开发中遇到递归导致的栈内存溢出错误怎么办?第一步:首先检查结束条件是否正确。第二步:如果正确,可以调整JVM的栈内存大小。(java-X)我们应该盲目减少变量吗?代码缩水了吗?这个可以吗?公共类测试{publicstaticvoidmain(String[]args){/*inti=100;System.out.println(i);*/System.out.println(100);booleanflag=test();if(flag){...}//减少的if(test()){....}}publicstaticbooleantest(){returntrue;}}太在意变量个数的后果是什么?(运行效率不会低)后果一:代码可读性差。后果二:可读性差也可能影响代码开发效率。其实电脑内存也不错。.....注意:在编码过程中,必须定义一些变量名。因为这个数据需要在后面的代码中访问。重复访问此数据。
