跳转控制语句
break中断
使用场景:
1、在选择结构switch语句中
2、在循环语句中
3、离开使用场景的存在是没有意义的
作用:
1、跳出单层循环(单个用是跳出单层循环)
2、跳出多层循环(带标签的跳出可以跳出多层循环)
//cj是自定义的层级,即标签 cj:for(int i=0;i<5,i++){ for(int j=0,j<i,j++){ System.out.print("*"); if(i=3){ break cj; } } System.out.println(); } //执行结果就是当i=3的时候直接跳出cj所在的循环,即跳出多层循环
continue继续
使用场景:
1、在循环语句中
2、离开使用场景的存在是没有意义的
作用:
跳出当前所执行的循环,开始下一个循环
注:也可以带标签的使用
return返回
return关键字不是为了跳转出循环体,更常用的功能是结束一个方法,也就是退出一个方法。跳转到上层调用的方法。即结束当前方法
方法概述
定义:
完成特定方法的代码块
格式:
修饰符 返回值类型 方法名(数据类型 变量名,,,){ 方法体; return 返回值; }
解释说明:
1、修饰符比较多,后面会详细介绍,比如public static
2、返回值类型用于限定返回值的数据类型
3、方法名,一个名称,为了方便我们调用方法
4、参数类型,限定调用方法时传入参数的数据类型
5、参数名是一个变量,接收调用方法时传入的参数
6、方法体,完成功能的代码
7、return 结束方法以及返回方法指定类型的值
8、返回值,程序被return带回的结果,返回给调用者
注意事项:
1、方法不调用不执行
2、方法与方法是平级关系,不能嵌套定义
3、方法定义的时候参数之间用逗号隔开
4、方法调用的时候不用在传递数据类型
5、如果方法有明确的返回值,一定要有return带回一个值
方法重载
概述:
在同一个类中,允许存在一个以上的同名方法,只要他们的参数个数或者参数类型不同即可
特点:
1、与返回值类型无关,只看方法名和参数列表
2、在调用时,虚拟机通过参数列表的不同在区分同名方法
数组概念
定义:
1、数组是存储同一种数据类型多个元素的集合。也可以看成是一种容器
2、数组既可以存储基本数据类型,也可以存储引用数据类型
格式:
数据类型[] 数组名;
初始化:
概述:
1、java数组必须先进行初始化之后才能使用
2、所谓初始化就是为数组中的数组元素分配内存空间,并未每个数组元荤赋值
3、数组为每个元素都分配了索引,从0开始,最大是长度-1,
初始化方式:
动态初始化
初始化时只指定数组长度,由系统为数组分配初始值
例:int[] arr = new arr[10];
静态初始化
初始化时指定每个数组元素的初始值,由系统决定数组长度
例:int[] arr = new int[]{1,2,3,4,5};
注意:一定不能同时进行动态初始化和静态初始化,意思就是不能在给定数组长度的同时给出元素
Java中的内存分配
java程序在运行中,需要在内存中的分配空间。为了提高运算效率,就对空间进行有区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式
栈
存储局部变量(方法定义中或者方法声明上的所有变量,使用完毕,立刻消失)
堆
存储new出来的对象,实体(每一个实体都有首地址值,每一个实体内的数据都有默认值)
byte,short,int,long 0(默认值)
float,double 0.0
char ‘\u0000’
boolean false
引用类型 null
方法区(面向对象的时候写)
本地方法区(系统相关)
寄存器(与CPU相关)
因此由上可知,数组名存储的只是数组在堆里的内存空间的地址,因此,直接输出数组名会得到一串地址,而如果想要获取数组元素需加上索引
数组常见问题
数组索引越界
ArrayIndexOutOfBoundsException
访问到了数组中的不存在的索引时发生
空指针异常
NullPointerException
数组引用没有指引实体,却在操作实体中的元素