-
数组
数组技能点列表:
(1)
(2)
-
一维数组
(1)数组:存储同一种数据类型的多个元素的容器。
(2)特点:每一个元素都有索引,从 0 开始,最大编号是length(数组长度) -1。
(3)定义格式
A:数据类型 [] 数组名 ;
B:数据类型 数组名 [];(推荐使用)
(4)数组的初始化
A:动态初始化
只给长度,系统给出默认值
举例: int[] arr = new int[3];
B:静态初始化
给出值,系统决定长度
举例: int[] arr = new int[]{1,2,3};
简化版: int[] arr = {1,2,3};
(5)Java的内存分配
A:栈 存储局部变量
B:堆 存储所有 new 出来的
C:方法区 (类的加载信息,静态域,常量池等 )
D:本地方法区 (系统相关 )
E:寄存器 (CPU 使用 )
注意:
a:局部变量 在方法定义中或者方法声明上定义的变量。
b:栈内存和堆内存的区别
栈:数据使用完毕,就消失。
堆:每一个 new 出来的东西都有地址
每一个变量都有默认值
(6)数组的常见操作
A:遍历
方式 1:
public static void printArray(int[] arr) {
for(int x=0; x<arr.length; x++) {
System.out.println(arr[x]);
}
}
方式 2:
public static void printArray(int[] arr) {
System.out.print("[");
for(int x=0; x<arr.length; x++) {
if(x == arr.length-1) {
System.out.println(arr[x]+"]");
}else {
System.out.println(arr[x]+", ");
}
}
}
B:最值
a:最大值:
public static int getMax(int[] arr) {
int max = arr[0];
for(int x=1; x<arr.length; x++) {
if(arr[x] > max) {
max = arr[x];
}
}
return max;
}
b:最小值:
public static int getMin(int[] arr) {
int min = arr[0];
for(int x=1; x<arr.length; x++) {
if(arr[x] < min) {
min = arr[x];
}
}
return min;
}
C:逆序
方式 1:
public static void reverse(int[] arr) {
for(int x=0; x<arr.length/2; x++) {
int temp = arr[x];
arr[x] = arr[arr.length-1-x];
arr[arr.length-1-x] = temp;
}
}
方式 2:
public static void reverse(int[] arr) {
for(int start=0,end=arr.length-1; start<=end; start++,end–) {
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
}
}
D:查表
public static String getString(String[] strArray,int index) {
return strArray[index];
}
E:基本查找
方式 1:
public static int getIndex(int[] arr,int value) {
for(int x=0; x<arr.length; x++) {
if(arr[x] == value) {
return x;
}
}
return -1;
}
方式 2:
public static int getIndex(int[] arr,int value) {
int index = -1;
for(int x=0; x<arr.length; x++) {
if(arr[x] == value) {
index = x;
break;
}
}
return index;
} -
二维数组
(1)元素是一维数组的数组。
(2)定义初始化格式:
A:数据类型 [][] 数组名 = new 数据类型 [m][n];
B:数据类型 [][] 数组名 = new 数据类型 [m][];
C:数据类型 [][] 数组名 = new 数据类型 [][]{{…},{…},{…}};
D:数据类型 [][] 数组名 = {{…},{…},{…}};
(3)数组的拷贝
使用java.lang.System类的静态方法
public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length);
可以用于数组src从第srcPos项元素开始的length个元素拷贝到目标数组从destPos项开始
的length个位置。 如果源数据数目超过目标数组边界会抛出 IndexOutOfBoundsException 异常。
(4)main方法
A:JAVA应用程序的主方法(程序的入口)
public static void main (String args[]) {…}
public static void main (String[] args) {…}
B:命令行参数
在启动Java应用程序时可以一次性地向应用程序中传递0~多个参数----命令行参数
命令行参数使用格式:
java ClassName lisa “bily” "Mr Brown“
由参数args接收
空格将参数分开
若参数包含空格, 用双引号引起来
命令行参数用法举例:
public class Test {
public static void main(String[] args) {
for ( int i = 0; i < args.length; i++ ) {
System.out.println(“args[” + i + "] = " + args[i]);
}
}
}
//运行程序
java Test lisa “bily” “Mr Brown”
//输出结果:
args[0] = lisa
args[1] = bily
args[2] = Mr Brown
(5)Java.uitl.Arrays
该类提供了关于数组操作的API.
打印数组----toString方法。
比较两个数组是否相同----equals方法。
数组排序----sort方法。
数组查找----binarySearch 方法
07-23
07-23
07-23