数组的概念
是一种容器,可以同时存放多个数据值

数组的特点

  1. 数组是一种引用数据类型
  2. 数组当中的多个数据,类型必须统一
  3. 数组的长度在程序运行期间不可改变

数组的初始化
在内存当中创建一个数组,并且向其中赋予一些默认值

  1. 动态初始化(指定长度):在创建数组的时候,直接指定数组当中的数据元素个数
  2. 静态初始化(指定内容):在创建数组的时候,不直接指定数据个数的多少,而是直接将具体的数据内容进行指定。

注意事项:
虽然静态初始化没有直接告诉长度,但是根据大括号里面的元素具体内容,也可以自动推算出来长度。

动态初始化数组的格式
数据类型 [] 数组名称 = new 数据类型 [数组长度];
·左侧数据类型:数组当中保存的数据,全都是统一的类型
·左侧的中括号:代表一个数组
·左侧数组名称:给数组取一个名字
·右侧的new:代表创建数组的动作
·右侧的数据类型:必须和左侧的数据类型保持一致
·右侧中括号的长度:也就是数组当中可以保存多少个数据,是一个int数字

public class Demo{public static void main(String[] args){//创建一个数组里面可以存放300个int值数据int[] arrayA = new int[300];double[] arrayB = new double[10]String[] arrayC = new String[5];}
}
public class Demo{public static void main(String[] args){//直接创建一个数组,里面装的全部都是int数字int[] arrayA = new int[]{5,15,25,40};//直接创建一个数组,里面装的全部都是String类型String[] arrayB = new String[]{“Hello”,”World”,”Java”};}
}

详细格式:
数据类型 [] 数组名称 = new 数据类型 [] {元素1,元素2,。。。}

省略格式:
数据类型 [] 数组名称 = {元素1,元素2,… };

注意事项:

  1. 静态初始化标准格式可以拆分成为两个步骤
  2. 动态初始化也可以拆分成两个步骤
  3. 静态初始化一旦使用省略格式,就不能拆分成为两个步骤

使用建议:
如果不确定数组当中的具体内容,用动态初始化;
否则,已经确定了具体内容,用动态初始化。

public class Demo{public static void main(String[] args){//省略格式的静态初始化int[] arrayA = {10,20,30};//静态初始化的标准格式,可以拆分成两个步骤int[] arrayB;arrayB = new int{11,21,31};//动态初始化也可以拆分成两个步骤int[] arrayC;arrayC = new int[5];//静态初始化的省略格式,不能拆分成为两个步骤//int[] arrayD;//arrayD = {10,20,30};}
}

数组元素的获取
访问数组元素的格式:数组名称{索引值}
索引值:就是一个int数字,代表数组当中的元素编号
【注意】索引值从0开始,一直到“数组的长度”-1为止

public class Demo{public static void main(String[] args){int[] array = {10,20,30};System.out.println(array);System.out.println(array[0]);System.out.println(array[1]);System.out.println(array[2]);int num = array[1];}
}

使用动态初始化数组的时候,其中的元素将会自动拥有一个默认值,规则如下:
·如果是整数类型,默认值为0;
·浮点类型,0.0
·字符类型,‘\u0000’
·布尔类型,false
·引用类型,null

注意事项:
静态初始化其实也有默认值的过程,只不过系统自动马上将默认值替换成为了大括号当中的具体数值。

访问数组元素进行赋值

array[1] = 123

java中的内存划分

  1. 栈(Stack):存放的都是方法中的局部变量,方法的运行一定要在栈当中运行。
    局部变量:方法的参数,或者是方法{}内部的变量
    作用域:一旦超出作用域,立刻从栈内存当中消失

  2. 堆(Heap):凡是new出来的东西,都在堆当中
    堆内存里面的东西都有一个地址值:16进制
    堆内存里面的数据,都有默认值

  3. 方法区(Method Area):存储.class相关的信息,包含方法的信息

  4. 本地方法栈(Native Method Stack):与操作系统相关

  5. 寄存器(pc Register):与CPU相关。

所有的引用类型变量,都可以赋值为一个null值,但是代表其中什么都没有

数组必须进行new初始化才能使用其中的元素
如果只是赋值了一个null,没有进行new创建,
那么将会发生空指针异常(NullPointerException)

**获取数组的长度,格式:
数组名称.length

这将会得到一个int数字,代表数组长度
数组一旦创建,程序运行期间,长度不可改变

public class Demo{public static void main(String[] args){int[] arrayA = new int[3];int[] arrayB = {10,20,30,3,5,6,7,8,9,65}int len = arrayB.length;System.out.println(“arrayB数组的长度是:”+ len);int[] arrayC = new int[3];System.out.println(arrayC.length);arrayC = new int[5];System.out.println(arrayC.length);

数组可以作为方法的参数。
当调用方法的时候,向方法的小括号进行传参,传递进去的实际是数组的地址值

一个方法可以有0、1、多个参数,但是只能有0或者1个返回值,不能有多个返回值
如果希望一个方法当中产生了多个结果数据进行返回,需要使用数组作为返回值类型。

任何数据类型都能作为方法的参数类型,或者返回值类型

数组作为方法的参数,传递进去的其实是数组的地址值
数组作为方法的返回值,返回的其实也是数组的地址值。

public class Demo{public static void main(String[] args){int[] result = calculate(a:10,b:20,c:30);System.out.println(“总数:”+ result[0]);System.out.println(“平均数:”+ result[1]);public static int[] calculate(int a,int b, int c){int sum = a + b + c;int avg = sum / 3;}int[] array = {sum , avg};System.out.println(“caculate方法内部数组是:”);System.out.println(array);return array;}
}

Java学习笔记_数组相关推荐

  1. JAVA学习笔记_银行账户系统

    大家好,我是一枚JAVA学习的小白,初次来到SCND还请多多指教!!!! 最近上编程课学习都挺晚的,没时间逛论坛了,今天休息正好也赶上线上,所以来发点学习笔记,一起讨论学习.(看我这个标点符号就知道我 ...

  2. Java学习笔记_类和对象

    ·类:是一组相关属性和行为的集合,可以看成是一类事务的模板,使用事物的属性特征和行为特征来描述该类事物. ·属性:该事物的状态信息 ·行为:就是该事物能够做什么 ·对象:一类事物的具体体现,对象是类的 ...

  3. 马士兵 java 学习笔记_马士兵java教程笔记1

    ---恢复内容开始--- 前记 虽然已经是个研究生了,但是会的东西还是特别的少 甚至连java都不能说是很会 所以准备从现在开始能好好的学习java 变成java master 标识符 标识符是由字母 ...

  4. Java学习笔记七——数组工具类Arrays

    数组工具类Arrays Java提供的Arrays类里包含的一些static修饰的方法可以直接操作数组.若将里面的方法用熟的话,那开发效率会大大提高.下面介绍其中的方法. List<T> ...

  5. Java学习笔记_字符串/静态static

    字符串的特点 字符串的内容永不可变 正是因为字符串不可改变,所以字符串是可以共享使用的 字符串效果上相当于是char[]字符数组,但是底层原理是byte[]字节数组 创建字符串的常见3+1种方式 三种 ...

  6. Java学习笔记_匿名/ArrayList

    引用类型的一般使用步骤: 导包 import 包路径.类名称 如果需要使用的目标类,和当前类位于同一个包下,则可以省略导包语句不写 只有java.lang包下的内容不需要导包,其它的包都需要impor ...

  7. java学习笔记之数组

    数组是一种效率最高的存储和随机访问对象引用序列的方式,一旦初始化完成,数组长度将不能变,但可以改变其引用,如: int a[]={1,2}; int b[]={1,2,3,4,5}; a=b; 如果输 ...

  8. Java学习笔记_抽象/接口

    抽象方法:就是加上abstract关键字,然后去掉大括号,直接分号结束 抽象类:抽象方法所在的类,必须是抽象类.在class前面写上abstract 如何使用抽象类和抽象方法 不能直接创建new抽象类 ...

  9. Java学习笔记_继承

    继承的格式 在继承关系中,"子类就是一个父类".也就是说,子类可以被当作父类看待 例如父类是员工,子类是讲师,那么"讲师就是一个员工" 定义父类的格式:(一个普 ...

最新文章

  1. rest-framework之解析器
  2. MYSQL 双主搭建
  3. Android呼叫开发系列WebService
  4. golang 函数结束后 goroutine退出机制
  5. ubuntu16.04 彻底卸载MySQL
  6. 1、tomcat目录及端口规划实践
  7. 历经十年,Windows 7 生命周期将结束,微软:快换 Windows 10
  8. STM32学习第二课:STM32c语言基础2
  9. e.target+addEventListener事件委托
  10. 归并排序(数组指针详细讲解,图例分析)
  11. 51 nod 1439 互质对(Moblus容斥)
  12. SQL Server数据库查询优化【转】
  13. 网易云音乐歌词下载 C#
  14. 来篇完整的,小说接着更,为博客园早日开小说板块努力
  15. 徐荣谦《养好脾和肺 宝宝不积食不咳嗽长大个》【00】 序
  16. 如何使用手机将图片改成JPG格式?教你一招解决
  17. lstm对时间数据的预测作用(多变量对多变量预测)
  18. 多大密西沙加计算机科学与技术,多伦多大学第二大校区——密西沙加校区专业及双录取介绍...
  19. ui设计师css和html,27个HTML5和CSS3的网站设计欣赏
  20. 中龍鸿业安全稳定必学的盘口言语有哪些?什么是盘口言语?

热门文章

  1. windows 10下的kiosk模式
  2. Android开发之Java和Kotlin混合开发互相跳转报错的问题
  3. Android开发之设置Edittext小数点后两位以及限制位数同时使用
  4. 在保护继承中基类的共有成员_C++学习大纲:继承方式的调整
  5. eclipse配置代码提示
  6. 最全Kafka 设计与原理详解【2017.9全新】
  7. 浪潮I9000革新传统刀片 解决基础架构统一难题
  8. 2017中国新型智慧城市创新50强在京发布
  9. RabbitMQ -- Hello world
  10. hibernate hql limit的实现方式