方法
什么是方法:将一个独立的代码块{}抽取出来并为当前这个起名字!(作用:提高代码的复用性)
方法的概念:
使用{}将代码包裹起来,并给这个代码起一个名字:方法名
---->以后直接使用方法名调用. {}代码块
方法的两种定义:
有返回值类型的方法的定义
没有返回值类型的方法定义
第一种:有返回值类型的方法的定义
固定格式:
public static 返回值类型 方法名(形式参数类型1 参数名称1,形式参数类型2 参数名称2...){
业务需求...
return 结果;
}
格式的详细介绍:
权限修饰符:public(公共的,访问权限足够大) static(静态)
返回值类型:数据类型(目前基本数据类型:四类八种: )
举例:求两个数据之后 结果:int类型
方法名:遵循标识符的规则(见名知意)
单个单词:全部小写
多个单独:第一个单词小写,从第二个单词开始,每个单词首字母大写,其余小写
小驼峰命名法!
形式参数类型:数据类型(目前基本数据类型:四类八种: )
参数名称:变量名称
return: 这个方法调用完毕了,带回具体的结果!
有返回值类型的方法调用:
1)单独调用(没有意义)
2)输出调用:不推荐
3)赋值调用:推荐
第二种:没有返回值类型的方法的定义
固定格式:
public static void 方法名(形式参数类型1 变量名1,形式参数类型2 变量名2...){
直接输出语句或者其他业务操作;
}
没有具体返回值类型的方法调用
单独调用
赋值调用
输出调用
注意:Java中不存在void类型(替代词)
定义有具体返回值类型的方法的定义的注意事项!
1)方法和方法平级关系,不能嵌套使用!
特殊:方法递归(IO流后面讲):方法调用方法本身的一种现象!
2)定义方法注意两个明确
明确返回值类型
明确参数类型以及参数个数
3)定义方法的时候:
参数类型必须携带的!
public static int add(x,y){} 错误的:
因为Java是一种强类型语言:语法非常严谨的,以及格式是有要求的!
4)定义方法的时候,()后面不要出现; (目前来说没意义的方法!)
5)调用方法的时候,实际参数不需要携带数据类型
数组
数组:是可以存储元素的一种容器!(前提:元素的数据类型必须一致的!)(属于引用数据类型)
定义数组:
格式:
数据类型[] 数组名称 ;
数据类型 数组名称[] ;
数组的初始化:
1)动态初始化:指定了数组长度,系统默认给定数组的元素值!
2)静态初始化:指定了具体的元素的内容,系统默认指定数组的长度!
1)动态初始化:
数据类型[] 数组名称 = new 数据类型[数组长度] ;
数据类型 数组名称[] = new 数据类型[数组长度] ;
2)静态初始化:
格式:
标准格式:
数据类型[] 数组名称 = new 数据类型[]{元素1,元素2,元素3....} ;
数据类型 数组名称[] = new 数据类型[]{元素1,元素2,元素3....} ;
简化格式:
数据类型[] 数组名称 ={元素1,元素2,元素3....} ;
数据类型 数组名称[] ={元素1,元素2,元素3....} ;
注:定义数组的时候:不能动,静集合(只能其中一种初始化方式!)
数组中元素的的访问方式:
数组名称[角标]来访问
角标(下标/索引):都是从0开始记录元素的!
数组中获取元素值:
数组名称[角标值/索引值] ----->数组结构: 查询快!
二维数组(作为了解):
它就是一个包含多个一维数组的数组!
二维数数组的定义格式1:
数据类型[] 数组名称[] ;
数据类型[][] 数组名称 ; (推荐)
二维数组的初始化:
动态初始化: 指定数组长度,系统给数组中元素分配默认值
动态初始化格式1
数据类型[][] 数组名称 = new 数据类型[m][n] ;
m:表示当前二维数组中的一维数组的个数
n:表示每一个一维数组的长度
二维数组格式2:
数据类型[][] 数组名称 = new 数据类型[m][] ;
数据类型[] 数组名称[] = new 数据类型[m][] ;
注:上面:当前二维arr中有2个一维数组,但是不知道2个一维数组的长度
所以,需要动态给定一维数组的长度
二维数组格式3:
标准格式:
数据类型[][] 数组名称
=
new 数据类型[][]{{元素1,元素2,...},{元素1,元素2...},{元素1,元素2...}};
简化格式:
数据类型[][] 数组名称 = {{元素1,元素2,...},{元素1,元素2...},{元素1,元素2...}}
方法重载
方法重载overload:方法名相同,参数列表不同,与返回值无关!
参数列表不同:
参数类型(考虑顺序)
参数个数
数据类型作为形式参数传递
基本类型作为形式参数进行传递的特点:形式参数的改变对实际参数没有影响
引用类型作为形式参数进行传递的特点:形式参数的改变会直接影响实际参数
基本类型作为参数传递--->传递的是一个值(具体的数据值)
引用类型作为参数传递--->传递的是一个值(空间地址值)
String类型是一种特殊的引用类型:它作为形式参数,形参的改变对实际参数没有影响-----跟基本类型作为形式参数是一样!
java中的内存分配
栈内存:存储一般都是局部变量(在方定义中/方法声明上)
堆内存:new出来的东西都在堆内存中
方法区:相关存储class区,相关static区域,字符串常量池...
寄存器,本地方法区:和系统相关