07 Java数组

课前知识拓展:JVM java虚拟机

虚拟机就是一台虚拟的电脑,它是在JDK安装之后就出现了,它也有自己虚拟的内存用来管理java系统资源,java虚拟机内存主要分为以下四块:

1、栈区(要求理解):存放函数的参数值,局部变量的值等,在超过这个变量的作用域(简单理解为{}范围)时就会被系统自动释放掉存在于JVM内存中的资源;

优点:存取速度比堆快

缺点:存在栈中的数据大小与生存期必须是确定的,无灵活性

举例:for(int i=0;i<43;i++){

                  System.out.println(i);           //打印会报错的

            }

System.out.println(i); //是没有办法打印的,i是for的局部变量

注:java中基础的数据类型(四种八类)还有Sring都是栈区存储

int a=1;int b=1;a和b赋值相同,b后赋值,仅仅会给b一个地址,不会在内存新增一个1

 

2、堆区(要求理解):存放由new创建的对象数组,JVM不定时查看这个对象,如果没有引用指向这个对象就回收;

Scanner input(该部分存放在栈区)=new Scanner(System.in);(该部分存放在堆区)

优点:可以动态分配JVM内存

缺点:要在运行时分配JVM内存,速度慢(运行java的时候还要调用内存资源,肯定会慢)

 

3.静态区(暂时作为了解

4.代码区(暂时作为了解

 

本章目标

/*掌握数组的基本用法

**掌握数组的几种典型应用

**掌握多维数组的用法*/

 

数组:是一个变量,存储相同数据类型的一组数据的集合;声明一个数组就是在内存空间划出一串连续的空间

java中都有哪些数组类型(简单的说:只要是数据类型,都有自己的数组,因为数组就是数据的集合)

举例:

Char char[]  

Int   int[]  

Double doublie[]  

String String[]

Scanner Scanner[]   

Random Random[]

……等等

 

*********

数组基本四要素

标识符:    数组的名称,用于区分不同的数组;

数组元素:数组中存放的数据

元素类型:数组中数据的类型

元素下标:对数组元素进行编号;从0开始,通过下标可以访问到其中的每个元素

注:数组长度固定不变,避免数组越界;数据类型和大小都是固定的

 

*********

数组使用的三种方式:

1、声明数组int[]  arr(在栈区建立数组引用arr)

     分配空间arr=new int[5](堆区分配空间)

     赋值arr[0]=32(赋值)

2、声明数组并分配空间int[] arr=new int[5]

      赋值arr[0]=32

3、边声明边赋值int[] arr={1,2,3}

                           int[] arr=new int[]{1,2,3}

关于数组特点的说明:

1、数组是分两部分存储的,引用类型arr是在栈区;而具体的数组空间和数据是在堆区

2、数值类型未赋值默认为0;非数值类型未赋值默认为null,char为空

3、数组是数据类型确定,空间内存大小确定的集合

 

数组length属性:数组名.length可以求出数组长度(点的作用引出属性)

        int [ ] score = {60, 80, 90, 70, 85};

        int sum = 0;

        double avg;

        for(int i = 0; i < score.length; i++){

              sum = sum + score[i];

        }

        avg = sum / score.length;

 

在java的API中有一个专门操作数组的类,就是Array类,它提供了很多静态方法用于数组之间的操作

Array类常用的API方法

注:Arrays类的使用只需引入import java.util.Arrays; 调用方式 Array.sort()   或其他方法

       以上方法开头数据类型boolean String int均为返回值;

 

数组四大算法:

数组复制算法:使用for循环赋值,可以利用下标一致的特性

数组查找算法:使用for循环提取每个元素与查找值比较;if条件判断加break加计数

数组插入算法:有序数组,使用比大小,大了占你位置,其他整体平移

分析:数组的插入算法结合了数值交互;需要注意的是,数组是长度固定的,所以要为插入的数据提前准备一个占位位置;这也是以后为集合框架打下一定的底层基础

数组冒泡算法:原理类似水中气泡上浮,一层一层往上把最大值/最小值踢到后面

 

多维数组介绍

数组的数组:也就是说组成一维数组的各个元素也是数组

声明方式:   必须从一维开始申请

int[][] arr=new int[5][];

第一次就必须把一维确定出来,否则就是错误的

本篇文章,本应有对应的代码对照学习才能事半功倍,由于时间有限,日后补上。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值