您的位置 首页 > 数码极客

javaaction如何接收数组

感谢大家的支持,你们的支持就是我的动力,如果对您有所帮助,请转发并收藏,谢谢!

数组是一种非常常见的数据结构,在Java中,数组属于引用型数据,所以在数组的操作过程中,也一定会牵扯到内存的分析问题。

一、数组的基本概念

数组的定义格式如下:

1.数组动态初始化:

数据类型 数组名称 [] = new 数组类型 [长度];

数据类型 [] 数据名称 = new 数组类型 [长度];

范例一:

public class TestDemo{

public static void main(String args[]){

int data [] = new int [3]; //开辟3个空间的数组

data[0] = 10; //为数组赋值

data[1] = 20; //为数组赋值

data[2] = 30; //为数组赋值

for(int x = 0 ; x < da ; x++){ //循环输出数组内容

Sy(data[x]+"、");

}

}

}

范例一内存分析:

为数组进行内存分配及操作流程和对象操作几乎是一样的,只不过对象之中保存的是属性,而在数组之中保存的是各个索引元素的数值。


2.分布完成

声明数组:

数据类型 数组名称 [] = null; ----只有声明的时候加上“[]”

开辟数组:

数据名称 = new 数据类型 [长度];

范例二:

public class TestDemo{

public static void main(String args[]){

int data [] = null; //只有声明的时候加上“[]”

data = new int [3]; //开辟3个空间的数组“[]”

data[0] = 10; //为数组赋值

data[1] = 20; //为数组赋值

data[2] = 30; //为数组赋值

for(int x = 0 ; x<da ; x++){

Sy(data[x]+"、");

}

}

}

范例二内存分析:


3.数组的静态初始化

简写格式:

数据类型 数据名称 [] = {值,值,…};

数据类型 [] 数据名称 = {值,值,…};

完整格式(推荐使用):

数据类型 数组名称 [] = new 数据类型 [] {值,值,…};

数据类型 [] 数组名称 = new 数据类型 []{值,值,…};

范例三:

public class TestDemo{

public static void main(String args[]){

int data[] = new int [] {209,201,2,2,3,6,7}; //数组的静态初始化

for(int x = 0 ; x< da ; x++){ //循环输出数组

Sy(data[x]+",");

}

}

}


二、数组的引用传递

范例四:

public class TestDemo{

public static void main(String args[]){

int data [] = new int [3]; //开辟3个空间的数组

data[0] = 10; //为数组赋值

data[1] = 20; //为数组赋值

data[2] = 30; //为数组赋值

int temp [] = data ; //引用操作, 只有声明的时候加上“[]”

temp[0] = 100; //修改内容

for(int x = 0 ; x<da ; x++){

Sy(data[x]+"、");

}

}

}

范例四内存分析:


三、数组与方法

既然数组内容可以进行引用传递,那么就可以把数组作为方法中的参数,而如果一个方法要想接收参数,则对应的参数类型必须是数组

1.使用方法接收数组

范例五:

public class TestDemo{

public static void main(String args[]){

int data[] = new int[] {209,201,2,2,3,6,7}; //静态初始化

print(data); //引用传递, 相当于int temp [] = data;

}

public static void print(int temp[]){ //接收数组

for (int x = 0 ; x < ; x++){ //循环输出

Sy(temp[x]+",");

}

}

}

范例五内存分析:


2.判断某一个数据是否在指定的数组之中(定义在方法实现)

范例六:

public class TestDemo{

public static void main(String args[]){

int data[] = new int[]{209,201,2,2,3,6,7};

int searchData = 3; //要查找的内容

if (isExists(data,searchData)){ //为true

Syln("已经查找到了内容");

}else{

Syln("没有找到内容");

}

}

public static boolean isExists(int temp [] ,int search){ //是否存在

for (int x = 0 ; x < ; x++){

if(temp[x] == search){

return true; //查找到了,循环结束

}

}

return false; //没有查找到

}

}

以上程序,只是完成了方法接收数组的操作,却并没有在方法中对数组的内容进行修改,而由于是引用传递,方法也可以对数组进行修改的。

在方法里修改数组的内容

范例七:

public class TestDemo{

public static void main(String args[]){

int data [] = new int []{1,2,3,4,5}; //5个元素

inc(data); //数组之中的每一个元素扩大两倍

print(data); //打印数组

}

public static void inc(int temp[]){ //接收数组

for (int x = 0 ;x< ; x++){

temp[x] *= 2; //扩大数据 ,相当于temp[x] = temp[x] * 2

}

}

public static void print(int temp[]){

for(int x = 0 ; x< ; x++){

Sy(temp[x]+",");

}

Syln();

}

}

范例七内存分析:



四、数组排序的操作(冒泡算法)

范例八:

public class TestDemo{

public static void main(String args[]){

int data [] = new int[] {1,3,2,6,10,0,5,8}; //原始数组

sort(data); //排序方法

print(data); //输出数组

}

public static void sort(int temp[]){

for(int x = 0 ; x<; x++){ //控制排序次数

for(int y = 0 ; y< -1 ; y++){ //排序数组,-1是防止数组超出范围

if(temp[y]>temp[y+1]){ //后面的数据小

int t = temp[y]; //交换数据

temp[y] = temp[y+1]; //交换数据

temp[y+1] = t; //交换数据

}

}

}

}

public static void print(int temp[]){

for(int x = 0 ; x< ;x++){

Sy(temp[x]+",");

}

Syln();

}

}


五、与数组相关的操作方法

1.数组排序:

可以按照由小到大的顺序对基本数据类型的数组(如 int数组、double数组都未基本类型数组)进行排序,操作语法为(java.u(数据名称))

范例九:

//数组排序

public class TestDemo{

public static void main(String args[]){

int data[] = new int[]{1,3,2,6,10,0,5,8}; //定义数组

java.u(data); //数组排序

print(data);

}

public static void print(int temp[]){

for(int x :temp){

Sy(x+",");

}

}

}

2.数组拷贝:

从一个数组之中拷贝部分内容到另一个数组之中,方法为Sy(源数组名称,源数组开始点,目标数组名称,目标数组开始点,拷贝长度)

范例十:

//数组拷贝

public class TestDemo{

public static void main(String args[]){

int dataA[] = new int[]{1,2,3,4,5,6,7,8,9}; //数组1

int dataB[] = new int[]{11,22,33,44,55,66,77,88,99}; //数组2

Sy(dataB,5,dataA,2,3); //数组拷贝

print(dataA); //输出

}

public static void print(int temp[]){

for(int x = 0 ; x < ; x++){

Sy(temp[x]+",");

}

Syln();

}

}


六、二维数组

1.数组的定义格式如下:

动态初始化:

数据类型数据名称[][] = new数组名称[行数][列数];

int[][] arr = new int[3][5];---定义了一个整型的二维数组,其中包含3个一维数组,每个一维数组可以存储5个整数

arr[0];---下标为0的位置上的一维数组

arr[1][3];---如果要获取具体的元素需要两个下标

int[][] arr = new int[3][];----表示一个包含了3个整型的一维数组的二维数组(这句话好好理解)

静态初始化:

数据类型数据名称[][] = new数组名称[][]{{值,值,…},{值,值,…},{值,值,…},…}

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

注意:[]在变量名前的时候,是紧跟数据类型的;如果[]在后,则是属于当前变量名。


2.二维数组的应用

二维数组的长度:数组名.length

每个一维数组:数组名[下标].length

二维数组的遍历---两重for循环

for(int i = 0; i < arr.length; i++){ //遍历二维数组,遍历出来的每一个元素是一个一维数组

for(int j = 0; j < arr[i].length; j++){ //遍历对应位置上的一维数组

Syln(arr[i][j]);

}

}

二维数组的反转---头尾交换

for(int start = 0, end = arr.length -1; start < end; start++,end--){

int[] temp = arr[start];

arr[start] = arr[end];

arr[end] = temp;

}


七、对象数组(重点)

之前所讲解的全部数组,都属于基本数据类型的数组,但是如果现在想要表达出多个对象,那么就需要对象数组的概念,而对象数组的定义格式和之前是完全一样的,只要把数据类型换成类即可。

对象数组的动态初始化:

类名称对象数组名称= new类名称[长度];

范例十一:

//对象数组的动态初始化

class Person{

private String name;

private int age;

public Person(String n, int a){

name = n;

age = a;

}

public String getInfo(){

return "姓名:"+name+",年龄:"+age;

}

}

public class TestDemo{

public static void main(String args[]){

Person per[] = new Person[3]; //对象数组

per[0] = new Person("沐兮沐楚A",20); //实例化对象

per[1] = new Person("沐兮沐楚B",21); //实例化对象

per[2] = new Person("沐兮沐楚C",22); //实例化对象

for(int x = 0 ;x<;x++){ //循环输出

Syln(per[x].getInfo());

}

}

}


对象数组的静态初始化:

类名称对象数组名称= new类名称[]{实例化对象,实例化对象,…};

范例十二:

class Person{

private String name;

private int age;

public Person(String n,int a){

name = n;

age = a;

}

public String getInfo(){

return "姓名:"+name+",年龄:"+age;

}

}

public class TestDemo{

public static void main(String args[]){

Person per[] = new Person[]{

new Person("沐兮沐楚A",20),new Person("沐兮沐楚B",30),new Person("沐兮沐楚C",20)};//对象数组

for(int x = 0; x<; x++){ //循环输出

Syln(per[x].getInfo());

}

}

}

感谢大家的支持,你们的支持就是我的动力,如果对您有所帮助,请转发并收藏,谢谢!

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“javaaction如何接收数组”边界阅读