网站首页 > java教程 正文
数组(Array)定义:相同类型数据的集合。
数组按照使用可以分为:一维数组、二维数组和多维数组。
1、数组的定义:
Java中使用关键字new创建数组对象,声明数组的同时分配内存空间,数组定义方式有3种:
方式1(推荐,更能表明数组类型)
type[] 变量名 = new type[数组中元素的个数];
比如:
int[] a = new int[10];
数组名,也即引用a,指向数组元素的首地址。
方式2(同C语言)
type 变量名[] = new type[数组中元素的个数];
如:
int a[] = new int[10];
方式3定义时直接初始化
type[] 变量名 = new type[]{逗号分隔的初始化值};
其中 new type[] 可省略,所以又有两种:
int[] a = {1,2,3,4};
int[] a = new int[]{1,2,3,4};
上面 int[] a = new int[]{1,2,3,4} 的第二个中括号中不能加上数组长度,因为元素个数是由后面花括号的内容决定的。
数组的元素是通过索引访问的。数组索引从 0 开始,所以索引值从 0 到 array.length-1(array.length为数组的长度,在上面例子中,a即为array)。
2、数组的操作:
①赋值:
下面的语句首先声明了一个数组变量 myList,接着创建了一个包含 10 个 double 类型元素的数组,并且把它的引用赋值给 myList 变量。
public class TestArray{
public static void main(String[] args){
// 数组大小
intsize = 10;
// 定义数组
double[] myList = new double[size];
myList[0] = 5.6;
myList[1] = 4.5;
myList[2] = 3.3;
myList[3] = 13.2;
myList[4] = 4.0;
myList[5] = 34.33;
myList[6] = 34.0;
myList[7] = 45.45;
myList[8] = 99.993;
myList[9] = 11123;
// 计算所有元素的总和
double total = 0;
for(inti = 0; i < size; i++){
total += myList[i];
}
System.out.println("总和为: " + total);
}
}
下面的图片描绘了数组 myList。这里 myList 数组里有 10 个 double 元素,它的下标从 0 到 9。
②循环数组(遍历):
数组的元素类型和数组的大小都是确定的,所以当处理数组元素时候,我们通常使用基本循环或者 foreach 循环。
创建、初始化和使用基本循环操纵数组:
public class TestArray{
public static void main(String[] args){
double[] myList = {1.9, 2.9, 3.4, 3.5};
// 打印所有数组元素
for(inti = 0; i < myList.length; i++){
System.out.println(myList[i] + "");
}
// 计算所有元素的总和
doubletotal = 0;
for(inti = 0; i < myList.length; i++){
total += myList[i];
}
System.out.println("Total is " + total);
// 查找最大元素
doublemax = myList[0];
for(inti = 1; i < myList.length; i++){
if(myList[i] > max){
max = myList[i];
}
}
System.out.println("Max is " + max);
}
}
foreach 循环,能在不使用下标的情况下遍历数组:
public class TestArray{
public static void main(String[] args){
double[] myList = {1.9, 2.9, 3.4, 3.5};
// 打印所有数组元素
for(double element: myList){
System.out.println(element);
}
}
}
③数组排序(介绍几种常用排序方法):
1.冒泡排序 (将相近的两个数字依次比较,将值最大或最小的一次提取,进行排序)
public void bubbleSort() {
int a[]={32,87,3,58,12,70,20,8,62,17};
int n = a.length;
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - 1; j++) {
if (a[j] > a[j + 1]) {
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
for(int c: a){
System.out.println(c);
}
}
2.选择排序 (每一次将第一个数与后面的数一次比较,将最大值的下标保存,然后调换位置,进行排序)
public void selectSort() {
int a[]={32,87,3,58,12,70,20,8,62,17};
int n = a.length;
for (int i = 0; i < n - 1; i++) {
int index = i;
for (int j = i+1; j < n ; j++) {
if (a[index] < a[j]) {
index = j;
}
}
if (index != i) {
int temp = a[i];
a[i] = a[index];
a[index] = temp;
}
}
for(int c: a){
System.out.println(c);
}
}
3.插入排序(把当前待排序的元素插入到一个已经排好序的列表里面。 一个非常形象的例子就是右手抓取一张扑克牌,并把它插入左手拿着的排好序的扑克里面。插入排序的最坏运行时间是O(n2), 所以并不是最优的排序算法。特点是简单,不需要额外的存储空间,在元素少的时候工作得好)
public void insertSort() {
int a[]={32,87,3,58,12,70,20,8,62,17};
int n = a.length;
for (int i = 1; i < n; i++) {
//将a[i]插入a[0:i-1]
int t = a[i];
int j;
for (j = i - 1; j >= 0 && t < a[j]; j--) {
a[j + 1] = a[j];
}
a[j + 1] = t;
}
for(int c: a){
System.out.println(c);
}
}
4.还有一种方法就是用Arrays.sort()方法直接排序
public void sort() {
int a[]={32,87,3,58,12,70,20,8,62,17};
Arrays.sort(a);
for(int c: a){
System.out.println(c);
}
}
猜你喜欢
- 2024-10-22 Java几种排序方式(java排序的方法有哪些)
- 2024-10-22 Java排序算法——归并排序(Merge Sort)
- 2024-10-22 Java 集合中的排序算法浅析(java集合排序工具类)
- 2024-10-22 数组排序与二分查找法(二分查找排序树)
- 2024-10-22 LeetCode基础算法题第85篇:求有序数组的平方再排序
- 2024-10-22 Java中Arrays的两种排序方法(sort和parallelSort)比较
- 2024-10-22 深入理解Java中Comparable和Comparator排序
- 2024-10-22 Java常见知识之冒泡排序#冒泡排序
- 2024-10-22 Java数组之Arrays方法(java array数组)
- 2024-10-22 常用集合的排序方法——Java进阶知识讲义系列(七)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)