Java自学之数组

在Java中数组是一组相关变量的集合,属于引用数据类型。

定义

// 声明并开辟数组
数据类型 数组名称 [] = new 数据类型[长度];
数据类型 [] 数组名称 = new 数据类型[长度];
// 分布完成
// 声明数组
数据类型 数组名称 [] = null;
// 开辟数组
数组名称 = new 数据类型 [长度];
public class ArrayDemo {
	public static void main(String args[]) {
        // 动态初始化数组
		int data [] = new int [3];
		data[0] = 11;
		data[1] = 12;
		data[2] = 13;
		for (int x = 0; x < data.length; x++) {
			System.out.println(data[x] + "、");
		}
        // 静态初始化数组
        int data1[] = new int[] {11,12,13};
        for (int x = 0; x < data1.length; x++) {
			System.out.println(data1[x] + "、");
		}
	}
}

数组引用传递分析

数组属于引用数据类型,在数组使用时需要通过关键字new开辟堆内存空间,一块堆内存空间也可以同时被多个栈内存指向,进行引用数据操作。不能直接使用未开辟堆内存空间的数组。

foreach输出

class ArrayDemo {
	public static void main(String[] args) {
		int data[] = new int[] {11,12,13};
		for (int temp : data) {
			System.out.print(temp + "、");
		}
	}
}

二维数组

定义

// 动态初始化
数据类型 数组名称[][] = new 数据类型[行的个数][列的个数];
// 静态初始化
数据类型 数组名称[][] = new 数据类型[][] {{值,值,..},{值,值,..}}
class ArrayDemo {
	public static void main(String[] args) {
		int data[][] = new int[][] {{1,2,3,4,5},{6,7,8,9},{10,11,12,13}};
		for(int i = 0; i < data.length; i++){
			for (int j = 0; j < data[i].length; j++) {
				System.out.print("data[" + i + "][" + j + "] = " + data[i][j])
			}
			System.out.println();
		}
	}
}

数组排序

class ArrayUtil {
	/**
	* 数组排序处理
	* @param data 要排序的数组内容
	*/
	public static void sort(int data[]){
		for (int x = 0; x < data.length; x++) {
			for (int y = 0; y < data.length - x - 1; y++) {
				if (data[y] > data[y + 1]) {
					int temp = data[y];
					data[y] = data[y + 1];
					data[y + 1] = temp;
				}
			}
		}
	}
	public static void printArray(int temp[]) {
		for (int x = 0; x < temp.length; x++) {
			System.out.print(temp[x] + "、");
		}
		System.out.println();
	}
}
class ArrayDemo {
	public static void main(String[] args) {
		int data[] = new int[] {8,2,7,5,12,6,10,1,3,9};
		ArrayUtil.sort(data);
		ArrayUtil.printArray(data);
	}
}

方法可变参数

为了方便开发者可以更加灵活地定义方法,避免方法中参数的执行限制,所以Java提供了方法可变参数的支持,利用这一特点可以在方法调用时采用动态形式传递若干个参数数据,可变参数定义语法如下。

public [static] [final] 返回值类型 方法名称 (参数类型 ...变量) {
	[return [返回值];]
}

在进行方法参数定义的时候有了一些变化(参数类型 …变量),而这个时候的参数可以说就是数组形式,即:在可变参数中,虽然定义的形式不是数组,但却是按照数组方式进行操作的

class ArrayUtil {
	/**
	* 计算给定参数数据的累加结果
	* @param data 要进行累加的数据,采用可变参数,本质上属于数组
	* @return 返回累加结果
	*/
	public static int sum(int... data) {
		int sum = 0;
		for (int temp : data) {
			sum += temp;
		}
		return sum;
	}
}
class ArrayDemo {
	public static void main(String[] args) {
		System.out.println(ArrayUtil.sum(1,2,3));
		System.out.println(ArrayUtil.sum(new int[] {1,2,3}));
	}
}

混合参数

方法中可以接受普通参数和可变参数。两种参数一起使用时,可变参数一定要定义在最后,并且一个方法中只允许定义一个可变参数,普通参数必须传递,而可变参数可以根据需求传递。

class ArrayUtil {
	public static void sum(String name, String url, int... data) {
		...
	}
}

对象数组

在Java中所有的数据类型均可以定义为数组,即除了基本数据类型的数据定义为数组外,引用数据类型也可以定义数组,这样的数组就称为对象数组,对象数组的定义可以采用以下的形式完成。

// 对象数组动态初始化
类 对象数组名称 [] = new 类 [长度];
// 对象数组静态初始化
类 对象数组名称 [] = new 类 [] {实例化对象,实例化对象,...};
class Person {
	private String name;
	private int age;
	public Person(String name,int age){
		this.name = name;
		this.age = age;
	}
	public String getInfo(){
		return "姓名:" + this.name + "、年龄:" + this.age;
	}
}
class ArrayDemo {
	public static void main(String[] args) {
        // 动态初始化对象数组
		Person per[] = new Person[3];
		per[0] = new Person("刘备", 20);
		per[1] = new Person("关羽", 19);
		per[2] = new Person("张飞", 18);
		for (int x = 0; x < per.length; x++) {
			System.out.println(per[x].getInfo());
		}
        // 静态初始化对象数组
        Person per1[] = new Person[] {
            new Person("刘备", 20),new Person("关羽", 19),new Person("张飞", 18)
        }
        for (int x = 0; x < per.length; x++) {
			System.out.println(per1[x].getInfo());
		}
	}
}

原创文章,作者:ZERO,如若转载,请注明出处:https://www.edu24.cn/course/java/java-learn-array.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
ZEROZERO
上一篇 2020年11月25日
下一篇 2020年11月30日

相关推荐

  • Spring Boot的常用注解

    未来的框架趋势是“约定大于配置”,代码的封装会更加严密。开发人员会将更多的精力放在代码的整体优化和业务逻辑上,所以注解式编程会被更加广泛地使用。那么什么是注解?Spring Boo…

    2024年8月29日
    485
  • Java自学之类结构扩展

    面向对象中的核心组成是类与接口,在项目中会利用【包】进行一组相关类的管理,这样适合于程序代码的部分更新,也更加符合面向对象封装性的概念,同时合理地使用封装也可以方便地实现实例化对象…

    2020年12月10日
    1.4K
  • JAVA基础知识整理

    终于下定决心2020年转JAVA开发,自学之路坎坷曲折。俗话说的话,好记性不如烂笔头。如果有小伙伴们也像我一样在JAVA自学之路上徘徊,那就关注一下我的博客网站。我会不定期更新一下…

    2020年1月11日
    1.8K
  • spring4.x学习之用户登录与注册

    在之前的文章中我已经把后端工程项目创建好了,接下来就是编写项目了。 首先,我先创建一个数据库。数据库使用的是MySQL,数据库管理工具用的是Navicat。 打开数据库管理工具Na…

    2019年3月21日
    2.1K
  • Java自学之内部类

    内部类是一种常见的嵌套结构,利用这样的结构使得内部类可以与外部类共存,并且方便地进行私有操作的访问。 内部类基本概念 内部类(内部定义普通类、抽象类、接口的统称)是指一种嵌套的结构…

    2020年12月14日
    1.5K
  • servlet学习之获取表单数据(IDEA2020.2篇)

    首先,创建一个servlet工程。 如果你不会用IDEA2020.2创建servlet工程,请打开下面链接浏览网站博文。 https://www.edu24.cn/course/j…

    2020年9月8日
    1.5K
  • Java自学之异常的捕获与处理

    在程序开发中,程序的编译与运行是两个不同的阶段,编译主要针对的是语法检测,而在程序运行时却有可能出现各种各样的错误导致程序中断执行,那么这些错误在Java中统一称为异常。 异常处理…

    2020年12月11日
    1.5K
  • JAVA学习路线之夯实基础

    第一章 开发环境 JDK(Java SE Development Kit),Java标准版开发包,提供编译、运行Java程序所需的各种工具和资源,包括Java编译器、Java运行环…

    2020年1月14日
    1.7K
  • Java自学之抽象类与接口

    面向对象程序设计中,类继承的主要作用的扩充已有类的功能。子类可以根据自己的需要选择是否要覆写父类中的方法,所以一个设计完善的父类是无法对子类做出任何强制性的覆写约定。为了解决这样的…

    2020年12月7日
    1.3K
  • spring boot练习篇之用户登录系统【接入数据库】

    抛弃JSP,只做纯粹的前后端分离项目。 写在前面 学习基础知识是枯燥无味的,之所以会这样,多数是因为心不静,对于如何运用它,感到茫然。所以建议大家在学习Java基础知识的时候,一定…

    2021年5月28日
    1.3K

发表回复

登录后才能评论