Java基础编程之数组的算法及使用
知识点1:数组及一维数组
1.数组的理解
一、数组的理解
* 1. 数组(Array),是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,
* 并通过编号的方式对这些数据进行统一管理。
* 2. 数组相关的名称:
* > 数组的元素
* > 数组名
* > 数组的角标、下标、下角标
* > 数组的长度
* 3. 数组一旦初始化(不管是静态初始化,还是动态初始化),其长度就是确定的。
* 数组一旦初始化(不管是静态初始化,还是动态初始化),其长度就是不可变的。
2. 一维数组的使用
public static void main(String[] args) {
// 3.1 数组的声明和初始化
//格式:数据类型 变量名 = 变量值
int num = 10;
String str = "hello";
//声明
String[] foods;
//初始化
foods = new String[]{
"拌海蜇","龙须菜","炝冬笋"};
//声明并初始化
//静态初始化:数组变量的赋值操作与数组元素的赋值操作同时进行。
String[] names = new String[]{
"李金鑫","刘志引","徐得三","武晋守"};
//可以简写为:String[] names = {"李金鑫","刘志引","徐得三","武晋守"};//类型推断
//动态初始化:数组变量的赋值操作与数组元素的赋值操作分开进行。
double[] prices = new double[5];
//错误的
// int[] arr = new int[5]{1,2,3,4,5};
// int[5] arr = new int[5];
// 3.2 如何调用数组的元素:通过角标的方式进行调用
//角标从 0 开始,到数组的长度 - 1结束。
prices[0] = 12.3;
prices[1] = 23.4;
// prices[5] = 34.5;//报ArrayIndexOutOfBoundsException异常。
System.out.println(prices[0]);
System.out.println(names[0]);
// 3.3 如何获取数组的长度
//属性:length
System.out.println(prices.length);//5
System.out.println(names.length);//4
// 3.4 如何遍历数组元素
for(int i = 0;i < names.length;i++){
System.out.println(names[i]);
}
/* 3. 一维数组的使用
* // 3.5 数组元素的默认初始化值 (以动态初始化为例)
* 整型数组,元素的默认初始化值为:0
* 浮点型数组,元素的默认初始化值为:0.0
* 字符型数组,元素的默认初始化值为:0
* boolean型数组,元素的默认初始化值为:false
*
* 引用数组类型数组,元素的默认初始化值为:null
*/
public class ArrayTest1 {
public static void main(String[] args) {
// 3.5 数组元素的默认初始化值
double[] prices = new double[5];
prices[0] = 12.3;
prices[1] = 24.4;
System.out.println(prices[2]);//0.0
int[] arr = new int[]{
1,2,3,4};
System.out.println(arr[0]);//1
float[] arr1 = new float[10];
System.out.println(arr1[4]);
System.out.println("###################");
long[] arr2 = new long[10];
System.out.println(arr2[0]);
char[] arr3 = new char[10];
System.out.println("----" + arr3[0] + "*****");
if(arr3[0] == 0){
System.out.println("你好!");
}
if(arr3[0] == ' '){
System.out.println("萨瓦迪卡!");
}
if(arr3[0] == '0'){
System.out.println("hi!");
}
System.out.println("####################");
boolean[] arr4 = new boolean[10];
System.out.println(arr4[0]);
String[] arr5 = new String[10];
System.out.println(arr5[1]);//null
}
}
-
内存解析
- jvm的内存结构主要部分
- 一维数组的内存解析举例
知识点2:二维数组的使用
* 数组,属于引用数据类型。
* 数组的元素,可以是基本数据类型,或引用数据类型。
* > 数组A的元素,还可以是数组B。则构成了二维数组
对于二维数组的理解,我们可以看成是一维数组array1又作为另一个一维数组array2的元素而存在。其实,从数组底层的运行机制来看,其实没有多维数组。
public class ArrayTest {
public static void main(String[] args) {
// 1. 二维数组的声明和初始化
//静态初始化
int[][] arr = new int[][]{
{
1,2,3},{
4,5},{
6,7,8},{
9,8,6,4}};
String[][] arr1 = new String[][]{
{
"陈伟霆","刘诗诗"},{
"周笔畅","鹿晗","张艺兴"}};
// int[][][] arr2 = new int[][][]{
{
{1,2,3},{3,4},{4,5}},{
{3,4},{4,5,6,6}}};
//动态初始化1