Java教程

day.8

本文主要是介绍day.8,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1.一维数组

定义:是相同类型数据的有序集合,描述的是相同类型的若干个数据,按照一定先后次序排列组合而成,其中,每个数据称为一个数组元素,每个数组元素可以通过一个下标来访问它们。(必须先声明才能使用,或者声明的时候已经创建好了)(声明的时候数组并不在,只有创建的时候才存在)

#声明语法:

dataType[]arrayRefVar;//首选方法

dataType arrayRefVar[];//效果相同,但是不首选

#用new操作符来创建(声明创建同时):

dataType []arrayRefVar=new dataType[arraySize];

数组的元素是通过索引访问的,从0开始索引。

#获取数组的长度:

array.length

int []arr=new int[10];
for (int i = 0; i < arr.length; i++) {
    arr[i]=i;//赋值每个元素,没有赋值的话就按初始值算
}
for (int i = 0; i < arr.length; i++) {
    System.out.println(arr[i]);
}//循环输出每个元素
int sum=0;//定义总和
for (int i = 0; i <arr.length ; i++) {
    sum+=arr[i];//循环计算总和
}

#数组的四个基本特点

其长度是确定的,数组一旦被建立,它的大小就是不可改变的。

其元素必须是相同类型,不允许出现混合类型。

数组中的元素可以是任何数据类型,包括基本类型和引用类型。

数组变量属于引用类型,数组也可以看成是对象,数组的每个元素相当于该对象的成员变量。

数组本身就是对象,java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型。

数组对象本身是在堆中的。

#数组小结:

数组是相同数据类型的(数据类型可以为任意类型)有序集合

数组也是对象。数组元素相当于对象的成员变量。

数组长度是确定的,不可变的。如果越界,则会报错。

2.内存分析

堆:存放new的对象跟数组,可以被所有的线程共享,不会存放别的对象引用

栈:存放基本变量类型(会包含这个基本类型的具体数值),引用对象的变量(会存放这个引用在堆里面的具体地址)

方法区:可以被所以的线程共享,包含了所有的class和static变量

3.数组的三种初始化

#静态初始化:

int []a={1,2,3,4,55};
System.out.println(a[0]);
Man []mans={new Man(),new Man()};//引用类来创建数组(对象数组)

#动态初始化:

int [] b=new int[4];
b[0]=1;

#数组的默认初始化

数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也会被按照实例变量同样的方法被隐式初始化(变为默认值)

4.数组使用

#for-each循环

for (int i : a) {//没有下标
    System.out.println(i);
}

#数组作方法入参

public static void printArray(int []arr){//打印数组元素
    for (int i = 0; i <arr.length ; i++) {
        System.out.println(arr[i]+" ");

    }
}

#数组作为返回值

public static int[] reverse(int []arr){//反转数组元素
    int [] result=new int[arr.length];

    for (int i = 0,j=result.length-1; i <arr.length ; i++,j--) {//反转操作
        result[j]=arr[i];
    }
    return result;
}
int []reverse=reverse(a);//利用一个同类型的新数组接受反转后的数组
printArray(reverse);//(数组作为实参传入)打印数组

这篇关于day.8的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!