栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Java

Java基础知识——数组

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

Java基础知识——数组

一维数组

1、idea换背景色:File->Setimgs->Editer->Color Schame

2、Java语言中的数组是一种引用数据类型,不属于基本数据类型。数组的父类是object类

3、数组是一个容器,可以同时容纳多个元素(数组是一个数据的集合)

4、数组当中可以存储基本数据类型也可以存取引用数据类型

5、数组因为是引用数据类型,所以数组对象是堆内存当中(数组是存储在堆内存当中的)

6、数组在内存方法是怎样的

 

7、数组当中如果存储的是“Java对象”,实际上存储的是对象的引用(对象的内存地址),数组中不能直接存储Java对象

8、数组一旦创建,Java中规定长度不可变

9、数组的分类包括一维数组,二维数组及其多维数组

10、所有的数组对象都有length属性,用于获取数组中元素的个数

11、Java中数组要求数组元素类型统一,比如int类型数组只能存储int类型元素

12、数组在内存方面,存储的时候,存储元素的内存地址是连续的(存储的每一个元素都是有规则的),数组实际上是一种数据结构

13、数组中首元素的地址作为整个数组对象的地址

14、数组中每个元素都是有下标的,从0开始以1递增,最后一个元素下标为length-1

15、数组的优缺点

优点:查询、查找、检索某个下标上的元素时效率极高,可以说是查询效率最高一个数据结构(第一、每一个元素的内存地址是连续的;第二、每一个元素的类型相同,所以占用空间大小一样;第三、知道元素内存地址,知道下标,所以通过一个数学表达式可以计算出某个元素的内存地址,通过内存地址定位元素,所以数组的检索效率是最高的)

缺点:第一、由于为了保证数组中每个元素的存储是连续的,所以在数组上随机增加删除元素效率较低,因为随机增加删除元素涉及后面元素的移位(注意:对于数组中最后一个元素的增加删除是不受影响的)

第二、数组不能存储大数据量,因为很难在内存空间上找到一块大的连续的内存空间

16、如何声明、定义一个数组?

语法格式:int[] array1; double[]array2; String[]array2…..

17、怎么初始化一个一维数组

静态初始化一维数组:

int[] array ={1,2,3}

动态初始化一维数组:

int[] aray = new int[5] //这里的5表示数组的元素个数;初始化一个5个长度的int类型数组,每个元素默认值0

String[] array = new String[5]// 初始化一个5个长度的String类型数组,每个元素默认值null

18、当一个方法的参数是一个数组

Public class ArrayTest{

Public static void main(String[] args){

int[] a = {1,2,3};//静态初始化一维数组

printArray(a);

int[] a2 =new int[4]; //动态初始化一维数组

printArray(a2);

printArray(new int[3]);//这样也可以

printArray(new int[]{1,2,3});//如果直接传递一个静态数组语法应该这样写

}

//为什么使用静态方法:方便不需要你new对象

public static void printArray(int[] array){

for(int I = 0;i

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

}

}

}

19、main方法中的一维数组有什么用(JVM调用main方法的时候会自动传递一个String数组过来)

注意:args.length = 0 //默认长度为0(空数组)

20、对于数组来说,实际上只能存储Java对象的“内存地址”数据中存储的每个元素是“引用”

21、一维数组扩容

(1)在Java中数组一旦确定,长度不可变

(2)Java中对数组的扩容:新建一个大容量的数组,然后将小容量数组的数据一个一个拷贝到大数组中(数组扩容效率较低)

(3)调用System.arraycopy(五个参数)进行数组拷贝

public class ArrayTest{

public static void main(String[] args){

int[] src = {1,2,3,4,5};

int[] dest = new int[20];

System.arraycopy(src,1, dest,3,3);//(源,源的起始位置,目标,目标的起始地址,拷贝长度)

}

}

二维数组

1、二维数组其实就是特殊的一维数组,特殊在这个一维数组(二维数组)中的每一个元素是一个一维数组。

2、三维数组是一个特殊的二维数组,这个二维数组(三维数组)中的每一个元素是一个二维数组。

3、二位数组静态初始化int[][] a = {{1,2,3},{1,2,3,4},{1,2,3,4,5}}

动态初始化:int[][] a= new int[3][4]

4、二维数组的遍历

public class ArrayTest{

public static void main(String [] args){

String[][] array={{“java”},{“c++”},{“python”},{“oracle”}};

for(int i= 0;i

for(int j=0;j

System.out.println(array[i][j]);

}

}

}

}

Idea中搜索框:双击shift

例题:用一维数组模拟找数据结构

public class MyStack{

private Object[] elements; //Object可以存储Java中任何类型的引用数据;注意“abc”这是一个字符串对象,字符串在Java中不需要new也是一个对象。

private int index;

Public MySatack(){

This.elements = new Object[10];//默认初始化容量为10

This.index = -1;//初始化栈针

}

public void push(Object obj){//压栈方法

if(this.index = this.elements.length - 1){

System.out.println(“压栈失败,栈已满”);

return;

}

index++;

elements[index] = obj;

System.out.println(“压栈”+obj+”元素成功,栈针指向”+index);//所有的 System.out.println()方法如果输出引用类型,自动调用引用的toString()方法(即obj.tostring())

}

public Object pop(){ //弹栈的方法

if(index<0){

System.out.println(“栈已空,弹栈失败”);

return null;

}

System.out.println(“弹栈”+obj+”元素成功,栈针指向”+index);

return elements[--index];

}

//alt + insert自动生成get,set方法

public Object[] getelements(){

return elements;

}

Public void setelements(Object[] getelements){

this.elements = elememts;

}

}

Public class ArrayTest{ //测试程序

Public static void main(String[] args){

MyStack stack = new MyStack();

Stack.push(new Object());

Stack.pop();

}

}

Java.util.Arrays(数组排序)

1、工具类方法一般是静态的,不需要new对象,使用类名调用就可以

public class ArraysTest{

int[] array = {12,1,3,5,8,2};

Arrays.sort(array);

public static void main(String[] args){

if(int i=0;i

System.out.println(“array[i]”)

}

}

活动地址:CSDN21天学习挑战赛

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

版权所有 (c)2021-2022 wk8.com.cn

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