当前位置:   article > 正文

【Java】——数组知识点详解_for (int : )

for (int : )

数组的定义和使用

1.数组基本用法

1.1数组——一块连续的内存,存储的是相同数据类型的集合。

                       数组本质上就是——批量的创建相同类型的变量。

                       在Java中,数组中包含的变量必须是相同类型

1.2创建数组

基本语法:

//动态初始化

数据类型[] 数组名称 = new 数据类型 []  {初始化数据};

//静态初始化

数据类型[] 数组名称 = {初始化数据};

代码示例:

  1. //静态初始化
  2. int[] arr = {1,2,3};
  3. //动态初始化
  4. int[] arr1 = new int[]{1,2,3};

静态初始化的时候,数组元素个数和初始化数据的格式是一致的。

1.3数组的使用

举例:——获取长度&访问元素

  1. public class Test {
  2. public static void main(String[] args) {
  3. //静态初始化
  4. int[] arr = {1,2,3};
  5. //获取数组长度
  6. System.out.println("length = " + arr.length);
  7. //访问数组中的元素
  8. System.out.println(arr[1]);
  9. System.out.println(arr[0]);
  10. arr[2] = 100;
  11. System.out.println(arr[2]);
  12. }
  13. }

(1)使用arr.length  能够获到数组的长度, .   是成员访问操作符;

(2)使用  []   按下标取数组元素。——下标从0开始计数;

(3)使用  []  操作既能读取数据,也能修改数据;

(4)下标访问操作不能超出有效范围 [0,length - 1] ,如果超出有效范围,会出现下标越界访问。

举例2——遍历数组——(遍历:即是指将数组中的所有元素收访问一遍,常使用循环语句)

  1. public class Test {
  2. //2.遍历数组
  3. public static void main(String[] args) {
  4. int [] arr = {1,2,3,4,5};
  5. for (int i = 0; i <arr.length ; i++) {
  6. System.out.println(arr[i]);
  7. }
  8. }
  9. }

举例3——使用foreach遍历数组

  1. public class Test {
  2. //3.使用foreach遍历数组
  3. public static void main(String[] args) {
  4. int[] arr = {7,8,9,0};
  5. for (int x:arr){
  6. System.out.println(x);
  7. }
  8. }
  9. }

举例4——使用操作数组的工具类Array.toString()——将数组以字符串的形式进行输出

  1. public class Test {
  2. //4.使用操作数组的工具类Arrays.toString()——将数组以字符串的形式输出
  3. public static void main(String[] args) {
  4. int[] arr = {4,5,7,6};
  5. System.out.println(Arrays.toString(arr));
  6. }
  7. }

2.数组作为方法的参数

2.1基本用法

举例1 ——打印数组内容

  1. public class Test {
  2. //5.打印数组内容
  3. public static void main(String[] args) {
  4. int[] arr1 = {2,3,4,8,5};
  5. printArray(arr1);
  6. }
  7. public static void printArray(int[] arr){
  8. for(int x:arr){
  9. System.out.println(x);
  10. }
  11. }
  12. }

此代码中 int[] arr是函数形参;int[] arr1是函数实参。

2.2引用类型

举例2—— 参数传内置类型

  1. public class Test {
  2. //6.参数传内置类型
  3. public static void main(String[] args) {
  4. int num = 10;
  5. func(num);
  6. System.out.println("num = " + num);
  7. }
  8. public static void func(int x){
  9. x = 10;
  10. System.out.println("x = " + x);
  11. }

执行结果:

可发现修改形参x的值,并不影响实参的num 值。

举例2——参数传数组类型

  1. public class Test {
  2. //7.参数传数组类型
  3. public static void func1(int[] arr){
  4. arr[0] = 10;
  5. System.out.println("arr[0] = " + arr[0]);
  6. }
  7. public static void main(String[] args) {
  8. int[] arr1 = {12,13,11,15};
  9. func1(arr1);
  10. System.out.println("arr1[0] = " + arr1[0]);
  11. }
  12. }

执行截图:

可发现:在函数内部修改数组内容,函数外部也发生改变;

此时数组名arr1是一个“引用”,当传参的时候,是按照引用传参。

所谓引用:——本质上是存了一个地址。

Java数组设定成引用类型——方便进行数组参数传参——即将数组的地址传入到函数形参中。

2.3null

null——在Java中表示“空引用”——即一个无效的引用。——因此不可对此引用指向对象的内存进行任何读写操作——会抛出NullPointerException

2.4JVM 内存区域划分

   (1)JVM Stack——虚拟机栈——重点是存储局部变量表:

   (2)本地方法栈——保存的是Native方法的局部变量;

(3)堆——JVM所管理的最大内存区域——使用new创建的对象都是在堆上保存;

(4)程序计数器——保存下一条执行的指令地址;

(5)方法区——用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据;方法编译出的字节码就是保存在这个区域。

3.数组作为方法的返回值

举例—— 数组作为方法的返回值——写一个方法,将数组中的每一个元素 * 2

代码实现:

  1. public class Test {
  2. //8.数组作为方法的返回值——写一个方法,将数组中的每一个元素 * 2
  3. public static void main(String[] args) {
  4. int[] arr = {1,2,3,4};
  5. int[] output = transform(arr);
  6. printArray1(output);
  7. }
  8. public static void printArray1(int[] arr){
  9. for (int i = 0; i < arr.length ; i++) {
  10. System.out.println(arr[i]);
  11. }
  12. }
  13. public static int[] transform(int[] arr){
  14. int[] ret = new int[arr.length];
  15. for (int i = 0; i < arr.length; i++) {
  16. ret[i] = arr[i] * 2;
  17. }
  18. return ret;
  19. }

执行结果:

4.使用数组的常见问题:

(1)下标越界——ArrayIndexOutOfBoundsException

(2)空指针异常——NullPointerException——需检查哪个引用为null

       null ——引用对应的0值——不知其指向的对象时,置为null

int array2 = null;//此引用不指向任何对象。

5.for   与    foreach 循环的区别:

for:可使用下标访问找到某元素;

foreach:没有下标。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/782729
推荐阅读
相关标签
  

闽ICP备14008679号