栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Java数组的定义与使用

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java数组的定义与使用

目录

1 数组的基本用法

1.1数组是什么

1.2创建数组

 1.3数组的使用

 2 数组作为方法的参数

2.1基本用法

2.2引用的理解

 2.3认识null

2.4认识JVM内存区域划分

3数组作为方法的返回值

 4 数组练习

4.1数组转字符串

4.2查找数组中的指定元素(二分查找)


1 数组的基本用法

1.1数组是什么

数组是用一段连续的空间来储存一些相同类型的数据。

数组中的每一个数据都有自己的唯一下标,这个下标也是访问这个元素的标识。下标是从0开始的

例如数组中有5个数,它里面的数据于数据所对应分下标如图

 

例如:

1,2,3,4,5,6,7就可以用一个数组来存储

1.2创建数组

基本语法:

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

数据的类型[]数组名称=new 数据类型[要存放的数据的个数]{初始化数据};

示例代码:

int[]array1={1,2,3,4,5};
int[]array2=new int[5]={1,2,3,4,5};

 1.3数组的使用

数组的基本的使用有两个,1是或去数组的长度,2是访问数组的每一个元素

示例代码:

 public static void main(String[] args) {
        int[]array={1,2,3,4,5};
        //获取数组的长度
        int len=array.length;
        System.out.println(len);
        //通过数组的下标访问数组
        System.out.println(array[0]);
    }

 注意事项

1. 使用 arr.length 能够获取到数组的长度 . . 这个操作为成员访问操作符 . 后面在面向对象中会经常用到 . 2. 使用 [ ] 按下标取数组元素 . 需要注意 , 下标从 0 开始计数 3. 使用 [ ] 操作既能读取数据 , 也能修改数据 . 4. 下标访问操作不能超出有效范围 [0, length - 1] , 如果超出有效范围 , 会出现下标越界异常. 数组使用示例代码:数组的遍历
public static void main(String[] args) {
        int[]array={1,2,3,4,5};
        //for循环遍历
     for(int i=0;i

 2 数组作为方法的参数

2.1基本用法

示例代码:数组的遍历

 public static void playArray(int[]array){
        for (int i = 0; i 

 在这个代码中arr是实参,array是形参,array.legth也可以获取数组的长度

2.2引用的理解

首先我们来看下面的代码:

 public static void change(int num){
        num=20;
        System.out.println("num="+num);
    }
    public static void main(String[] args) {
        int a=10;
        change(a);
        System.out.println("a="+a);
    }

很明显我们想要通过方法去改变a是做不到的,因为num是a的拷贝而已,它们只是值相同而已

那么我们如果就要对某个空间上数据通过方法进行修改要怎么做呢?

这里就引入了引用的概念

引用:引用也是一种变量,不过它储存的是一个对象的地址(对象的概念在以后讨论)。

下面我们来看一段代码

 public static void change(int[]array){
        for(int i=0;i

 

我们可以看到数组中的数据被改变了,这到底是为什么呢,下面我们来讨论这个问题。

首先,我要告诉大家数组是一个引用类型,数组名就是这个引用类型的变量名,这个变量里面存放这数组中元素的地址。那么array对arr的一份拷贝,也就是说array中也存放这相同的地址,所有通过地址就可以改变地址所对应空间的值。

如图:

 2.3认识null null 在 Java 中表示 " 空引用 " , 也就是一个无效的引用 . null 的作用类似于 C 语言中的 NULL ( 空指针 ), 都是表示一个无效的内存位置 . 因此不能对这个内存进行任何读写操 作 . 一旦尝试读写 , 就会抛出 NullPointerException. 注意: Java 中并没有约定 null 和 0 号地址的内存有任何关联.

2.4认识JVM内存区域划分

JVM的内寸被划分为了几个不同的区域

程序计数器 (PC Register): 只是一个很小的空间 , 保存下一条执行的指令的地址 . 虚拟机栈 (JVM Stack): 重点是存储 局部变量表 ( 当然也有其他信息 ). 我们刚才创建的 int[] arr 这样的存储地 址的引用就是在这里保存. 本地方法栈 (Native Method Stack): 本地方法栈与虚拟机栈的作用类似 . 只不过保存的内容是 Native 方法的局 部变量. 在有些版本的 JVM 实现中 ( 例如 HotSpot), 本地方法栈和虚拟机栈是一起的 . 堆 (Heap): JVM 所管理的最大内存区域 . 使用 new 创建的对象都是在堆上保存 ( 例如前面的 new int[]{1, 2, 3} ) 方法区 (Method Area): 用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数 据 . 方法编译出的的字节码就是保存在这个区域 . 运行时常量池 (Runtime Constant Pool): 是方法区的一部分 , 存放字面量 ( 字符串常量 ) 与符号引用 . ( 注意 从 JDK 1.7 开始 , 运行时常量池在堆上) Native 方法 : JVM 是一个基于 C++ 实现的程序 . 在 Java 程序执行过程中 , 本质上也需要调用 C++ 提供的一些函数进行和操 作系统底层进行一些交互 . 因此在 Java 开发中也会调用到一些 C++ 实现的函数 . 这里的 Native 方法就是指这些 C++ 实现的 , 再由 Java 来调用的函数

3数组作为方法的返回值

示例代码:将一个数组中的每一个元素扩大2倍并返回

public static  int[]toDouble(int[]array){
    int[]returnArray=new int[array.length];
        for (int i = 0; i 

 4 数组练习

4.1数组转字符串

代码:

 
    public static String toString(int[]array){
        String str="[";
        for(int i=0;i

4.2查找数组中的指定元素(二分查找) 针对 有序数组 , 可以使用更高效的二分查找 . 啥叫有序数组 ? 有序分为 " 升序 " 和 " 降序 " 如 1 2 3 4 , 依次递增即为升序 . 如 4 3 2 1 , 依次递减即为降序 . 以升序数组为例 , 二分查找的思路是先取中间位置的元素 , 看要找的值比中间元素大还是小 . 如果小 , 就去左边找 ; 否则去右边找 代码:
  
public static int binarySearch(int[]array,int key){
        int left=0;
        int right=array.length-1;
        while(left<=right){
            int mid=(left+right)/2;
            if(array[mid]>key){
                right=mid-1;
            }else if(array[mid] 
   

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/345601.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号