java方法

2 篇文章 0 订阅

方法的本质:
方法就是一段代码片段,并且这段代码片段
可以完成某个特定的功能,并且可以被重复的使用。
方法,对应的英语单词: Method
方法在c语言中叫做函数/Function
方法定义在类体当中,在一一个类当中可以定义多个方法,方法编写的位置没有先后顺序,可以随意。
方法体当中不能再定义方法! ! !! !!!!!!!!!!!!! !
方法体由java语句构成,方法体当中的代码遵守自上而下的顺序依次执行。

关于java语言当中的方法:
1、方法怎么定义,语法结构:
[修饰符列表]返回值类型方法名(形式参数列表) {
方法体;
}
(*    返回值类型不是void而是其他的:
    [修饰符列表]返回值类型方法名(形式参数列表) {
    方法体;
    return
    }
*)
2、对以上的语法结构进行解释说明:
2.1、关于修饰符列表
可选项,不是必须的
*目前统一写成: public static [以后讲]
*方法的修饰符列表当中有static关键字"的话, 怎么调用这个方法?
类名.方法名(实际参数列表) ;
2.2、返回值类型
*什么是返回值?
一个方法是可以完成某个特定功能的,这个功能结束之后大多数都是需要
返回最终执行结果的,执行结果可能是一一个具体存在的数据。而这个具体
存在的数据就是返回值。
*返回值类型?
返回值是一个具体存在的数据,数据都是有类型的,此处需要指定的是返回值
的具体类型。
*返回值类型都可以指定哪些类型呢?
java任意一种类型都可以,包括基本数据类型和所有的引用数据类型。
*也可能这个方法执行结束之后不返回任何数据,java中规定, 当一个方法执行结束
之后不返回任何数据的话,返回值类型位置必须编写: void关键字。
*返回值类型可以是:
byte , short, int, long, float, double ,boolean , char, string,void...
*返回值类型若不是void, 表示这个方法执行结束之后必须返回一个具体的数值。
当方法执行结束的时候没有返回任何数据的话编译器报错。

*只要带有return关键字的语句执行,return语句所在的方法结束。 【不是JVM结束,是return所在的方法结束】
2.3、方法名:
*只要是合法的标识符就行
*方法名最好见名知意
*方法名最好是动词
*方法名首字母要求小写,后面每个单词首字母大写
2.4、形式参数列表:简称形参
*形参是局部变量: int a;double b; float c; string s; .....
形参的个数可以是: 0-N个
多个形参之间用“逗号"隔开
*形参中起决定性作用的是形参的数据类型,形参的名字就是局部变量的名字.
例如:
方法定义
public static int sum(int x,int y) {
方法调用
sum("abc" , "def");编译器报错
sum(10,20) ;
2.5、方法体必须由大括号括起来,方法体当中的代码有顺序,遵循自.上而下的顺序依次执行。
并且方法体由java语句构成,每一个 java语句以";"结尾
3、方法怎么调用?
方法只定义不去调用时不会执行的。只有在调用的时候才会执行。
语法规则:< 方法的修饰符列表当中有static >
类名.方法名(实参列表); <这是一条java语句, 表示调用某个类的某个方法,传递这样的实参。>
public表示公开的
class表示定义类
MethodTest03是一个类名
类体
类体中不能直接编写java语句,除声明变量之外
方法出现在类体当中
方法
public表示公开的
static表示静态的
void表示方法执行结束之后不返回任何数据
main是方法名:主方法
(string[] args)形式参数列表,其string[I]是一 种引用数据类型,args是一个局部变量的变量名
所以以下只有args这个局部变量的变量名是随意的
主方法就需要这样固定编写,这是程序的入口。

在java语言当中有这样的一种机制:
某个功能代码只需要写一遍
要使用这个功能,只需要给这个功能传递具体的数据
这个功能完成之后返回一个最终的结果。代码就可以重复利用了,提高代码复用性。 [这就是方法"]
使用这个方法为"调用/ invoke"
方法调用:
1、方法的修饰符列表当中有static关键字,完整的调用方式是:类名.方法名(实参列表) ;
2、但是,有的时候类名."可以省略,什么情况下可以省略呢?
m1() {
}
m1方法和m2方法在同一个类体当中的时候,"类名. "可以省略不写。

方法在执行过程当中,在JVM中的内存是如何分配的呢,内存是如何变化的?
1、方法只定义,不调用,是不会执行的,并且在JVM中也不会给该方法分配"运行所属"的内存空间。
只有在调用这个方法的时候,才会动态的给这个方法分配所属的内存空间。
2、在JVM内存划分上有这样三块主要的内存空间(当然除了这三块之外还有其它的内存空间) :
方法区内存、堆内存、栈内存
3、关于栈数据结构:
*栈:,stack, 是一种数据结构
*数据结构反应的是数据的存储形态。
*数据结构是独立的学科,不属于任何编程语言的范畴,只不过在大多数编程语言当中要使用数据结构.
作为程序员需要提前精通:数据结构+算法[计算机专业必修- - 门课程] |
* java程序员在不精通数据结构和算法的前提下,也可能进行java开发,因为java有一套 庞大的类库支撑,
别人写好了,直接用。【JavaSE当中的集合章节使用了大量的数据结构】
*常见的数据结构:
-数组
-队列
-栈
-链表
-二叉树
-哈希表/散列表
......
4、方法代码片段存在哪里?方法执行的时候执行过程的内存在哪里分配?
*.方法代码片段属于.class字节码文件的一部分,字节码文件在类加载的时候,
将其放到了方法区当中。所以JVM中的三块主要的内存空间中方法区内存最先有
数据。存放了代码片段。
*代码片段虽然在方法区内存当中只有一份,但是可以被重复调用。
每一次调用这个方法的时候,需要给该方法分配独立的活动场所,在
栈内存中分配。
5、万法在调用 的瞬间,会给该方法分配内存空间, 会在栈中发生压栈动作,
方法执行结束之后,给该方法分配的内存空间全部释放,此时发生弹栈动作。
*压栈:给方法分配内存
*弹栈:释放该方法的内存空间
6、局部变量在“方法体"中声明。局部变量运行阶段内存在栈中分配。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值