方法
方法概述
格式:
public static 返回值类型 方法名称(参数类型 参数名称){ 方法体; return 返回值; }
方法名称的命名规则和变量一样,使用小驼峰。
注意事项
-
方法定义的先后顺序无所谓
-
方法的定义不能产生嵌套包含关系
-
方法定义好了之后,不会执行。如果要想执行,一定要进行方法的调用
调用格式:方法名称();
方法调用
三种调用格式:
-
单独调用:方法名称(参数);
-
打印调用:System.out.println(方法名称 (参数));
-
赋值调用:数据类型 变量名称 = 方法名称 (参数);
方法有无返回值对比
对于有返回值的方法,可以单独调用、打印调用和赋值调用
但是对于无返回值的方法,只能使用单独调用
使用方法的注意事项
-
如果方法有返回值,那么必须写上”return 返回值;“,不能没有
-
return后面的返回值数据,必须和方法的返回值类型对应起来
-
对于void方法没有返回值,不能写return后面的返回值,只能写return自己
-
对于void方法当中最后一行的return可以不写
-
一个方法当中可以有多个return语句,但是必须保证同时只有一个会被执行到,两个return不能连写
方法的重载
多个方法名称一样,但参数列表不一样
好处:只需要记住唯一一个方法名称,就可以实现类似的多个功能
相关因素
-
参数个数不同
-
参数类型不同
-
参数的多类型顺序不同
无关因素
-
参数名称
-
方法的返回值类型
流程控制语句
主要有判断语句(if)、选择语句(switch)、循环语句(while、do_while、for)
switch语句注意事项
-
多个case后面的数值不可以重复
-
switch后面小括号中只能是下列数据类型:
基本数据类型:byte/short/char/int
引用数据类型:String字符串、enum枚举
扩展:死循环
死循环: 也就是循环中的条件永远为true,死循环的是永不结束的循环。在后期的开发中,会出现使用死循环的场景,例如:我们需要读取用户输入的输入,但是用户输入多少数据我们并不清楚,也只能使用死循环,当用户不想输入数据了,就可以结束循环了,如何去结束一个死循环呢,就需要使用到跳出语句了。
Java中的内存划分
5个部分:
1.栈(Stack) :存放的都是方法中的局部变量。方法的运行一定要在栈当中运行。 局部变量:方法的参数,或者是方法0内部的变量 作用域:一旦超出作用域,立刻从栈内存当中消失。
2.堆(Heap) :凡是new出来的东西,都在堆当中。 堆内存里面的东西都有一个地址值:16进制 堆内存里面的数据,都有默认值。 3.方法区(Method Area) :存储.class相关信息,包含方法的信息。 4.本地方法栈(Native Method Stack) :与操作系统相关。 5.寄存器(pc Register) : 与CPU相关。
数组
数组概念: 数组就是存储数据长度固定的容器,保证多个数据的数据类型要一致。
特点:
-
是一种引用数据类型
-
数组当中多个数据,类型必须统一
-
数组的长度在程序运行期间不可改变
初始化
-
动态初始化(指定长度)
-
静态初始化(指定内容)
动态初始化
格式:
数据类型 [] 数组名称 = new 数据类型[数组长度];
静态初始化
格式:
数据类型[] 数组名称 = new 数据类型[] {元素1, 元素2}; 数据类型[] 数组名称 = {元素1,元素2};//省略格式
注意事项
-
静态初始化没有直接指定长度,但仍会自动推算得到长度
-
静态初始化标准格式/动态初始化可拆分为两个步骤
int [] array; array = new int [] {11, 12, 13}; / new int [5];
-
静态初始化省略格式不能拆分
访问数组元素
格式:数组名[索引]
索引值从0开始,一直到”数组长度 - 1“为止
直接打印数组名称得到的是与其对应的内存地址哈希值
使用动态初始化数组时,其中元素会自动拥有一个默认值,规则如下:
整数类型 | 0 |
---|---|
浮点类型 | 0.0 |
字符类型 | '\u0000' |
布尔类型 | false |
引用类型 | null |
数组在内存中的存储
一个数组的内存图
两个独立数组的内存图
两个引用指向同一个数组的内存图