java数组的创建及常用操作
来源:互联网 发布:java小数点后保留一位 编辑:程序博客网 时间:2024/05/16 13:57
数组
概念
同一种类型数据的集合。其实数组就是一个容器。
数组的好处
可以自动给数组中的元素从0开始编号,方便操作这些元素。
格式1:
元素类型[] 数组名 = new 元素类型[元素个数或数组长度];
示例:int[] arr = new int[5];
格式2:
元素类型[] 数组名 = new 元素类型[]{元素,元素,……};
int[] arr = new int[]{3,5,1,7};
int[] arr = {3,5,1,7};
1、一维数组的声明方式:元素类型[ ] 数组名 或者 元素类型 数组名[ ]
附:推荐使用第一种格式,因为第一种格式具有更好的可读性,表示: 元素类型[ ] 是一种引用类型(数组)而不是元素类型。不建议使用第二种方式
下面是典型的声明数组的方式:
// 声明整型数组 int[] intArray0 ; int intArray1[];
// 声明浮点型数组 float[] floatArray0 ; float floatArray1[];
// 声明布尔型数组 boolean[] boolArray0 ; boolean boolArray1[];
// 声明字符型数组 char[] charArray0 ; char charArray1[];
// 声明字符串数组 String[] stringArray0; String stringArray1[];
// 错误的声明数组的方式,声明数组的时候不能指定其大小 // int [5] intErrorArray0; // int intErrorArray1[5];
注:
Java语言中声明数组时不能指定其长度(数组中元素的个数),这是因为数组是一种引用类型的变量,因此使用它定义一个变量时,仅仅表示定义了一个引用变量(也就是定一个了一个指针),这个引用变量还未指向任何有效的内存,所以定义数组时不能指定数组的长度。而且由于定义数组仅仅只是定一个引用变量,并未指向任何有效的内存空间,所以还没有内存空间来存储数组元素,因此这个数组也不能使用,只有在数组进行初始化后才可以使用。
2、一维数组的创建(初始化)
数组的初始化分为静态初始化、动态初始化和默认初始化:
静态初始化是数组在初始化时由程序员显式指定每个数组元素的初始值而数组长度由系统决定。
动态初始化是数组在初始化时只指定数组长度,由系统为数组元素分配初始值。
// 静态初始化 int intArray2 [] = new int[]{20,21,22};
// 静态初始化简化方式 int intArray3 [] = {30,31,32};
// 动态初始化 int[] intArray4 = new int[3];
// 错误写法:静态初始化不能指定元素个数 // int intErrorArray5[] = new int[3]{50,51,52};
// 错误写法:动态初始化必须指定元素个数 // int intErrorArray6[] = new int[];
注:
一维数组这一块记住两点,数组声明的时候是不能指定大小的,也就是说等号左边的中括号中不能包含数字。另外一旦使用new关键字那么肯定在内存中为数组分配了空间,则必然数组有默认值。数组是对象数据类型
数组进行动态初始化时系统分配初始值的规则
数组元素类型是基本类型中的整数类型(byte、short、int、long),则数组元素的值是0
数组元素类型是基本类型中的浮点类型(float、double),则数组元素的值是0.0
数组元素类型是基本类型中的字符类型(char),则数组元素的值是'\u0000'
数组元素类型是基本类型中的布尔类型(boolean),则数组元素的值是false
数组元素类型是基本类型中的引用类型(类、接口、数组),则数组元素的值是null
Java中对Array数组的常用操作
目录:
- 声明数组;
- 初始化数组;
- 查看数组长度;
- 遍历数组;
- int数组转成string数组;
- 从array中创建arraylist;
- 数组中是否包含某一个值;
- 将数组转成set集合;
- 将数组转成list集合;
- Arrays.fill()填充数组;
- 数组排序;
- 复制数组;
- 比较两个数组;
- 去重复;
- 查询数组中的最大值和最小值;
备注:文内代码具有关联性。
1.声明数组;
1
2
3
4
String [] arr;
int
arr1[];
String[] array=
new
String[
5
];
int
score[]=
new
int
[
3
];
2.初始化数组;
1
2
3
4
5
6
7
8
9
10
//静态初始化
int
arr2[]=
new
int
[]{
1
,
2
,
3
,
4
,
5
};
String[] array1={
"马超"
,
"黄忠"
,
"关羽"
,
"刘备"
,
"张飞"
};
String[] array2=
new
String[]{
"貂蝉"
,
"虞姬"
,
"孙尚香"
,
"大乔"
,
"小乔"
,
"武则天"
};
int
score[]=
new
int
[
3
];
//动态初始化
for
(
int
i=
0
;i<score.length;i++)
{
score[i]=i+
1
;
}
3.查看数组长度;
1
2
int
length=array1.length;
System.out.println(
"length: "
+array1.length);
4.遍历数组;
1
2
3
for
(
int
i =
0
; i < array1.length; i++) {
System.out.println(array1[i]);
}
5.int数组转成string数组;
1
2
3
int
[] array3={
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
0
};
String arrStrings=Arrays.toString(array3);
System.out.println(arrStrings);
6.从array中创建arraylist;
1
2
ArrayList<String> arrayList=
new
ArrayList<String>(Arrays.asList(array1));
System.out.println(arrayList);
7.数组中是否包含某一个值;
1
2
3
4
5
String a=
"马超"
;
String[] array1={
"马超"
,
"黄忠"
,
"关羽"
,
"刘备"
,
"张飞"
};
if
(Arrays.asList(array1).contains(a)) {
System.out.println(
"马超在这里"
);
}
8.将数组转成set集合;
1
2
3
String[] array2=
new
String[]{
"貂蝉"
,
"虞姬"
,
"孙尚香"
,
"大乔"
,
"小乔"
,
"武则天"
};
Set<String> set=
new
HashSet<String>(Arrays.asList(array2));
System.out.println(set);
9.将数组转成list集合;
1
2
3
4
5
6
7
8
9
10
11
String[] array2=
new
String[]{
"貂蝉"
,
"虞姬"
,
"孙尚香"
,
"大乔"
,
"小乔"
,
"武则天"
};
//方法 1.
List<String> list=
new
ArrayList<String>();
for
(
int
i =
0
; i < array2.length; i++) {
list.add(array2[i]);
}
String[] arrStrings2={
"1"
,
"2"
,
"3"
};
//方法 2.
List<String > list2=java.util.Arrays.asList(arrStrings2);
System.out.println(list2);
10.Arrays.fill()填充数组;
1
2
3
4
5
6
int
[] arr3=
new
int
[
5
];
Arrays.fill(arr3,
10
);
//将数组全部填充10
//遍历输出
for
(
int
i =
0
; i < arr3.length; i++) {
System.out.println(arr3[i]);
}
11.数组排序;
1
2
3
4
5
6
7
8
9
10
11
12
//方法 1.
int
[] arr4 = {
3
,
7
,
2
,
1
,
9
};
Arrays.sort(arr4);
//.sort(int[] a) 放入数组名字
for
(
int
i =
0
; i < arr4.length; i++) {
System.out.println(arr4[i]);
}
//方法 2.
int
[] arr5 = {
3
,
7
,
2
,
1
,
9
,
3
,
45
,
7
,
8
,
8
,
3
,
2
,
65
,
34
,
5
};
Arrays.sort(arr5,
1
,
4
);
//.sort(a, fromIndex, toIndex) 从第几个到第几个之间的进行排序
for
(
int
i =
0
; i < arr5.length; i++) {
System.out.println(arr5[i]);
}
12.复制数组;
1
2
3
4
5
6
7
8
//方法 1.
int
[] arr6 = {
3
,
7
,
2
,
1
};
int
[] arr7=Arrays.copyOf(arr6,
10
);
//指定新数组的长度
//方法 2.
int
[] arr8=Arrays.copyOfRange(arr6,
1
,
3
);
//只复制从索引[1]到索引[3]之间的元素(不包括索引[3]的元素)
for
(
int
i =
0
; i < arr8.length; i++) {
System.out.println(arr8[i]);
}
13.比较两个数组;
1
2
3
int
[] arr9 = {
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
0
};
boolean
arr10=Arrays.equals(arr6, arr9);
System.out.println(arr10);
14.去重复;
1
2
3
4
5
6
7
8
9
10
11
12
13
int
[] arr11 = {
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
0
,
3
,
2
,
4
,
5
,
6
,
7
,
4
,
32
,
2
,
1
,
1
,
4
,
6
,
3
};
//利用set的特性
Set<Integer> set2=
new
HashSet<Integer>();
for
(
int
i =
0
; i < arr11.length; i++) {
set2.add(arr11[i]);
}
System.out.println(set2);
int
[] arr12 =
new
int
[set2.size()];
int
j=
0
;
for
(Integer i:set2) {
arr12[j++]=i;
}
System.out.println(Arrays.toString(arr12));
15.查询数组中的最大值和最小值;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int
[] arr11 = {
10
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
0
,
3
,
2
,
4
,
5
,
6
,
7
,
4
,
32
,
2
,
1
,
1
,
4
,
6
,
3
};
//计算最大值
int
max = arr11[
0
];
for
(
int
i =
1
; i < arr11.length; i++) {
if
(arr11[i] > max) {
max = arr11[i];
}
}
System.out.println(
"Max is "
+ max);
//计算最小值
int
min = arr11[
0
];
for
(
int
i =
0
; i < arr11.length; i++) {
if
(arr11[i]<min) {
min = arr11[i];
}
}
System.out.println(
"Min is "
+ min);
阅读全文
0 0
- java数组的创建及常用操作
- 常用的Java数组操作
- Java数组常用操作
- java数组常用操作
- java操作数组的常用类
- java中数组的常用操作
- java操作数组的常用类
- Java 数组的 12 个常用操作
- Java-基础 数组的常用操作
- java数组的声明创建及初始化
- 简述数组的创建及应用(java)
- JAVA基础---数组的创建及遍历
- java多线程的创建及常用方法
- Javascript数组及常用操作
- JAVA 反射创建数组和操作数组的意义
- JAVA 反射创建数组和操作数组的意义
- java的方法定义、数组定义、数组常用操作
- 数组的常用操作
- c#计算十六进制字符串的和校验
- pip install seaborn失败
- django select_related 和 prefetch_related 函数对 QuerySet 查询的优化(二)
- 打造超完美主页?20个主页设计技能你不容错过
- Django 的登录拦截器
- java数组的创建及常用操作
- 5028: 小Z的加油店&2257: [Jsoi2009]瓶子和燃料
- Android屏幕适配全攻略(最权威的官方适配指导)
- ThinkPHP 3.2 自定义异常
- DOM 0级事件和2级事件区别
- 人生计划
- eclipse查看vm文件
- php 将一个变量转为字符串
- 引入jquery等(静态资源)报404