java数组常用方法(Java基础方法和数组)
java数组常用方法(Java基础方法和数组)程序中完成独立功能 可重复使用的一段代码的集合;方法定义 方法(Method) 函数(function) 其实就指一个特定的功能操作:注意: 循环操作不能解决针对于某一种功能的重复操作 此时得使用方法;开发遵循的原则之一:2.方法的定义和调用
一.方法设计
1.方法引入
循环操作(while do while for循环): 循环操作解决的是代码重复的问题 重复做某一件事情;
此时得重复: 有规律的 语句格式是相同的 有规律的;
注意: 循环操作不能解决针对于某一种功能的重复操作 此时得使用方法;
开发遵循的原则之一:
- DRY原则: Don’t Repeat Yourself(不要重复你自己的代码);
- 原因: 重复意味着维护成本的增大;
2.方法的定义和调用
方法定义 方法(Method) 函数(function) 其实就指一个特定的功能操作:
程序中完成独立功能 可重复使用的一段代码的集合;
[修饰符] 返回值的类型 方法名称([形参 .......]){
方法体
[return 值]
}
- 1
- 2
- 3
- 4
注意:
- 1.方法必须要调用才能生效
- 2.如果方法使用了static修饰 此时我们使用方法所在的 类的名称.方法名(参数);
- 3.如果方法没有使用static修饰 此时我们得使用方法所在的类的对象来调用;
// main方法专门由JVM来负责调用 我们只管启动JVM
public static void main(String[] args){
// TODO
}
- 1
- 2
- 3
- 4
方法定义的位置:
- 1.在类中定义 在Java中最小的程序单元是类;
- 2.方法定义在其他方法以外 方法和方法是兄弟关系;
- 3.方法定义的先后顺序不影响;
示例:
JVM内存划分 人为的根据不同的内存空间的存储特点以及存储的数据:
- 程序计数器: 当前线程所执行的字节码的行号指示器;
- 本地方法栈: 为虚拟机使用的native方法服务;
- Java虚拟机栈: 描述Java方法执行的内存模型 每个方法被执行的时候都会同时创建一个栈帧用于存储局部变量表 操作栈 动态链接 方法出口等信息;
- Java堆: 被所有线程共享的一块内存区域 在虚拟机启动时创建;所有的对象实例以及数组都要在堆上分配(使用new关键字 就表示在堆中开辟一块新的存储空间);
- 方法区: 线程共享的内存区域 存储已被虚拟机加载的类信息 常量 静态变量即时编译器编译后的代码数据等(这个区域的内存回收目标主要是针对常量池的回收和对类型的卸载);
Java虚拟机栈
每一个方法 创建一个栈帧 栈帧存放了当前方法的数据信息(局部变量) 当方法调用完毕 该方法的栈帧就被销毁了;
堆:
new在堆中开辟新空间
栈:
每一个方法存在栈帧
2.简述GC
GC:垃圾回收器
Java的自动垃圾回收机制 当JVM发觉内存资源紧张的时候 就是自动地去清理无用对象(没有被引用到的对象)所占用的内存空间;
注意:
Java的垃圾回收器 自动回收的是堆空间的内存 而栈空间内存会随着该方法的执行结束 自动释放该方法的栈帧内存;
三.一维数组
1.引出数组和数组定义
数组是在程序设计中 为了方便处理 把具有相同类型的若干变量按有序的形式组织起来的一种数据形式;这些按一定顺序排列的同类型数据的集合称为数组;而数组中的每一个数据称为数据元素;数组中的元素以索引来表示其存放的位置 索引从0开始 步长是1;
基本数据类型: byte short int long char float double boolean
引用数据类型: 类 接口 数组
变量的定义:
数据类型 变量名; 如: int age
- 1
数组的定义:
方式1: 数组元素的类型[] 数组名; int[] ages; 推荐的;可以把int看成是一种数据类型 int类型的数组类型;
方式2: 数组元素的类型 数组名[]; int ages[];
注意:
数组必须先初始化 才能使用 因为初始化表示在内存中分配空间;
2.数组初始化
Java中数组必先初始化后才能使用 所谓初始化就是给数组元素分配内存 并为每个元素赋初始值;
初始化数组的两种方式:
- 静态初始化
- 动态初始化
无论 以哪种方式初始化数组 一旦初始化完成 数组的长度就固定了 不能改变;除非重新初始化;也就是说数组是定长的;
数组是定长的: 数组一旦初始化成功 数组中的元素个数就已经固定了 不能更改 如果需要更改 只能重新做初始化;
1).静态初始化和内存分析
特点: 有我们自己来为每一个数组元素设置初始化值 而数组的长度有系统决定;
语法:
数组元素类型[] 数组名 = new 数组元素类型[]{元素1 元素2 元素3 ......};
- 1
示例:
int[] nums = new int[]{1 3 4 5};
- 1
2).动态初始化和内存分析
特点: 有我们来设置数组的元素个数(数组的长度) 而每个数组元素的初始值由系统决定;
语法:
数组元素类型[] 数组名 = new 数组元素类型[length]
- 1
示例:
int[] ages = new int[100];
- 1
1>.不同数据类型的初始值
类型初始值byte short int0long0Lfloat0.0Fdouble0.0Dbooleanfalsechar‘\u0000’(表示空)引用数据类型null
3.数组基本操作
1).获取/设置/遍历元素
数组的基本操作:
获取元素: 元素类型 变量= 数组名[index];
设置元素: 数组名[index] = 值;
遍历数组元素: 建议使用for循环 事先知道循环的次数;
数组的长度: int len = 数组名.length; length是属性 不是方法;
索引范围: 从0开始 逐一递增: [0 数组名.length - 1];
示例:
for(int index = 0;index < num.length;index ){
System.out.println(num[index]);
}
- 1
- 2
- 3
2).操作数组常见异常
NullPointerException: 空指针异常(空引用);
当数组还未初始化 就是接操作数据;
ArrayIndexOutOfBoundsException: 数组的索引越界异常;
超出数组索引范围之外取值;
3).获取数组最大最小元素
class ArrayOptrateDemo{
// 获取数组最大元素
static int getMax(int[] nums){
// 假设第一个元素是最大值
int max = nums[0];
for(int index = 1;index < nums.length;index ){
if(nums[index] > max){
max = nums[index];
}
}
return max;
}
// 获取数组最小元素
static int getMin(int[] nums){
// 假设第一个元素是最小值
int min = nums[0];
for(int index = 1;index < nums.length;index ){
if(nums[index] < min){
min = nums[index];
}
}
return min;
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
4).打印数组元素
// 打印数组元素
static void printArray(String[] arr){
if(arr == null){
System.out.println(null);
}
String ret = "[";
for(int index = 0;index < arr.length;index ){
ret = ret arr[index];
// 如果当前index不是最后一个索引 则拼接" "
if(index != arr.length -1){
ret = ret " ";
}
}
ret = ret "]";
System.out.println(ret);
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
5).逆序排列数组元素
// 逆序排列数组元素
static String[] reverse(String[] oldArr){
// 创建一个新的数组 存储颠倒之后的元素
String[] newArray = new String[oldArr.length];
for(int index = oldArr.length -1;index >= 0;index --){
newArray[oldArr.length -1 - index] = oldArr[index];
}
return newArray;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
6).元素出现索引(第一次/最后一次)
// 元素出现索引第一次
static int indexOf(int[] arr int key){
for(int index = 0;index < arr.length;index ){
if(arr[index] == key){
return index;
}
}
return -1;
}
// 元素出现索引最后一次
static int lastindexOf(int[] arr int key){
for(int index = arr.length -1;index >= 0;index --){
if(arr[index] == key){
return index;
}
}
return -1;
}