Java基础

来源:互联网 发布:生化危机6 for mac 编辑:程序博客网 时间:2024/05/21 05:06

1.数组概念

* 数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。* 数组既可以存储基本数据类型,也可以存储引用数据类型。

数组定义格式
数据类型[] 数组名 = new 数据类型[数组的长度];

2.数组的初始化

(1)数组的初始化
* 就是为数组开辟连续的内存空间,并为每个数组元素赋予值
如何对数组进行初始化
* a:动态初始化 只指定长度,由系统给出初始化值
* int[] arr = new int[5];
* b:静态初始化 给出初始化值,由系统决定长度
(2)动态初始化
* 数据类型[] 数组名 = new 数据类型[数组长度];
(3)静态初始化
* 格式:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};
* 简化格式:
* 数据类型[] 数组名 = {元素1,元素2,…};

3.内存分配以及堆与栈的区别

  • A:栈(掌握)
    • 存储局部变量
  • B:堆(掌握)
    • 存储new出来的数组或对象
  • C:方法区
    • 面向对象部分讲解
  • D:本地方法区
    • 和系统相关
  • E:寄存器
    • 给CPU使用

4.数组操作的两个常见小问题:越界和空指针

        * a:ArrayIndexOutOfBoundsException:数组索引越界异常    * 原因:你访问了不存在的索引。 * b:NullPointerException:空指针异常    * 原因:数组已经不在指向堆内存了。而你还用数组名去访问元素。    * int[] arr = {1,2,3};    * arr = null;    * System.out.println(arr[0]);

5.数组的操作

(1)遍历:
public static void print(int[] arr) {
for (int i = 0;i < arr.length ;i++ ) {
System.out.print(arr[i] + ” “);
}
}
(2)获取最值:
public static int getMax(int[] arr) {
int max = arr[0];
for (int i = 1;i < arr.length ;i++ ) {
if (max < arr[i]) {
max = arr[i];
}
}
return max;
}

(3)数组元素反转:
public static void reverseArray(int[] arr) {
for (int i = 0;i < arr.length / 2 ; i++) {
int temp = arr[i];
arr[i] = arr[arr.length-1-i];
arr[arr.length-1-i] = temp;
}
}

(4)数组查表法(根据键盘录入索引,查找对应星期):
public static char getWeek(int week) {
char[] arr = {’ ‘,’一’,’二’,’三’,’四’,’五’,’六’,’日’}; //定义了一张星期表
return arr[week]; //通过索引获取表中的元素
}

(5)数组元素查找:
public static int getIndex(int[] arr,int value) {
for (int i = 0;i < arr.length ;i++ ) {
if (arr[i] == value) {
return i;
}
}
return -1;
}

6.二维数组

    格式1            int[][] arr = new int[3][2];     格式2            int[][] arr = new int[3][];    格式3            int[][] arr = {{1,2,3},{4,5},{6,7,8,9}};     以下格式也可以表示二维数组                * 1:数据类型 数组名[][] = new 数据类型[m][n];    * 2:数据类型[] 数组名[] = new 数据类型[m][n];

7.参数传递问题:

(1)基本数据类型的值传递,不改变原值,因为调用后就会弹栈,局部变量随之消失
(2)引用数据类型的值传递,改变原值,因为即使方法弹栈,但是堆内存数组对象还在,可以通过地址继续访问

原创粉丝点击