<<风雨安卓路之JAVASE----(4)方法和数组>>

方法设计
解决代码的重复的解决方案:
方案一:使用循环,但是循环只能解决代码结构重复.
如果代码结构不同,循环解决不了.
方案二:使用方法,来解决代码中功能重复的问题.


方法定义:

(Method,有人又瞎称为函数(function),表示某一个功能/行为):
程序中完成独立功能,可重复使用的一段代码的集合;


方法.png

方法定义(Method,有人又瞎称为函数(function),表示某一个功能/行为):

程序中完成独立功能,可重复使用的一段代码的集合;


分析main方法:

方法定义格式:


[修饰符] 返回值类型 方法名称([形式参数1,形式参数2])
{
方法体
[return 值;]
}

注意:必须定义在类里面,方法和方法之间是兄弟关系/平行关系,不能再方法内部再定义方法.

方法中的术语:
1):修饰符,顾名思义,对方法起修饰作用,public表示访问权限,static表示属于类(后详讲).
2):返回值类型,表示该方法完成一个功能之后,最终返回一个数据的数据类型.
1>:没有返回值: 此时使用关键字:void来表示.
2>:有 返回 值: 此时返回值类型就应该是基本数据类型/引用数据类型,比如int类型.
如果方法有返回值类型,此时在方法体里面,必须使用return关键字,用于返回一个该类型的值;
3):方法名称,方法表示功能,必须使用动词或动名词,而且首字母小写.
4):形式参数,方法圆括号里面的变量,形式参数可以有多个.
5):参数列表,参数的类型,参数的个数,参数的顺序.
6):方法签名,方法签名 = 方法名称 + 参数列表,不同的方法的方法签名是不同的.
7):实际参数,调用方法的时候,实际传递的数据,把实际传递的数据传给方法的形参.


方法的设计:
1>:方法的返回值类型如何确定:
方法的返回值类型,用于给当前方法的调用者返回一个结果.
如果某一个方法,仅仅只是完成一个功能,完成功能之后,不需要返回结果,此时返回类型是void.
如果方法需要给调用者返回一个结果,如果需要返回trye/false,此时返回类型就使用boolean.
2>:方法的参数列表如何确定:
在完成该方法功能的过程中,有哪些未知的元素参与,就把未知的元素作为参数.
比如:求两个整数之和.(此时两个整数是未知的)

方法的调用:
方法必须调用之后,才能执行(娶媳妇生孩子的例子).
方法可以重复被调用
注意:
1):现在,main方法只能调用使用static修饰的方法.
2):使用被调用方法所在的类名.方法名(实际参数);
3):对应使用void修饰的方法,调用不需要接收方法.
没有使用void修饰的方法,我们应该接收返回值.
方法返回类型 变量 = 方法所在的类名.static方法名(实际参数);
方法重载设计:模拟情景:
需求1:求两个int类型的数之和.
public static int getSum1(int a,int b){}
需求2:求两个float类型的数之和.
public static int getSum2(float a,float b){}
需求3:求两个long类型的数之和.
需求4:求两个double类型的数之和.
需求5:求一个int类型的数和一个double类型的数之和.
public static int getSum5(int a,double b){}


上述方法的设计都没有问题,但是美中不足,不同类型的加数对应的方法名称不同,我们软件攻城狮就得去记住哪些类型相加对应哪一个方法名称.
分析上述问题:上述问题的功能,都是求和,但是因为参数列表不同而造成了方法的名称不同,就给我们带来很大不利.------->解决方案:既然功能相同了,要是方法名称相同,就好记忆多了.

方法的重载设计.png

JVM内存模型
JVM内存划分:

根据内存的不同的存储特点,人为的划分为5个逻辑区域.

程序计数器:当前线程所执行的字节码的行号指示器。

本地方法栈:为虚拟机使用的native方法服务。

Java虚拟机栈(Stack):描述Java方法执行的内存模型,每个方法被执行的时候都会同时创建一个栈帧用于存储局部变量表、操作栈、动态链接、方法出口等信息。

Java堆(heap):被所有线程共享的一块内存区域,在虚拟机启动时创建。所有的对象实例以及数组都要在堆上分配空间,凡是 使用 new 关键字创建出来的对象,都存放于堆中。

方法区:线程共享的内存区域,存储已被虚拟机加载的类信息、常量、静态变量即时编译器编译后的代码数据等(这个区域的内存回收目标主要是针对常量池的回收和对类型的卸载)。

JVM的内存模型图.png

一维数组

面向对象思想
类和对象
构造器
static修饰符
深入变量
封装思想
继承思想
多态思想
代码块
final修饰符
基本类型包装类
抽象类
模板方法设计模式
接口
内部类
枚举
组合关系
Eclipse
常用类
异常处理
打包/归档/文档
线程和并发
数据结构
集合框架
I/O 操作
网络编程
Java5新特性
Java7新特性
Java8新特性
NIO操作
类加载器
反射机制
注解(Annotation)
内省机制

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,754评论 18 399
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 3,874评论 1 10
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,869评论 18 139
  • 护士这个职业,会遇见很多人。和他们短暂地相遇,然后再永远地分开。相识的时间虽然不长,但有些人却能在我的心中留下痕迹...
    趣读书吧阅读 181评论 0 0
  • 咏梅 文""李小雪 何处看风流, 满苑芳梅眼底收。 怒放优姿存雅韵, 香幽。 玉体冰肌艳色羞。 三九苦寒稠...
    雪中有雨阅读 273评论 0 0