*## 方法
统计:
int count = 0;
…
if(count % 8 == 0){
count++;
system.out.ptintln(…);
}
第二种方法:
if(count == 8){
system.out.println(..);
count =0; //归零
}
方法:
方法的基础语法
Java 方法
某个功能代码只需要写一遍,要使用这个功能,只需要给这个功能 传递具体的数据
这个功能完成之后返回一个最终的结果
这样就能重复利用这一代码
以上简称为:方法
使用这一方法我们成为 : 调用 invoke
方法的本质:
方法就是一段代码片段,完成某一特定的功能,并且可以重复使用
对应的英语单词: Method
方法在C语言中叫 函数/功能
#注意:
方法定义在类体当中
一个类中由若干个方法和变量组成
方法体中不能再定义方法
方法2.0:
方法怎么定义?语法结构
【修饰符列表】 返回值类型 方法名(形式参数列表){
方法体;(必须有大括号括起来)
}
语法结构的解释说明:
修饰符列表: --可选项,不是必须的
--统一写成:public static
--修饰符列表中有 static关键字 的话,怎么调用这个方法?
类名.方法名(实际参数列表); . 表示的意思,表示什么什么 的
返回值类型:
--一个方法是可以完成某个特定功能的,这个功能结束之后大多数都是都是
需要返回最终的执行结果,执行结果可能最终是一个具体的数据(分类型)
包括基本数据类型和引用数据类型
--并不是所有的方法都有返回值(类型)
当一个方法执行结束之后不会 “返回任何数据类型”的话,返回值位置必须编写
:void 来代替
--返回值类型可以是:
int、void、long、float、double、char、string等等
如果返回值类型不是void,那么这个方法执行结束之后必须返回一个具体的数据
--怎么返回值?格式:
return 字面值;
要求:返回的值 必须和返回值类型保持一致
返回值类型为void时,方法体不能有return语句
如果要强加return的话,可以在后面写 return;不写字面值
但是
带有return关键字的语句执行,return语句所在的方法结束
方法名:
只要是合法的标识符就行
方法名最好见名知意
方法名最好是动词
变量名,方法名首字母要求小写,后每个单词的首字母大写
类名、接口名首字母大写,以后每个单词首字母大写
形式参数列表:
形参是局部变量,有数据类型
形参可以多个,之间用逗号 , 隔开
形参中起决定性作用的是数据类型
例如:
//方法的定义
public static int sum(int 变量名,int b ){
//(int a,int b)是形参列表
}
//方法的调用
sum("10","20");//实参列表
形参列表和实参列表关系: 必须满足数量相同、类型对应相同,才能可以进行
类型转换
如:
类名.方法名((转换符)数据类型,局部变量)
方法如何调用:
语法规则:【要有static】
类名.方法名(实参列表)
方法的调用不一定要在 main中,可以在其他方法当中
只要程序执行到位,都可以去调用其他方法
方法的修饰符列表当中有static关键字,完整的方式是:类名.方法名(形参列表)
有时候,类名. 可以省略不写
省略不写的几种情况:
* 方法在同一类体当中调用,类名可以直接不写,方法名要写
* 在一个类体调用不同一个类体的方法是写上:类名.方法名(形参);
* 对于当前程序来说,main方法最先调用,最后一个结束
方法返回值不是void的时候
要求方法必须保证百分百的执行 “return 字面值”,这样的语句完成 值的返回
一个方法有返回值的时候 ,当我们调用这个方法的时候, 方法返回了一个值,
对于调用者来说,这个返回值可以选择接收,也可以选择不接受 ,
但是但部分情况下是选择接收的
还可以用system.out.println()输出
深入return语句:
带有return关键字的Java语句只要执行,所在的方法结束
在同一个作用域当中,return语句下面不能编写任何代码
在返回值类为void的方法中 使用“return”语句
return语句出现在void语句中主要是为了终止方法的执行
break和return的区别:
return作用于方法的终止
break作用于循环语句的终止
方法在执行过程中,在jvm中的内存是如何分配的呢?内存是如何变化的?
* 方法只定义,不调用,是不会执行,并且在jvm中也不会给该方法分配“运算所属”的内存空间
只调用的时候才有内存空间(方法只定义,不调用,是没有内存空间的)
* 在jvm中内存 划分上有三块主要的内存空间:
--方法区(内存)存储代码片段
--堆区(内存)对象
--栈区(内存)
* 关于栈数据结构:
-- 栈:stack,是一种数据结构(数据结构就是数据存储的一种形态)
-- 常见的数据结构:
* 数组
* 队列
* 二叉树
* 链表
* 栈:
--栈顶元素
- 栈帧(永远指向栈顶元素)
- 栈顶元素处于活跃状态,其他元素处于静止状态
- 术语:
--入栈push
--出栈pop
- 栈数据结构存储数据的特点是:
-- 先进后出
-- 后进先出
--栈底元素
* 哈希表/散列表
......
方法代码片段存储在哪里? 方法执行的时候执行过程的内存在那里分配?
* 方法代码片段属于.class字节码文件的一部分,“字节码文件”在类加载的时候,
将其放在方法区中,所以方法区最先有数据和内存,存放可代码片段。
* 代码片段虽然在方法区中只有一份,但是可以被重复调用。
每一调用这个方法,需要给该方法分配独立的活动场所,在栈内存中分配空间
栈内存中分配方法运行所属的内存空间。
* 方法在调用的瞬间,会给该方法分配内存空间
在栈中会发生入栈(分配内存)动作,方法执行结束之后,给该方法分配的内存空间会全部释放,
此时发生出栈动作。(先有内存空间,然后再进行入栈,出栈是先释放内存空间)
* 局部变量运行阶段内存栈中分配存储,在方法体中声明