方法
方法就是完成特定功能的代码块;在很多语言里面都有函数的定义,函数在Java中被称为方法
格式: 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2…) throws 异常{
函数体;
return 返回值;
}
详解
修饰符: 比如public、protected、默认、private、static、abstract
返回值类型: 基本数据类型、引用数据类型、void等
方法名: 符合命名规则的标识符,驼峰命名
参数: 实际参数与形式参数;实际参数:就是实际参与运算的;形式参数: 就是定义在方法上的,用于接收实际参数
参数类型: 基本数据类型、引用数据类型
参数名: 变量名
函数体: 也叫方法体,完成功能的代码
return: 结束当前方法
返回值: 返回给调用者的结果
//第一步 程序从main方法开始执行 public static void main(String[] args) { // 第二步 定义两个int类型的变量 int first = 10; int second = 20; // 第三步 调用方法 int subValue = sub(first, second); // 第七步 输出方法返回的结果 System.out.println(subValue); } // 第四步 把实参传递给形参 public static int sub(int one, int two) { // 第五步 计算结果 // 第六步 返回结果 return one - two; }
方法注意事项
方法不调用不执行
方法与方法是平级关系,不能嵌套定义
方法定义的时候参数之间用逗号隔开
方法调用的时候不用在传递数据类型
如果方法有明确的返回值,一定要有return返回值
方法重载
在一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者类型不同
特点: 与返回值无关,只看方法名和参数列表
在调用时,虚拟机通过参数列表的不同来区分同名方法
数组
数组是存储同一种数据类型多个元素的集合(容器);数组可以存储基本数据类型,也可以存储引用数据类型
格式
数据类型[] 数组名;或者 数据类型 数组名[];
数组的初始化
Java中的数组必须先初始化,然后才能使用
为数组中的数组元素分配内存空间,并为每个数组元素赋值
初始化方式
动态初始化 初始化时只指定数组长度,自动分配初始值
格式:数据类型[] 数组名 = new 数据类型[数组长度]
例如: String[] strs = new String[10];定义了一个String类型的数组,这个数组中可以存放10个String类型的值
静态初始化 初始化时指定数组元素的初始值,由系统决定数组长度
静态初始化
初始化时指定每个数组元素的初始值,自动分配长度
格式 数组类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3,…}
例如: String[] strs = new String[]{“a”, “b”, “c”, “d”}或者String[] strs ={“a”, “b”, “c”, “d”} 定义了一个string类型的数组,这个数组中可以存放4个String类型的值
数组常见的抛出异常
数组索引越界 ArrayIndexOutOfBoundsException 访问到数组不存的索引时
空指针异常 NullPointerException 数组引用没有指向实体,却在操作实体中的元素时
Java中的内存分配
栈 存储局部变量(定义在方法中或者方法声明上的变量)
堆 存储new出来的东西
方法区
本地方法区 和系统相关
寄存器 CPU使用
堆内存的特点:
1 每一个new出来的东西都有地址值
2 每个变量都有默认值 byte、short、int、long ---0;float、double---0.0;char---‘\u0000’;boolean---false; 引用类型---null
3 使用完后就变成了垃圾,没有立即回收,会在垃圾回收器空闲的时候回收
// 逆序 public static void main(String[] args) { int[] arr = {12, 13,14,15,16}; arrToString(arr); reverse(arr); arrToString(arr); } public static void arrToString(int[] arrs) { String print = "{"; for (int i = 0; i < arrs.length ; i++) { if (arrs.length - 1 == i) { print += arrs[i] + "}"; System.out.println(print); return; } print += arrs[i] + ","; } } public static void reverse(int[] arrS){ for (int i = 0; i < arrS.length / 2; i++) { int temp = arrS[i]; arrS[i] = arrS[arrS.length - 1 - i]; arrS[arrS.length - 1 - i] = temp; } }