Java基础:Day_04 方法和数组

一、关于方法(Method)

1.方法的定义
方法类似于C中的函数,可以完成独立功能,可重复使用的一段代码的集合;
方法定义格式:

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

如果方法使用了static修饰:
此时我们使用方法所在类的名称.方法名(参数)。
如果方法没有使用static修饰:
此时我们得使用方法所在类的对象来调用(暂且不讨论,面向对象).。

2.方法的重载

参数列表:参数列表 = 参数的类型 + 参数的个数 + 参数的顺序.(也就是方法圆括相关)
方法签名:方法签名 = 方法名称 + 方法参数列表;
在同一个类中,方法签名是唯一的,否则编译报错。

方法的重载设计(overload):
重载方法的定义是在同一个类中,某方法允许存在一个以上的同名方法,只要它们的参数列表不同即可(也就是说,方法名称相同)。
方法重载的作用:屏蔽了同一功能的方法由于参数不同所造成方法名称不同。
方法重载判断原则: “两同一不同”
两同:同类中,方法名相同;
一不同:方法参数列表不同(参数类型、参数个数、参数顺序);

只要参数类型,参数个数,参数顺序有一个不同,参数列表就不同.
注意:方法重载和方法的返回值类型无关,只是一般要求返回值类型一致。
参数列表和参数的名称没关系,方法的重载和形参没关系。

//以下的方法都在同一个类值,下列方法哪些是doWork方法的重载方法.
void doWork(int a,char b,boolean c){}

a. void doWork(char b, int a, boolean c){}             //YES 参数列表顺序不同
b. int doWork(boolean a,char c ,int b){}			   //YES 参数列表顺序不同,返回值也不同
c. void doWork(int a,char b,double c){}				   //YES 参数列表参数类型不同
d. void doWork(int x,char y,boolean z){}	           //编译报错 参数列表相同,只是形参名为xyz
e. int doWork(int x,double y){}	            	       //YES 参数列表的参数个数不同,类型也不同
f. int doWork(int x, char y,boolean z){}  	           //编译报错 参数列表相同,只是形参名为xyz

3.JVM的内存模型
在这里插入图片描述
JVM内存划分,人为的根据不同内存空间的存储特点以及存储的数据:
程序计数器:当前线程所执行的字节码的行号指示器。
本地方法栈:为虚拟机使用的native方法服务。
Java虚拟机栈:描述Java方法执行的内存模型,每个方法被执行的时候都会同时创建一个栈帧用于存储局部变量表、操作栈、动态链接、方法出口等信息。
每一个方法,创建一个栈帧,栈帧存放了当前方法的数据信息(局部变量),当方法调用完毕,该方法的栈帧就被销毁了。
Java堆:被所有线程共享的一块内存区域,在虚拟机启动时创建。所有的对象实例以及数组都要在堆上分配(使用new关键字,就表示在堆中开辟一块新的存储空间)。
方法区:线程共享的内存区域,存储已被虚拟机加载的类信息、常量、静态变量即时编译器编译后的代码数据等(这个区域的内存回收目标主要是针对常量池的回收和对类型的卸载)。
GC(Garbage Collection):垃圾回收器。
Java的自动垃圾回收机制:简单理解为程序员就不需要再手动的去控制内存的释放。当JVM发觉内存资源紧张的时候,就会自动地去清理无用对象(没有被引用到的对象)所占用的内存空间。

二、关于数组
1.数组的定义:
方式1: int[] ages;(推荐)
方式2: int ages[];
数组必须先初始化,才能使用,因为初始化表示在内存中分配空间.
初始化数组的两种方式:
静态初始化和动态初始化;
无论以哪种方式初始化数组,一旦初始化完成,数组的长度就固定了,不能改变,除非重新初始化。也就是说数组是定长的,如果需要更改,只能重新做初始化。
数组的静态初始化操作:
特点:有我们自己来为每一个数组元素设置初始化值,而数组的长度由系统(JVM)决定.
语法:数组元素类型[] 数组名 = new 数组元素类型[]{元素1,元素2,元素3,…};

   int[] nums = new  int[]{1,3,5,7,9};
   //简单写法↓↓↓必须声明之后,立刻初始化。(声明和赋值在同一句中)
   int[] nums = {1,3,5,7,9};

数组的动态初始化操作:
由我们来设置数组的元素个数(数组长度),而每一个数组元素的初始值有系统决定.
语法:数组元素类型[] 数组名 = new 数组元素类型[ length ];
比如:

  int[] ages = new  int[100];
  int[] nums = new  int[5]{1,3,5,7,9};//写法是错误的,不能同时使用静态初始化和动态初始化.

当我们事先知道,需要存储哪一些数据的时候,选用静态初始化.
当我们事先不知道,需要存储哪些数据的时候,只能使用动态初始化.

猜你喜欢

转载自blog.csdn.net/PandaNotPan/article/details/89206226