Java学习笔记:数组
发布日期:2021-05-18 06:48:08 浏览次数:20 分类:精选文章

本文共 3947 字,大约阅读时间需要 13 分钟。

数组:

1,Java语言中的数组是一种引用类型,不属于基本数据类型,数组的父类是Object。
2,数组实际上是一个容器,可以同时容纳多个元素。(数组是一个数据的集合。)
数组:字面意思是“一组数据”;
3,数组当中可以存储基本数据类型的数据,也可以存储引用数据类型的数据。
4,数组因为是引用类型,所以数组对象是堆内存当中。
5,数组当中如果存储的是“java对象”的话,实际上存储的是对象的“引用(内存地址)”
在这里插入图片描述
6,数组一旦创建,在Java中规定,长度不可变。
7,数组分类:一维数组,二维数组。。。
8,所有数组对象都有Lenth属性,用来获取数组中的元素个数。
9,java中数组要求元素类型统一。比如int类型数组只能存储int类型。
10,数组在内存中存储的元素内存地址是连续的。
11,所有的数组都是利用栈中的内存地址作为整个数组对象的内存地址。
(栈中的内存地址是每个数组对象的地址)
12,数组中每一个元素都是有下标的,下标从0开始,以1递增。
13,数组这种数据结构的优点和缺点是什么?
优点:可以通过下标和存储类型计算出具体元素位置,检索效率高。
缺点:数组在随机删,增元素操作时效率低,因为需要移动大量元素,并且数组无法存储大数据量,无法存储不同类型元素数据。
14,怎么声明/定义一个一维数组?
语法格式:

int[ ] array1;

double[ ] array2;
boolean[ ] array3;
String[ ] array4;
Object[ ] array5;

15,怎样初始化一个一维数组呢?

包括两种方式:静态初始化一维数组,动态初始化一维数组。
静态初始化语法格式:

int[ ] array = (100, 2100, 300, 55);

动态初始化语法格式:

int[ ] array = new int[5];//表示5个元素类型为int元素个数,默认值为0

String[ ] name = new String[6];//表示6个元素类型为String元素个数,默认值为null

public class Arraytest01 {       public static void main(String[] args){          //静态初始化       int[] a = {   1, 100, 10, 20, 55, 689};       String[] a = {   "sds", "sss"};       //动态初始化       Object[] o = new Object[3];       //存储Object,采用静态初始化       Object o1 = new Object();       Object o2 = new Object();       Object o3 = new Object();       Object[] objects = {   o1, o2, o3};           //与以下等同       Object[] objects = {   new Object(), new Object(), new Object()};    }}

16,通过方法使用数组

public class ShuZhu {       public static void main(String[] args){           int[] a = {   1,23,4,5};        PrintArray(a);        String[] m = {   "213", "22", "33", "44"};        PrintArray(m);        PrintArray(new int[4]);        String[] d = new String[4];        PrintArray(d);    }    public static void PrintArray(int[] array){           for(int i=0; i

17,main方法上面的“String[ ] args” 有什么用?

分析以下:谁负责调用main方法(JVM)
JVM调用main方法的时候,会自动传一个String数组过来。

public class Shuzhu {       public static void main(String[] args){          //JVM默认传递过来的这个数组对象的长度?默认为0.        System.out.println("JVM给传递过来的String数组参数,它这个数组的长度是?"+args.length);        //这个数组什么时候有值呢?       //其实这个数组是留给用户的,用户可以在控制台上输入参数,这个参数自动被转换为“String[] args”       //例如这样运行程序 :java ShuZhu abc def xyz       //那么这个时候JVM会自动将“abc def xys”通过空格的方式进行分离,分离完成之后,自动放到“String[] args”       //所以main方法上面的String[] args 数组主要是用来接收用户输入参数的。       //把abc def xyz 转换成字符串数组:{“abc”,“def”,“xyz”};        for(int i=0; i

模拟一个系统,假设这个系统要使用,必须输入用户名和密码。

public class ShuZhu {       //用户名和密码输入String[] args数组当中.    public static void main(String[] args){           if(args.length!=2){               System.out.println("使用该系统时请输入程序参数,参数中包括用户名和密码信息,例如:zhang 123");            return;        }        //程序执行到此处说明用户确实提供了用户名和密码。        //接下来你应该判断用户名和密码是否正确。        //取出用户名        String username = args[0];        //取出密码        String password = args[1];        //假设用户名是admin ,密码是123的时候表示登录成功。其他一律失败。        //判断两个字符串是否相等,需要使用equals方法。        if("admin".equals(username)&&"123".equals(password) ){               System.out.println("登录成功,欢迎["+username+"]回来");            System.out.println("使用该系统...");        }else{               System.out.println("验证失败,用户名不存在或者密码错误 !");        }    }}

使用idea,点击中run下的edit configurations选项,在program arguments中输入需要传入agrs数组中的数据(用户名和密码),显示以下结果。

在这里插入图片描述

18,数组中存储引用类型数据

在不同类中,应该注意Animal[ ] 与 Animal 类型的区别。

public class ShuZhu {       public static void main(String[] args){            Animal a1 = new Animal();         Animal a2 = new Animal();         Animal[] a = {   a1, a2};         for(int i=0; i

调用对象特有方法的话,需要向下转型!!!

public class ShuZhu {       public static void main(String[] args){            Animal a1 = new Cat();         Animal a2 = new Bird();         Animal[] a = {   a1, a2};         for(int i=0; i

19,数组的扩容

数组满了,需要扩容,java先创建一个大容量的数组,然后一个一个将原来的数组元素拷贝入大数组中。

public class ShuZhu {       public static void main(String[] args){           //拷贝源        int[] src = {   1, 2, 3};       //拷贝目标        int[] dest = new int[6];       //从src数组第1号元素拷贝到dest数组中3号位置,长度为2        System.arraycopy(src, 1, dest, 3, 2);        for(int i=0; i
上一篇:KMP和BF模式匹配算法
下一篇:JAVA学习笔记:内部类

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年04月28日 07时46分04秒