一、数组

1.数组中存储元素的类型是统一的,每一个元素在内存中所占用的空间大小是相同的,知道数组的首元素的内存地址,要查找的元素只要知道下标,就可以快速的计算出偏移量,通过首元素内存地址加上偏移量,就可以快速计算出要查找元素的内存地址。通过内存地址快速定位该元素,所以数组查找元素的效率较高。

2.随机的对数组进行增删元素,当增加元素的时候,为了保证数组中元素在空间存储上是有序的,所以被添加元素位置后面的所有元素都要向后移动,删除元素也是,后面所有的元素要向前移动,所以数组的增删元素​效率很低。

3.​初始化一维数组,有两种方式:

(1)​静态初始化;(2)动态初始化​。

package com.bjpowernode.java_learning;

​

public class D66_1_ {

  public static void main(String[] args) {

    //静态初始化一个int类型的一维数组

    int[] a1 = {10,22,21};

    //取得第一个元素

    System.out.println("第一个元素:" + a1[0]);

    System.out.println("最后一个元素:" + a1[2]);

    System.out.println("最后一个元素:" + a1[a1.length-1]);

    //去的个数

    System.out.println("数组中的的元素个数为:"+a1.length);

    //遍历一维数组

    for(int i = 0;i<a1.length;i++) {

      System.out.println(a1[i]);

    }

    //将第二个元素改为100

    a1[1] = 100;

    System.out.println("===================");

    for(int i= 0;i<a1.length;i++) {

      System.out.println(a1[i]);

    }

  }

​

}

上面是使用静态初始化一维数组,下面演示动态初始化一维数组

    int[] a2 = new int[4];

    //引用类型的数组

    Object[] objs = new Object[3];

    for(int index=0;index<objs.length;index++) {

      Object o = objs[index];

      //o.toString();//注意空指针异常

      System.out.println(o);//null null null这里就没有出现空指针异常,这是因为pirintln

      //这个函数的源码里面对这种空指针做了筛选,可以见源码

下面看一下println的源码是如何处理这种空指针异常的

二、什么时候使用动态初始化,什么时候使用静态初始化

1.无论是动态初始化还是静态初始化,最终的内存分布都是一样的。

2.如果在创建数组的时候,知道数组中应该存储什么数据,这个时候当然采用静态初始​化方式。如果在创建数组的时候,无法预测到数组中存储什么数据,只是先开辟空间,​则使用动态初始化方式。

以下两种初始化方式都是可以的

int a3[] = {12,12,45};

int [] a3 = {12,12,45};

四、源码:

D66_ArryInitialMethods.java

https://github.com/ruigege66/Java/blob/master/D66_ArryInitialMethods.java2.CSDN:https://blog.csdn.net/weixin_44630050

3.博客园:https://www.cnblogs.com/ruigege0000/

4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料

Java连载66-数组的两种初始化方式的更多相关文章

  1. JAVA学习笔记-数组的三种初始化方式

      package Study; public class TestArray02 { public static void main(String[] args){//声明 int[] a; int ...

  2. Java使用SFTP和FTP两种连接方式实现对服务器的上传下载 【我改】

    []如何区分是需要使用SFTP还是FTP? []我觉得: 1.看是否已知私钥. SFTP 和 FTP 最主要的区别就是 SFTP 有私钥,也就是在创建连接对象时,SFTP 除了用户名和密码外还需要知道 ...

  3. Java中容器的两种初始化方式比较

    List,Set,Map的两种初始化赋值方式  List List<Integer> list2 = new ArrayList<Integer>(); for (int i= ...

  4. Java中匿名类的两种实现方式(转)

    使用匿名内部类课使代码更加简洁.紧凑,模块化程度更高.内部类能够访问外部内的一切成员变量和方法,包括私有的,而实现接口或继承类做不到.然而这个不是我说的重点,我说的很简单,就是匿名内部类的两种实现方式 ...

  5. 【转载】 Java中String类型的两种创建方式

    本文转载自 https://www.cnblogs.com/fguozhu/articles/2661055.html Java中String是一个特殊的包装类数据有两种创建形式: String s ...

  6. 自制Javascript分页插件,支持AJAX加载和URL带参跳转两种初始化方式,可用于同一页面的多个分页和不同页面的调用

    闲话部分 最近闲着实在无聊,就做了点小东西练练手,由于原来一直在用AspNetPager进行分页,而且也进行了深度的定制与原有系统整合的也不错,不过毕竟是用别人的,想着看自己能试着做出来不能,后台的分 ...

  7. Java里数组的三种初始化方式

    静态初始化 除了用new关键字来产生数组以外,还可以直接在定义数组的同时就为数组元素分配空间并赋值. // 静态初始化 int[] iStaticArr = { 5, 2, 0 }; LOLHero[ ...

  8. java框架篇---spring aop两种配置方式

    第一种:注解配置AOP 注解配置AOP(使用 AspectJ 类库实现的),大致分为三步: 1. 使用注解@Aspect来定义一个切面,在切面中定义切入点(@Pointcut),通知类型(@Befor ...

  9. 关于Java中excel表格导出的总结(Java程序导出模板和Java根据模板导出表格两种实现方式)

    导出excel通用模板(程序定义模板导出) 转载原文:https://www.jianshu.com/p/5c7b359a159c 如下代码,本方法主要用于程序定义模板格式,并导出文件.该方法将定义和 ...

随机推荐

  1. kuangbin专题 专题九 连通图 Network UVA - 315

    题目链接:https://vjudge.net/problem/UVA-315 题目:求割点. #include <iostream> #include <cstdio> #i ...

  2. 【StarUML】用例图

    用例图是在项目初期确认需求的时候,需要明确各个参与者之间的关系以及对应的功能,它可视化地展示了整个系统的功能以及功能之间.功能与参与者之间的关系. 1.元素 1.1 角色(actor) 角色不一定是人 ...

  3. pgspider http fdw http 相关的几个配置参数

    http 请求时间配置 session 级别的 set http.timeout_msec = 10000; SELECT http_set_curlopt('CURLOPT_TIMEOUT', '1 ...

  4. Platform device/driver注册过程

    Platform是一种虚拟总线,Platform机制将设备本身的资源注册进内核,有内核统一管理,在驱动程序使用这些资源时使用统一的接口,这样提高了程序的可移植性. Linux的大部分设备驱动都可以使用 ...

  5. LINUX 怎么实现root和普通用户的切换及怎么更改root密码

    在linux系统中执行什么命令后可以使$变为#?     先说下$和#在linux系统终端(命令行)中通常代表的什么:$打头的表示这不是在root用户(管理员用户)下执行的命令#打头的和前者相反,即r ...

  6. Sublime Text3搭建完美开发环境(Python+PHP+Javascript+nodejs+C++)

    一.Sublime配置(如已安装Package Control可跳过) sublime下载地址:http://www.sublimetext.com/3 安装Package Control插件: 直接 ...

  7. [C++]蛇形填数

    [从左下角开始,逆时针蛇形填数] #include <iostream> using namespace std; int main() { int n; cin>>n; in ...

  8. 疫情下的在线上课方案:QQ直播+蓝墨云班课

    目录 疫情下的在线上课方案:QQ群视频(腾讯课堂)+蓝墨云班课 使用QQ进行直播 材料 QQ直播步骤 其他问题 使用蓝墨云班课加强学习效果 教材问题 我的直播-小学生硬笔书法基础 我的直播 - C程序 ...

  9. Fluent_Python_Part2数据结构,03-dict-set,字典和集合

    字典和集合 dict和set都基于hash table实现 1. 大纲: 常见的字典方法 如何处理查找不到的键 标准库中dict类型的变种 set和fronzenset类型 Hash table的工作 ...

  10. spring data flow

    spring data flow相当于一个快速发布应用的平台.并可以通过消息队列(kafa,rabbitMQ)把多个应用链接在一起进行链式处理数据.支持的平台是: Cloud Foundry Apac ...