Bootstrap

入门到入土,java学习day4(数组,方法)

数组

数组指的是一种容器,可以用来存储同种数据类型的多个值

定义,如何创建一个数组

1.数据类型[] 数组名

2.数据类型 数组名[]

初始化:在内存中,为数组容器开辟空间,并将数据存入容器中的过程

静态初始化

1.类型[] 变量名 = new 类型[]{元素1,元素2...}

2.类型[] 变量名 = {元素1,元素2...}

动态初始化

类型[] 变量名 = new 类型[长度]

数组的地址值

表示数组在内存中的位置,实际的值存储在一个地址中

打印出来的乱码,看似是乱码其实有含义

[:表示是一个数组

D:表示是double类型

@:表示一个间隔符号固定格式

后面的数字就是数组真正的地址值十六进制

数组访问

数组名[索引];指的就是数组中对应位置的值

索引:也叫做下表,角标;特点从0开始,逐个+1增长,连续不间断

当你改变值时,会覆盖原数据

数组遍历

遍历就是将数组中的所有内容取出来,可以打印,求和,判断等

遍历时我们需要用到数组长度属性,数组名.length

idea中更简便的,数组名. fori相当于是快捷键,可以快速创建for循环

要注意索引的值,从0开始,防止访问不存在的索引,引发索引越界异常

数组内存图

了解数组内存的原理,首先要了解java的内存是怎么分配的

首先java内存分配:栈,堆,方法区,本地方法栈,寄存器

这里要注意一下的是JDK8开始,取消方法区,新增元空间,把原来方法区的多种功能进行拆分,有的功能放到了堆中,有的功能放到了元空间中

栈,方法运行时使用的内存,比如main方法运行,进入方法栈中执行

堆,存储对象或者数组,new来创建的,都存储在堆内存,有地址值

方法区,存储可以运行的class文件

本地方法栈,JVM在使用操作系统功能的时候使用,和开发无关

寄存器,给CPU使用,和开发无关

了解完这写我们就可以举一个场景例子,创建一个数组并初始化,然后方法结束

 int[] intArray = {1, 2, 3, 4, 5};

左边是方法在栈中,然后右边是数组在堆中,然后其实是将一个地址传给左边,这个时候修改之类的操作其实是将地址中的值修改,而不会影响地址。

方法

方法是程序中最小的执行单元,提高复用性和可维护性,因为在日常的编程中随着问题变得复杂,这个时候可能很多时候会用同一流程,有的代码会重复出现很多次,这个时候如果我们能将这段代码提出然后独立成方法,然后要用直接调用就能省很多力气。

格式

public static 返回值类型 方法名(参数){

方法体;

return 返回值;

}

打包和调用

方法的定义:把一些代码打包在一起

调用:手动调用执行

无参,有参,有返回值调用

格式中的区别就是,返回值没有就是void有的话是什么类型就写什么,参数就是需要传入什么参数,就写几个和什么类型,返回值有就return没有就不写。

然后我们还要了解一下形参和实参的概念,

形参和实参

形参:方法定义中的参数

实参:方法调用中的参数

但是很多时候我们会发现同样的方法,可能有时候需要输入的参数有区别,比如说同样是将数字相加,可能有时候输入时整数,有时候有小数,所以我们需要同名的方法可以有不同的调用,这里就需要说重载。

重载

在同一个类中,定义了多个同名得方法,这些同名得方法具有同种得功能

不同的参数类型或参数个数,与返回值无关

数据类型

基本数据类型:整数类型,浮点数类型,布尔类型,字符类型

变量中存储的是真实的数据

引用数据类型:除了基本都是

变量中存储的是地址值

引用:使用了其他空间中的数据

值传递

传递基本数据类型时,传递的是真实的数据,形参的改变,不影响实际参数的值

传递引用数据类型时,传递的是地址值,形参的改变,影响实际参数的值

快捷方式:ctrl +alt +m自动抽取方法

练习

1.求最值

就是一个循环,从数组的第一个开始,开始和后面比大小,然后留下大的继续循环比较得到最值,最小的同理

2.遍历求和

也是一个循环,定义一个sum用来求和

3.交换数据

在这个时候需要两个下标索引,来进行交换,两个下标一个从左往右一个从右往左然后交换

4.拷贝数组

遍历的时候,创建新数组来存数据,然后调用打印出来

;