Java基础(3数组)

 

一维数组

数组:数组是一种数据结构,用于存储同意类型值的集合.

数组的定义:

数组类型[] 数组名

数组类型 数组名[];

// 两种方式表达的效果一样   一般使用第一种  类型和数组表示符号放一起比较符合逻辑思维.  

//上面两种格式格式知识声明了变量,并没有初始化值 没有初始化值的数组是不能被使用的

数组的初始化:

分为两种

动态初始化和静态初始化

动态初始化: // n为指定的数组长度,数组中的元素值由系统默认指定.

数组类型[] 数组名 = new 数组类型[ n];

例如: int[]  a = new int[3] //定义了数组中数组长度为3.

注意:静态初始化后是系统默认赋值 而且不同类型的数组默认赋值还不一样

Int 类型默认赋值 0 ;double0 ; char\u0000  String null ; booleanfalse

 

静态初始化:给定数组中元素的值,系统的长度由系统给定.一定不要给数组长度赋值.

数组类型[] 数组名 = new 数组类型[]{//在这里面按顺序给数组赋值};

:int[] a = new int[]{11,22,33,44}

下面这种是动态初始化的常用形式 两种形式表达的效果一样

数组类型[] 数组名 = {//在这里按顺序给数组赋值}

:String[] a = {“11”,”22”,”33”,”44”};

 

 

获取数组中的元素

因为每个数组都有一个下标又称为索引值

索引值从0开始 ,最大索引值为数组长度-1;

例如

//定义一个数组int[] a = {11,22,33,44};

想要获取11这个值 ;由于它是第一个数所以它的索引值是0;

故可以这样获取 int b =  a[0];

 

数组赋值

数组名[替换的数在数组中的下标] = 替换值 .

:

定义数组 int[] a ={11,22,33};

赋值  a[2] = 44 ;

原本中a[2]的值对应的是33,但是被后来赋值的44给替换掉了.

Java内存分配

Java为了提供程序的执行效率,将内存分配为五个部分

1. 栈内存:可以存储局部变量  

进栈的方式 :压栈   出栈的方式:弹栈.    

遵循先进后出 后进先出原则

栈内存中的局部变量,当方法调用或者代码块执行完毕时,会及时从内存中释放出去

2. 堆内存:new出来的定西在堆内存

New出来的东西都存储再堆内存中,

然后给当前对象名分配一个内存地址值;

堆内存中穿件对象,当对象被输出之后,GC会将对象释放掉,

不是立即释放,而是等待垃圾回收器空闲状态的时候,将对象释放.

 

3. 方法区:

4. 本地方法区

5. 寄存器(cpu有关)

 

 

Java中一个数组的内存分配图解

 

 

 

 

 

 

流程解析:

首先在栈中创建一个局部变量int[] arr

然后再堆内存中创建一个new int[3] ,系统会默认给出三个长度 ,三个长度默认 0,0,0;

当值分配完之后会给当前一个地址值 ,这个值会赋给栈内存中的 int[] arr , int[] arr可以同过这个地址值访问 new对象 进而可以进行取值等操作.

Java中两个数组的内存分配图解

 

 

创建前两个数组,分别输出数组名称和元素,给前两个数组中的赋值;

创建第三个数组,将第一个对象名称赋值第三个数组名称,通过第三个数组的名称进行赋值,输出第一个数组的元素

Java中三个数组的内存分配图解(这里面有多个引用指向同一个堆内存)

 

 

流程解析与一个数组大致上没有差异

需要注意的是:arr 1 arr3用的是同一个堆内存 并没有给arr3一个新的堆内存空间.

Arr3中的赋值同样会替换掉原有的值.

 

 

 

 

 

 

数数组的具体应用

1.)                 遍历一个数组

//提供一个for循环为数组遍历,值得注意的是数组的索引值最大值为length - 1

核心代码:

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

  System.out.println(arr[i]);

}

 

2) .给出一个静态数组,求最大值和最小值

需要定义一个参照物

核心代码:

Int max = arr[0];

for(int i = 1 ; i < arr.length ; i++ ){

If(max < arr[i]){

max = arr[i] ;

}

}

 

3)                 定义一个数组,元素逆序

分析: 这要求元素中第一个数与最后一个数交换 ,第二个数与倒数第二个数交换,依次推类;

核心代码:

/*需要一个中间变量来存储这个交换的值 ,值得注意的是需要交换的次数知识数组长度的一般*/

Int temp = 0 ;

For(int i = 0 ; i < arr.length/2 ; i++){

Temp = arr[i];

arr[i] = arr[arr.length - 1 - x]

}

 

4)          数组中的元素查找法(数组中的基本查找法)

定义一个数组,静态初始化,查找某个元素在该数组中第一次出现的索引

//

     

 

代码截图

 

 

 

运行结果

 

 

 

 

 

 

 5)数组的元素查找法

 

 想查找某个元素的在该数组中第一次出现的索引值

 分析:
1)给出了数组

2)写一个查找数组中的元素的索引的方法

核心代码:


 ()







二维数组

二维数组:

1)动态初始化:

  数据类型[][]   数组名 = new 数据类型[m][n];    (最常用的动态初始化方式,推荐使用)

       m代表二维数组中有几个一维数组

        n代表每一个一维数组的长度.

例如:int[][]  arr = new int[3][2] 代表有三个一维数组和2长度的一维数组;


定义的方式还有以下两种情况
数据类型[]  数组名[] = new 数据类型[m][n]

数据类型 数组名[][] = new 数据类型[m][n] 

2)二维数组定义的第二种格式:

数据类型[][] 数组名 = new 数据类型[m][]

上面给定了一维数组的个数 数组长度,每个数组长度动态给定.


值得注意的是在不给定一维数组长度之前是无法给数组赋值的

第三种格式:静态初始化

格式 :数据类型[][] 数组名 ={{元素1,元素2,元素3},{....}};

例:int[][]  数组名 = {{1,2,3},{4,5,6},{7,8}}   ///数组的长度可以不一样


二维数组的遍历

通过数组的个数和长度作为循环的判断,for循环外层控制数组个数,内层控制数组长度



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值