Java基础(1)-Java的学习路线
Java基础(2)-Markdown语法
Java基础(3)-计算机基础
Java基础(4)-Java简介
Java基础(5)-win10系统卸载JDK
Java基础(6)-Win10系统下载安装配置JDK1.8
Java基础(7)-CentOS安装jdk1.8
Java基础(8)-Java程序运行机制
Java基础(9)-基础语法
Java基础(10)-JavaDoc命令行生成方式和Intellij IDEA 生成方式
Java基础(11)-输入Scanner的使用详解
Java基础(12)-流程控制之选择结构
Java基础(13)-流程控制之循环结构
Java基础(14)-流程控制之break和continue
Java基础(15)-方法详解
Java基础(16)-数组
Java基础(17)-CentOS安装配置maven
1、数组简介
- 数组:数组时相同类型数据的有序集合
- 数据描述的是相同类型的若干数据,按照一定的先后顺序依次排列组合而成
- 数据的基本特点:
- 数组的长度时固定的,数组一旦创建,它的长度就是不可以改变的
- 数组中所有元素类型必须相同
- 数组中的元素的类型可以是任何数据类型,包括基本数据类型和引用类型
- 数组变量属于引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量,数组本身就是对象,Java中对象是在队中的,数组对象本身是在堆中的
- 数组下标如果越界,报ArrayIndexOutofBounds异常
2、数组创建
定义数组并赋值,如下:
package com.redrose2100.array;
public class Demo01 {
public static void main(String[] args) {
int[] nums; // 推荐用法
int nums2[]; // 是为了让CC++理解,不推荐使用
nums=new int[10];
for (int i = 0; i < nums.length; i++) {
nums[i]=i+1;
}
for (int i = 0; i < nums.length; i++) {
System.out.print(nums[i]+"\t");
}
System.out.println();
}
}
执行结果如下:
1 2 3 4 5 6 7 8 9 10
3、内存分析
- 堆:存放new的对象和数组,可以被所有的线程共享,不会存放别的对象引用
- 栈:存放基本变量类型,包含基本类型的具体值,存放引用对象的变量,会存放这个引用在堆里面的具体地址
- 方法去:可以被所有的线程共享,包含了所有的class和static变量
4、数组的使用
数组的遍历:
package com.redrose2100.array;
public class Demo02 {
public static void main(String[] args) {
int[] arrays={1,2,3,4,5};
for(int elem:arrays)
{
System.out.print(elem+"\t");
}
}
}
执行结果如下:
1 2 3 4 5
计算数组元素求和
package com.redrose2100.array;
public class Demo03 {
public static void main(String[] args) {
int nums[]={1,2,3,4,5,6,7,8,9,10};
int sum=0;
for (int i = 0; i < nums.length; i++) {
sum+=nums[i];
}
System.out.println(sum);
}
}
执行结果为:
55
数组反转
package com.redrose2100.array;
public class Demo03 {
public static void main(String[] args) {
int nums[]={1,2,3,4,5,6,7,8,9,10};
printArray(nums);
int nums3[]=revert(nums);
printArray(nums3);
}
public static int[] revert(int[] arrays)
{
int[] results=new int[arrays.length];
for(int i=0,j=results.length-1;i<arrays.length;i++,j--)
{
results[j]=arrays[i];
}
return results;
}
public static void printArray(int[] arrays)
{
for(int i=0;i<arrays.length;i++)
{
System.out.print(arrays[i]+"\t");
}
System.out.println();
}
}
执行结果如下:
1 2 3 4 5 6 7 8 9 10
10 9 8 7 6 5 4 3 2 1
5、多维数组
多维数组的定义与使用
package com.redrose2100.array;
public class Demo04 {
public static void main(String[] args) {
int[][] arrays={{1,2,3,4},{2,3,4,5},{3,4,5,6},{4,5,6,7}};
for(int i=0;i<arrays.length;i++)
{
for(int j=0;j<arrays[i].length;j++)
{
System.out.print(arrays[i][j]+"\t");
}
System.out.println();
}
}
}
执行结果如下:
1 2 3 4
2 3 4 5
3 4 5 6
4 5 6 7