每日已学习内容

数组定义

数组是一种数据结构,是用来存储同一数据类型的有序集合,并可以用下标索引访问数组中的值。简而言之就是开辟了一段连续的有具有索引的存储单元。

唯一性:不可以存储不同的数据类型。

快速访问:可以通过下标 索引符号[ ] 快速访问数据。

客户端程序员未赋值,JVM会自动赋值(int自动赋值0,boolean自动赋值false,引用类型自动赋值null)

可以int [] a定义数组,也可以int a []定义数组 前者更符合java设计思想 后者是C程序员的习惯。

2.for each 循环

for each只读取容器内的数据而不会更改数据。

for(variable : collection) 语句块,collection 这一集合表达式必须是一个数组或者是一个实现了 Iterable 接口的类对象.-----------《java核心技术》

3.数组初始化

int [] a={1,2,3,4,5,6,7,8,9};

int [] a =new int[9];

int [] a =new int[]{1,2,3,4,5,6,7,8,9};

new int {1,2,3,4,5,6,7,8,9,};//匿名初始化--------------------------《java核心技术 | 》

small Primes = new int[] { 17, 19, 23, 29, 31, 37 }; 是 int [] anonymous = { 17, 19, 23, 29, 31, 37 };

smallPrimes = anonymous; 的简写形式--------------------------------《java核心技术 | 》

6.数组的引用本质其实就是指针(c/c++)

当我们定义两个数组 int a1[]={1,2,3,4,5,6,7,8,9};

int b1[]={1,2,3,} //故意长度不相等

很明显a这时候报了数组越界异常,这时候变量a指向了b1。(下图虚线 是赋值语句的结果,a指向b1)

4.数组在内存中存储形式

4.1 int类型数组

以int [] a =new int[9];为例子,在栈内存(stack)存放内存开辟空间用来存放变量a它是堆内数组的应用并指向数组第一个地址 ,在堆(heap)开辟一段连续的内存空间 且空间长度是int*9用于存放这九个int数据。

5.常用算法

5.1插入算法

public class Add{

public static void main(String[] args){

// 一个有序的数组,向该数组中添加一个元素,数组依然有序。

int[] arr = {1,3,7,9,12,20,0};

int t = 0;

// 【1】找位置

int loc = -1; // 表示t应该添加到的位置

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

if(arr[i] >= t){

loc = i;

break;

}

}

System.out.println("loc = "+loc);

if(loc < 0){ // 没找到合适的位置

arr[arr.length-1] = t;

}else{

// 【2】依次后移

for(int j=arr.length-1;j>loc;j--){

arr[j] = arr[j-1];

}

// 【3】添加插入的值

arr[loc] = t;

}

// 验证

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

System.out.print(arr[i]+"\t");

}

}

}

5.2 删除算法

5.3冒泡排序

public class Test10{

public static void main(String[] args){

// 对一个无序的数组进行排序

int[] arr = {10,5,3,4,2,9,7};

int tmp = 0;

for(int i=0;i<arr.length-1;i++){ // 外层控制趟数

for(int j=0;j<arr.length-1-i;j++){ // 两两比较

if(arr[j]>arr[j+1]){

tmp = arr[j];

arr[j] = arr[j+1];

arr[j+1] = tmp;

}

}

}

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

System.out.print(arr[i]+"\t");

}

}

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,915评论 0 2
  • 第四天 数组【悟空教程】 第04天 Java基础 第1章数组 1.1数组概念 软件的基本功能是处理数据,而在处理数...
    Java帮帮阅读 1,668评论 0 9
  • 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔...
    开心的锣鼓阅读 3,391评论 0 9
  • Java经典问题算法大全 /*【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子...
    赵宇_阿特奇阅读 2,050评论 0 2
  • 人长大后真的是要化妆 不为别的就为这生活中无数想哭的瞬间里还可以想到老娘的妆不能花
    王木木_mua阅读 256评论 0 0

友情链接更多精彩内容