044.数组-数组遍历-值传递与引用传递

  1. 为什么需要数组 定义26个char类型变量,分别放置26个字母,并把这些变量值打印出来。
  2. 数组的概念 数组是多个相同类型数据的组合,实现对这些数据的统一管理。 数组中的元素可以是任意数据类型,包括基本类型和引用类型,但是不能混用。 可以一次性定义很多变量,并把这些变量从0开始编号(下标/索引),方便存取。 举例:房间
  3. 数组的语法
    动态初始化
    元素类型[] 数组名 = new 元素类型[数组长度];
    int[] arr = new int[5];
    静态初始化
    元素类型[] 数组名 = new 元素类型[]{元素,元素,...};
    int[] arr = new int[]{1,2,3,4,5};
    int[] arr = {1,2,3,4,5}; 相当于 int[] arr = new int[5]; arr[0]=1; arr[1]=2; arr[2]=3; arr[3]=4; arr[4]=5;
  4. 数组创建后,没有赋值,那么就是默认值。
    long/int/short/byte 0
    float/double 0.0
    char \u0000
    boolean false
    String null
  5. 数组使用步骤
    声明数组
    开辟空间
    给数组各个元素赋值
    使用数组
  6. 数组成员(元素)的赋值和读取
  7. 数组下标从0开始,下标越界会抛异常。
    数组下标越界异常
    int[] arr = new int[3];
    System.out.println(arr[3]);
    注意:Java的数组索引不能取负数,和python不一样
    空指针异常
int[] ints={1,2,3,4};
ints = null;
System.out.println(ints[0]);
  1. 数组遍历 获取数组长度:使用数组的length属性 获取数组中最大的值
int[] arr1 = {1, 2, 3, 4, 8, 6};
int max = arr1[0];
for (int i = 1; i < arr1.length; i++) {
	if (max < arr1[i]) {
		max = arr1[i];
	}
}
System.out.println(max);

数组扩容 无法在原有数组的基础上直接扩容,只能新建一个数组,把原数组的值赋值进新数组

int[] arr1 = {1,2,3,4,5};
int[] arr2 = new int[arr1.length+1];
for (int i = 0; i < arr1.length; i++) {
	arr2[i] = arr1[i];
}
arr2[arr2.length-1]=8;
for (int j = 0; j < arr2.length; j++) {
	System.out.println(arr2[j]);
}
  1. 数组拷贝 数组也是一种数据类型,引用类型。
  2. 值传递与引用传递
    a、栈内存 存储局部变量,离开作用域,自动释放
    b、堆内存 数组和对象,通过new建立的实例都存放在堆内存中 当没有任何引用指向实例的时候,gc会不定时回收
    c、方法区、本地方法区
public class YinYong {
	public static void main(String[] args) {
	//值传递
		int a = 100;
		int b = a;
		b = 200;
		System.out.println("a:" + a);
		System.out.println("b:" + b);
		//引用传递
		int[] arr1 = new int[5];
		arr1[0] = 100;
		arr1[1] = 200;
		arr1[2] = 300;
		arr1[3] = 400;
		arr1[4] = 500;
		int[] arr2 = arr1;
		arr2[4] = 300;
		System.out.println("arr1[4]:" + arr1[4]);
	}
}

047.二维数组

  1. 二维数组的定义
    //动态初始化
    int[][] arr = new int[2][3];
    arr[0][1] = 78;
    //静态初始化
    int[][] arr = {{1,2,3},{4,5,6}};
  2. 二维数组的长度
    arr.length //二维数组长度3
    arr[0].length //二维数组中第一个一维数组长度
  3. 二维数组的遍历
public class ErWei {
	public static void main(String[] args) {
		int[][] arr = { {1,2,5}, {7,2}, {3,8,9} };
		for (int i = 0; i < arr.length; i++) {
			for (int j = 0; j < arr[i].length; j++) {
				System.out.println(arr[i][j]);
			}
		}
	}
}
  1. 二维数组的其他定义方式
    int[] x;
    int x[];
    int[][] y;
    int y[][];
    int[] y[];
    int[] x,y[]; //定义两个数组,x是一维的,y是二维的
    //中括号跟着变量类型走,一起定义的变量都有效
    //中括号跟着变量名走,只有当前变量名有效

048.数组练习

1.下面数组定义正确的有
String strs[] = {'a','b','c'};//错
String[] strs = {"a","b","c"};//对
String[] strs = new String{"a","b","c"};//错
String strs[] = new String[]{"a" "b" "c"};//错,掉了逗号
String[] strs = new String[3]{"a","b","c"};//错,不需要写3
2. 输出的结果是

String foo = "blue";
boolean[] bar = new boolean[2];
if(bar[0]){
	foo = "green";
}
System.out.println(foo);//blue,因为char型数组,默认初始化为false
  1. 输出的结果是
char[] arr1 = {'a','b','c','d'};
char[] arr2 = arr1;
arr2[2] = 'x';
System.out.println(arr1[2]);//x
  1. 随机生成十个整数,存入数组。倒序打印、求均值、求最大值和最大值下标。
  2. 声明int[] x,y[],以下选项允许通过的是:
x[0] = y; //int[][] -> int
y[0] = x; //对,int[] -> int[]
y[0][0] = x; //int[] -> int
x[0][0] = y;//错
y[0][0] = x[0];//对, int -> int x = y;//错

049.十进制转十六进制代码实现

原理:将该数不断除以16,直到商为0,每步得到的余数倒过来,就是对应的十六进制

050.Java中文文档

Java API中文文档:https://www.matools.com/api/java8 查看方式 image

posted on 2021-11-07 13:27  hack2xia  阅读(221)  评论(0)    收藏  举报