
补充一个小知识:从控制台输入一个数进来
import java.util.Scanner //导入jar包
Scanner scanner =new Scanner(System.in)
System.out.println(“请输入数字:”);
//获取输入的数字
int input=scanner.nextlnt();
一:一维数组
1.定义:数组是引用数据类型,用来保存多个数据。其中引用数据类型还包括类和接口
2.数据结构:数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种 特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关
数据 *** 作 : 增删改查
3.数组特性
内存中连续存储,并且下标从0开始(内存地址偏移)
-
数组长度一旦确定 长度不能更改,也就意味着数组是不能添加和删除的
-
除非新建一个数组,把原数据复制到新数组中,在复制的过程当中可以进行添加和删除 *** 作
-
所以 数组的查询和更改 效率是很高的,但是 添加和删除效率较低
-
数组都有一个内置属性 length 保存了数组的长度
-
在java中 有一个java.util.Arrays 类 提供了一些数组 *** 作
4.数组声明
-
① 静态声明 : 在已知每个元素的时候,使用静态声明
-
数据类型 变量名 = 值;
-
int i = 2;
-
数据类型[] 变量名 = {值,值,值.....}; 简写方式 -
数据类型[] 变量名 = new 数据类型[]{值,值,值......}; 比如对数组进行二次赋值,就需要这样写 -
int[] arr = {1,2,3,6,1,2,3}; -
int[][] arr = { -
{1,2,3},{2,1,3},{4,6} -
};
-
② 动态声明 : 不知道数组中每个元素的时候,使用动态声明
-
数据类型[] 变量名 = new 数据类型[长度];
-
int[] arr = new int[5];
-
int[][] arr = new int[2][3];
-
动态声明,保存的是对应类型的默认值,比如上面程序中 会保存5个0
-
整数 0 , 小数 0.0 , 布尔 false , 字符 u0000 , 引用类型 null int[] arr={1,2,3}; //静态声明 如果对数组二次赋值,必须这样写,不能直接写------ arr=new int[] {2,4,3} int [] arr2=new int[10] 也可以把“[]”写到变量名后面 int arr2[] =new int[10]
5.获取数据
int[] arr ={10,11,12,13} //静态初始化一个数组
System.out.println(arr[0]); //注意从下标0开始 表示第一个数
System.out.println(arr[1]);
System.out.println(arr[2]);
6.更改数据
数组[小标]=值;
arr[1]=1;
System.out.println(arr[1]);
7.遍历
for(int i=0;i
System.out.println(arr[i]);
}
// 增强for循环foreach
// 把数组中的每一个元素,都赋值给变量
//for(数据类型 变量名:数组){}
for(int element:arr){
System.out.println(element);
}
8.常见异常
下标越界
空指针
9.数组传递
例:m2(new int[]{1,2,3});
10.Main方法传参
10.传值指的是传递基本类型的数据 基本类型数据传递之后,相互之间没有影响,因为指向不同的空间
传址/传引用 指的是传递引用数据类型的值 引用类型传递之后,相互有影响,因为指向同一个堆内 存对象空间
11.数组复制
public static int[] copy(int[] src, int srcPos, int[] dest, int destPos,
int length) {
}
src:源数组 srcPos:源数组起始位置 dest:目标数组 destPos:目标数组起始位置 length:插入个数
注:因为是插入复制,所以肯定会更改数组长度,因为数组长度不能更改,所以我们只能新建数组,并通过返回值把数组返回
二:二维数组
1.声明方式
2.存储方式
3.获取数据
int[] arr0 = arr4[0]; //把数组arr4中第一个值给arr0这个数组
int arr00 = arr0[0]; //把数组arr0的第一个值给arr00这个数组
System.out.println(arr00);// 输出arr00这个数组
System.out.println(arr4[0][0]);
System.out.println(arr4[3][1]);
4.更改数据
更改 数组[下标][下标]=值
arr4[3][1]=33;
5.遍历
6.动态声明锯齿状
7.交换变量的值
int x = 10;
int y = 11;
// 1 中间变量(开发常用)
int temp = x;
x = y;
y = temp;
System.out.println(“x=” + x + “,y=” + y);
// 2 位移运算(面试用)
x = 2; // 0000 0010
y = 3; // 0000 0011
// 转换为对应的二进制,每位异或,相同取0,不同取1
x = x ^ y; // 0000 0001
y = x ^ y; // 0000 0010
x = x ^ y; // 0000 0011
System.out.println("x=" + x + ",y=" + y);
// 3 加减运算
x = 10;
y = 20;
x = x + y;
y = x - y;
x = x - y;
System.out.println("x=" + x + ",y=" + y);
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)