@javaSE
前言
随行笔记02
一、循环语句
1.for循环
for(int i=1 ;i<=5;i++){
System.out.println(i);
}
2.while 循环
- while
int i=1;
while(i<=5){
System.out.println(i);
i++;
}
- do…while
//1.初始化语句
int i=1;
//2. do - while
do{
System.out.println(i);//循环体
i++;
}while(i<6);
特点:不管循环条是否成立,一定执行一次
3.加强 for 循环
int[] arr = new int[5];
for (int i : arr) {
System.out.println(i);//i 数组中元素
}
4.死循环
1. for(;;){
}
2. while(true){ //最常用
}
3. do{
}while(true);
5. 流程控制语句
-
continue :跳过本次循环,继续下一次循环。
-
break: 直接结束当前循环
public class Demo{
public static void main(String[] args){
//用循环打印 偶数
for(int i = 0;i<10;i++){
//判断i是否是奇数,如果是就跳过当次循环
if(i%2!=0){
continue;//跳过本次循环,继续下一次循环
}
System.out.println(i);
}
System.out.println("===========");
//打印数字到5就结束循环
for(int i = 0;i<10;i++){
System.out.println(i);
if(i==5){
break;//结束循环
}
}
System.out.println("继续执行~~");
}
}
6. 循环嵌套,九九乘法表
public class Demo {
public static void main(String[] args){
for(int j=1;j<=9;j++){
for(int i=1 ;i<=j ;i++){
System.out.print(i+"x"+j+"="+ i*j+"\t");
}
System.out.println();//换行
}
}
}
二、IDEA 快捷键
三、数组
1.数组的定义及格式
数组是一种容器,可以用来存储多个同类型的数据。
格式一:数据类型[] 变量名
int[] arr1
格式二:数据类型 变量名[]
int arr2[]
2. 数组的初始化, 元素访问
-
动态初始化
数据类型[] 变量名 = new 数据类型[长度];
int[] arr = new int [5]; -
静态初始化
完整格式:
数据类型[] arr = new 数据类型[]{数据1,数据2,…};
简化格式:
数据类型[] arr = {数据1,数据2,…}; -
数组的索引从0开始 方式:数组名[索引];
3. 数组常见异常,数组遍历
- 索引越界异常 ArrayIndexOutOfBoundsException
public class ArrayDemo {
public static void main(String[] args) {
int[] arr = new int[3];
System.out.println(arr[3]);//有效的索引范围 [0,长度-1]
}
}
- 空指针异常 NullPointerException
public class ArrayDemo {
public static void main(String[] args) {
int[] arr = new int[3];
arr = null; //把原来的地址清空赋值为nul
System.out.println(arr[0]);
}
}
- 数组的遍历
//数组名.fori 自增遍历
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
System.out.println("===============");
//数组名.forr 自减遍历
for (int i = arr.length - 1; i >= 0; i--) {
System.out.println(arr[i]);
}
遍历可以用来求数组最值,数组求和, 数组元素查找
4. java 内存分配
区域名称 作用
寄存器 给CPU使用,和我们开发无关。
本地方法栈 JVM在使用操作系统功能的时候使用,和我们开发无关。
方法区 存储可以运行的class文件。
堆内存 存储对象或者数组,new来创建的,都存储在堆内存。
方法栈 方法运行时使用的内存,比如main方法运行,进入方法栈中执行。
四、方法
1. 方法概述、形参、实参
- 方法就是具有独立功能的一个代码块
- 方法定义后需要调用才能执行
- 方法可以提高代码的复用性,减少代码的冗余
- 形参:方法定义中的参数
- 实参:方法调用中的参数
2. 方法的定义及使用
- 无参无返回值方法定义和使用
public static void 方法名(){
//方法体
}
方法名(); //调用
- 有参无返回值方法的定义和使用
public static void 方法名(形参列表){
//方法体
}
方法名(实参); //调用
- 带有返回值的方法定义和使用
public static 返回值类型 方法名(参数列表){
//xxx
//功能逻辑执行
//xxx
return 返回值; //返回值数据类型要和返回值类型一样,如果能够自动转换为返回值类型也是可以的。
}
类型 变量 = 方法名(); //无参有返回值
类型 变量 = 方法名(参数);//有参有返回值
可以不接收变量
- 方法的通用定义格式
修饰符 返回值类型 方法名(参数列表){
//方法体
//如果方法的返回值类型不是void,需要返回结果一定要return语句
return 结果;
}
3.方法的重载
概念:同一个类中多个方法,同名不同参
特点:
- 同名:方法名一样
- 不同参:顺序不一样,类型不一样,个数不一样,与返回值无关
public static boolean compare(byte b1, int b2) {
return b1 == b2;
}
public static boolean compare(int b1, byte b2) {
return b1 == b2;
}
public static boolean compare(int b1, int b2) {
return b1 == b2;
}
public static boolean compare(short b1, short b2, short b3) {
return b1 == b2 || b2 == b3;
}
4.方法的参数传递特点及注意事项
-
方法的形参类型是基本数据类型:
如果方法中对形参做了改变,不会对实参有影响。调用方法时只是实参把值赋值给形参而已。在不同的方法中实参和形参的位置(地址)不一样。
-
方法的形参类型是引用数据类型:
如果方法中对形参做了改变,会对实参有影响。调用方法时是把实参的地址值赋值给形参。实参和形参对应的数据实体地址一样的,在不同的方法中具有相同地址的数据,本质上是同一个数据。
-
方法不能嵌套定义。
-
方法的返回值为void,表示方法没有返回值,没有返回值的方法可以省略return语句不写,如果要写return,后面不能跟具体的数据。
-
return语句下面不能编写代码,以为永远执行不到,属于无效代码,编译报错。