方法部分
( 没学面向对象,所以这里讲的默认是静态方法 )
1、什么是方法
方法(method)是可以完成某个功能的,可以被重复利用的代码片段
一般一个方法就是一个“功能单元”,程序员在开发中,如果某个功能可以独立抽取出来,那就可以定义为方法,这样以后需要这个功能直接调用这个方法即可
2、方法的语法机制(方法怎么定义)
[修饰符列表] 返回值类型 方法名([形参列表]){
方法体;
}
注意:
[ ] 符号里边的内容表示不是必须的,是可选的
方法体由java语句构成
2.1、关于修饰符列表:
即访问权限修饰符
2.2、关于返回值类型:
第一:返回值类型可以是任何类型,只要是java中合法的数据类型就行(基本数据类型、引用数据类型)
第二:什么是返回值:
返回值指的一般是一个方法执行结束后的结果,通常是一个数据,所以被称为“值”,全称“返回值”
第三:返回值类型必须书写,就算没有返回值也得先上void(表示不返回结果)
第四:若返回值不为void,那在方法执行结束时必须使用“return 类型值;”语句来完成这个类型的值的返回,若不写则编译报错
第五:只要遇到return关键字,当前方法必结束
第六:若返回值为void
那这个语句不能有“return 数据类型类型的值;”这条语句,但是可以有单个return; 表示方法结束
3、方法的调用
方法创建后必须调用才可以执行
4、方法调用的语法(被static修饰的方法)
类名.方法名(实参列表)
(实参的类型必须和这个方法编写时的形参类型一一对应)
5、方法中(方法体)也可以调用其他方法(被static修饰的方法)
————————————————————————————————————————————
普及数据结构知识
1、一种非常经典的数据结构。
栈数据结构:stack
2、什么是数据结构?
数据结构通常是:存储数据的容器。
而该容器可能存在不同的结构。
数据结构和java语言实际上是没有关系的,数据结构是一门独立的学科。在大学计算机专业中,数据结构是必修的一门课程。
3、常见的数据结构有哪些?
数组、链表、图、二叉树、栈、队列
java语言把常用的数据结构都已经写好了,对于java程序员来说是幸福的,我们直接用就行,所以当前阶段是不需要精通数据结构的,如果期望有更高的造诣,建议数据结构还是需要精通一下。(可以工作之后)
4、和数据结构通常出现在一块的是:算法
算法:排序算法、查找算法......
————————————————————————————————————————————
内存结构分析
JVM内存结构
栈内存结构
————————————————————————————————————————————
一些知识点的汇总:
局部变量:只在方法体中有效,方法结束之后,局部变量的内存就释放了。
JVM三块主要的内存:栈内存、堆内存、方法区内存
方法区最先有数据:方法区中放代码片段、存放class字节码
堆内存:静态方法目前不讲
栈内存:方法调用的时候,该方法需要的内存空间在栈中分配
方法不调用是不会在栈中分配空间的
方法只有在调用的时候才会在栈中分配空间,并且调用时就是压栈
方法执行结束之后,该方法所需要的空间就会释放,此时发生弹栈动作
方法的调用叫做压栈——分配空间
方法的结束叫做弹栈——释放空间
栈帧:永远指向栈顶元素
栈的特点:先进后出
————————————————————————————————————————————
方法重载机制(overload)
方法重载的优点:
1、代码整齐美观,方便记忆
2、功能相似的方法可以让方法名相同,更易于以后代码的编写
方法能重载的前提(原理):
java编译器在方法重名的情况下,会通过方法的参数列表内容进行区分
什么时候考虑方法重载:
3、什么时候需要考虑使用方法重载?
在同一个类当中,如果“功能1”和“功能2”它们的功能是相似的,那么可以考虑将它们的方法名一致,这样代码既美观,又便于后期的代码编写(容易记忆,方便使用)
注意:方法重载overload不能随便使用,如果两个功能压根不相干,不相似,根本没关系,此时两个方法使用重载机制的话,会导致编码更麻烦。无法进行方法功能的区分
4、什么时候代码会发生方法重载?
条件1:在同一个类当中
条件2:方法名相同
条件3:参数列表不同:
参数个数不同算参数列表不同
参数类型不同算参数列表不同
参数顺序不同算参数列表不同
只要同时满足以上3个条件,那么我们可以认定方法和方法之间发生了重载机制
5、方法重载和方法的返回值类型以及修饰符无关
只更改方法的返回值或修饰符编译会报错,编译器判定为相同方法(属于方法重复,编译不了)
面向对象学完后的方法的总结
————————————————————————————
方法详解
方法分为:
静态方法
实例方法(非静态方法)
构造方法
方法都可以重载
方法执行都需要压栈(入栈)
静态方法(类方法):
1、与类一起加载
2、生命周期与类一致
3、被对象共享
4、通过“类名.方法名()”或“对象名.方法名()”都可以调用
5、因为静态方法分配空间时在方法区,编译时就执行完了,方法内不能涉及任何实例属性或实例方法的内容(涉及实例方法和实例变量的创建时期知识点),方法内只能与静态的内容有关
实例方法(非静态方法):
1、只能依靠对象存在,不创建对象根本无法调用
2、实例方法和实例变量的创建时期都是构造方法被new出来的时期(运行时期)
3、实例方法中的可以有局部变量,实例变量、实例方法,静态变量、静态方法
构造方法:
1、构造方法没有返回值
2、构造方法不能被子类继承
3、执行子类构造方法默认调用其父类无参构造方法
4、作用是完成对象的创建和实例变量的初始化
5、构造方法访问权限不能被static、final、native、abstract、synchronized修饰
6、当不手动创建时系统默认提供无参构造方法
7、手动创建构造方法时必须至少创建一个无参构造方法(因为系统不会再默认提供了)