build project(清除缓存)
数组
数组:是一种用于存储多个相同类型数据的存储模型
数组定义格式
范例1:推荐使用
定义格式:数据类型[] 变量名
int[] aarr;
//含义,定义一个int类型的数组,数组名是arr
范例2:
数据类型 变量名[]
int arr[]
//含义:定义了一个int类型的变量,变量名是arr数组
数组动态初始化
-
数组初始化概述:Java中的数组必须先初始化,然后才能使用;初始化就是为数组中元素分配空间,并为每个元素赋值。
-
数组初始化方式:动态初始化,静态初始化
-
动态初始化:初始化时只指定数组长度,由系统为数组分配初始值
-
动态初始化格式:数据类型[] 变量名=new 数据类型[数组长度]
int arr=new int[3];
数组(数组也是对象)和对象都存放在堆空间,局部变量存放在栈空间
栈内存通过内存地址访问堆空间
静态初始化
int[] arr=new int[]{}
int[] arr={1};初始化,arr的长度为1
数组注意点
int[] arr={1,2,3,4,5,6}; int a=arr.length;// System.out.println(arr[--a]); //System.out.println(arr[--arr.length]);//不能使用--arr.length,因为length的值不能被我们改变
方法概述
方法(method)是将具有独立功能的代码块组织成一个整体,使其具有特殊功能的代码
- 方法必须先创建才能使用,该过程称为方法定义
- 方法创建后并不是直接可以运行,需要调用后才执行,该过程称为方法调用
执行方法是在栈中进行的
启动后,主方法进行压栈,然后,其他放啊压栈,其他方法执行完出栈,最后主方法出栈
方法的形参和实参
形参:方法中定义的参数
getMax(int a,int b)
实参:方法调用传递的数
getMax(10,20)
方法定义注意事项:
- 方法不能嵌套定义:方法是平级关系,不能嵌套定义
- void表示无返回值,可以省略return,也可以单独书写return,不加数据
方法的重载
方法重载指同一个类中定义的多个方法之间的关系,满足下列条件的多个方法,相互构成重载
1.多个方法在同一个类中
2.多个方法具有相同的方法名
3.多个方法的参数类型不同,类型不同或者数量不同
方法重载的特点
1.重载仅对应方法的定义,与方法的调用无关,调用方法参照标准格式
2.重载仅针对同一个类中的方法名称与参数进行识别,与返回值类型无关,换句话说不能通过返回值类型来判断两个方法是否重载(是否静态也无法判断)
参数传递基本数据类型
/**
*参数为基本数据类型
**/
public class CanShuChuanZhi {
public static void main(String[] args) {
int num=10;
System.out.println("调用方法前:"+num);//10
//传参时将实参的值赋给了形参
sum(num);
//num为实参
System.out.println("调用方法后:"+num);//10
}
public static int sum(int num){
//形参
num++;
return num;
}
}
//考点:形参的改变不会影响实参
参数传递引用类型
/**
*参数传引用
* 形参的变换会影响实参
**/
public class CanShuChuanYingYong {
public static void main(String[] args) {
int[] arr={10,20,30};//实参,数组也是引用
System.out.println("调用前"+arr[0]);//10
add(arr);
System.out.println("调用前"+arr[0]);//100
}
public static void add(int[] arr){//形参为引用传的是地址
arr[0]=100;
}
}
debug使用
F7:下一步(进方法)
F8:下一步(不进方法)
F9:跳到下一个断点
栈帧
条件判断
断点处右键
设置变量
回退断点
非debug、
清除断点
return和break
return:
从当前的方法中退出,返回到该调用的方法的语句处,继续执行;
返回一个值给调用该方法的语句,返回值数据类型必须与方法的声明中返回值的类型一致,可以使用强制类型转换来使数据类型一致;return当方法说明中用viod声明返回值为空时,应使用这种格式,不返回任何值。
break:
只能在循环体内和switch语句体内时使用:
当break出现在循环体中的switch语句体内时,其作用只是跳出该switch语句体
当break出现在循环体内,但并不在switch语句体内时,则在执行break后,跳出本层循环体
package NeiBuLei;
/**
*return使用
**/
public class Test {
public static void main(String[] args) {
sun();
System.out.println("我被执行了");//我被执行了 说明
}
public static void sun(){
//return在循环中,直接结束外层循环
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
System.out.println("执行次数:"+(j+1));//执行次数:1
return;
}
System.out.println("1");//这句没有被执行----> 说明return执行后直接跳到调用方法的地方,继续向后面执行
}
}
}
package NeiBuLei;
/**
*
**/
public class Test {
public static void main(String[] args) {
sun();
System.out.println("我被执行了");//我被执行了 说明
/**
* 执行结果
* 6
* 我被执行了
*/
}
public static void sun(){
int a=6;
switch (a){
case 1:
System.out.println("1");
break;
case 3:
System.out.println("3");
case 6:
System.out.println("6");
return;
/**
* return:结束本方法,执行该语句后跳到方法调用处,后面的语句都不会继续执行
*/
case 7:
System.out.println("7");
break;
default:
System.out.println("dd");
break;
}
}
}
原创文章,作者:3628473679,如若转载,请注明出处:https://blog.ytso.com/278330.html