一、数组
数组,用来存储同种数据类型的多个值。
1.数组的静态初始化
(1)初始化
初始化是指在定义变量、数组、对象的时候进行赋值。
(2)静态
静态是指在定义变量、数组、对象的时候,数据是静止的、确定的。
(3)静态初始化
在创建数组时,直接给数组赋值。
//格式
数据类型 数组名[] = new 数据类型[]{数据值,数据值...};
//简写格式
数据类型 数组名[] = {数据值,数据值...};
(4)特点
①数组在内存中是连续的空间;
②数组一旦定义完毕,长度是不可以改变的。
2.数组的元素访问
(1)索引
索引就是数组的一个编号,也叫做:角标、下标、编号;从0开始,不间断。
(2)元素的获取和修改
//获取格式
变量 = 数组名[索引];
//修改格式
数组名[索引] = 数据值;
3.数组的遍历
数组的遍历常使用for循环。
*在Java中,可以用数组名.length来获取数组长度。
*遍历数组的快速生成方式:数组名.fori+回车。
4.数组的动态初始化
(1)动态
动态是指在定义变量、数组、对象时,数据时不确定的。
(2)初始化
创建数组的时候,直接给数组赋值。
(3)动态初始化
在Java中,动态初始化指在创建数组时指定长度,由系统分配默认的初始值。
| 数据类型 | 默认值 |
| 整型 | 0 |
| 浮点数 | 0.0 |
| 字符 | \u0000(空格) |
| 布尔 | false |
| 引用 | null |
//格式
数据类型 数组名[] = new 数据类型[长度];
5.数组的常见问题
(1)数组索引越界
数组索引最小为0,最大为数组长度-1,若超出数组索引范围,则会报错。
二、方法
程序中的独立功能,也是最小的执行单元。
1.应用场景及好处
(1)使用场景
将经常使用的代码包装起来放在方法中。
(2)好处
提高代码的复用性和可维护性。
2.方法的格式
//定义格式 public static 返回值类型 方法名(参数1,参数2...){ 方法体; return 返回值; } //调用格式 方法名(参数1,参数2...);3.方法的重载
同一个类中定义了多个重名的方法,这些方法具有类似的功能,每个方法具有不同的参数类型和参数个数,这些重名的方法就构成了重载关系。
理解:同一个类,方法名相同,参数不同(个数、类型、顺序),无需看返回值。
4.注意事项
(1)实参和形参
方法调用时的参数是实参,方法定义中的参数为形参。实参要和形参一一对应。
(2)return
结束方法运行,并将结果返回方法的调用处。
(3)定义方法
①将反复使用的独立功能包装成方法;
②参数是实现方法所需的数据;
③返回值由方法调用处是否需要返回值,需要什么返回值决定。
(4)方法调用
①方法不调用就不执行;
②方法与方法之间是平级关系,不能嵌套定义;
③调用方法会优先调用实参和形参一一对应的方法,如果没有会进行隐式转换;如果存在多种方法的隐式转换的次数一样,程序则会报错。
(5)void
如果没有返回值,可以省略return不写;如果不省略,return后面不能写具体数据,仅表示结束方法。
二、Java原理
1.Java的运行机制
.java后缀文件通过编译生成.class为后缀的字节码文件再运行。Java运行是在Java虚拟机里面完成的。借助不同的虚拟机可以实现跨平台。
(1)内存
软件在运行时,用来临时存储数据。
(2)内存地址
①在32位的操作系统,内存地址以32位的二进制表示;
②在64位的操作系统,内存地址以64位的二进制表示,系统显示为十六进制。
③方便快速管理内存空间。
2.Java内存分配规则
(1)栈内存
每个线程都有自己独立的栈,目前只要考虑一个即可,方法被调用进栈执行,执行完毕出栈。
(2)堆内存
所有线程共享,存储对象、数组、字符串常量池。用new关键字创建的。
(3)方法区
存储字节码信息。
(4)本地方法栈
调用本地Native方法。
(5)程序计数器
每个线程独立、记录当前线程执行的字节码指令地址(行号)。
(6)基本数据类型
变量里面记录的是真实的数据,传递的也是真实的数据。
(7)引用数据类型
变量里面记录的是地址,通过地址在堆里找到对应的数据。传递的也是内存的地址。