栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

2021.11.10 Java 数组

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2021.11.10 Java 数组

数组
数组存放在堆内存中,是引用数据类型,只能存放Java对象的内存地址。

·优点:查找某个下标上的元素效率极高
1.数组以第一个元素内存地址已知
2.数组上每个内存地址是连续的
3.数组中每个元素所占空间大小是一样的
4.知道下标,所以知道偏移量,就能够算出指定下表内存地址
所以数组是查找效率最高的数据结构
(数组中存储100个元素和100W个元素检索效率是相同的,数组中不会一个一个找,是通过数学表达式算出来然后直接定位)
·缺点:
1.由于为了保证每个元素的内存地址连续,所以在数组上随机删除或增加元素效率较低,因为会涉及到后面元素同一向前向后位移的操作。(对最后一个元素增删,没有效率影响)
2.数组不能存储大数据量,很难在内存空间上找到特别大的连续内存空间

声明一维数组语法:
int[] arrary1;
double[] arrary2;
boolean[] array3;
String[] array4;
Object[] array5;
初始化一维数组:
·静态初始化
int[] array={100,200,330}
·动态初始化一维数组:
int[] array= new int[5]; //5表示元素个数,默认值为0

第一个元素 a[0],最后一个元素a[a.length-1]
遍历一位数:
for(int i=0;i++;i
System.out.println(a[i]);
}

数组下标越界异常:ArrayIndexOutOfBoundsException

静态初始化:
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()};

定义 输出数组:

 public class Test {
    public static void main(String[] args) {

            int[] a={1,2,3};
            print(a);
            System.out.println("===================");
            int[] b=new int[3];
            print(b);
            System.out.println("===================");
            print(new int[3]);
            print(new int[]{1,2,3});
        }


    public static void print(int[] array){
        for(int i =0;i 

数组的多态使用

public class Test {
    public static void main(String[] args) {
        Animal[] animals= new Animal[2];
        Cat c= new Cat();
        Bird b =new Bird();
        animals[0]=c;
        animals[1]=b;
        for(int i=0;i< animals.length;i++){
            animals[i].eat();
            //调用子类中特有方法,需要向下转型
            if(animals[i] instanceof Cat){
                Cat cat=(Cat) animals[i];
                cat.Climb();
            }else if(animals[i] instanceof Bird){
                Bird bird=(Bird) animals[i];
                bird.fly();
            }
        }
        System.out.println("1111");
    }
}

class Animal{
    public void eat(){
        System.out.println("动物吃...");
    }
}
class Bird extends Animal {
    public void eat(){
        System.out.println("鸟儿在吃虫子");
    }
    public void fly(){
        System.out.println("鸟在飞");
    }
}
class Cat extends Animal {
    public void eat(){
        System.out.println("猫在吃鱼");
    }
    public void Climb(){
        System.out.println("猫在爬");
    }
}

数组扩容
java中对数组的扩容:先新建一个大的数组,将小的数组一个一个拷贝到大的数组中,效率低。
System.arraycopy();
5个参数:1.源 2.源位置 3.目标 4.目标位置 5.拷贝长度

int[] src= {0,1,2};
        int[] dest= new int[20];
        System.arraycopy(src,1,dest,2,2);
        for(int i=0;i< dest.length;i++){
            System.out.println(dest[i]);
        }

二维数组
二维数组是特殊的一维数组
int[][] a= {{100,200,300}{30,20,40,50,60}{6,7,9,1}{0}}

取出第二个数组中的第三个元素:a[1][2];

二维数组遍历:

for(int i=0;i 

合并简化后代码:

for(int i=0;i 

动态初始化二维数组

将一个变量塞到一个字符串当中,口诀:(加一个双引号,双引号中间加两个加号,两个加号中间加变量名。)

Arrays工具类
Arrays.sort(arr);
可以将数组arr从小到大排序。

工具类直接在idea中按两次Shift来查找 或使用帮助手册来开发
java.util.Arrays工具类
所有方法都是静态的,直接用类名调用
主要使用:二分法查找

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/459074.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号