代码块
语句块/代码块(有时叫做复合语句),是用花括号扩起的任意数量的简单Java语句。块确定了局部变量的作用域。块中的程序代码,作为一个整体,是要被一起执行的。块可以被嵌套在另一个块中,但是不能在两个嵌套的块内声明同名的变量。语句块可以使用外部的变量,而外部不能使用语句块中定义的变量,因为语句块中定义的变量作用域只限于语句块。
int a;
{
int a = 1;
}
1、普通代码块,在方法中写的代码块,一般用于限制作用域。
2、构造块,是在类中定义的代码块,在创建对象时被调用,优于构造方法执行。
3、在类中使用static声明的代码块称为静态代码块。在第一次使用的时候被调用(创建对象),只执行一次,优于构造块执行。我们在项目开发中,通常会使用静态代码块来初始化只调用一次的数据。
4、同步代码块,与多线程相关。
方法定义
现实生活中完成某件事的步骤我们叫方法。
Java中,方法是一段能完成独立功能的代码块。方法又被称为函数(function)。我们只需要写一次方法,可以被多次调用,提高了代码的复用性。函数都是在栈内存中运行;运行的函数处在栈顶。
语法:
修饰符 返回值类型[void] 方法名([数据类型 变量名,数据类型1 变量名1,...]) {
//方法体
[return 结果值];
}
说明:
-
修饰符:可以是访问修饰符,也可以说是函数修饰符(abstract、final、 static、synchronized),还可以是两者的组合。
-
返回值类型[void]:方法给调用者返回的数据类型,如果方法没有返回值,我们就使用void。
-
方法名:见名之意,使用驼峰模式来规范方法名:xxxYyyZzz
-
参数列表:方法的参数可有可无,参数列表中可以有多个参数,先指定参数数据类型,再指定参数的变量名,多个参数用逗号分隔。
-
return:在方法有返回值的情况,返回的具体数据。main方法属于一个特殊的方法,被虚拟机调用执行main中的语句。
方法定义一般规律
1、什么时候定义方法的形参?
当方法中需要的数据是变化的值,我们一般在方法的形参上定义变量。当方法中没有变化的数据,我们可以把方法定义为空参。
2、什么时候定义方法的返回值?
当方法中有计算结果,而我们也需要调用这个方法的时候获得这个运算结果。
方法的调用(使用)
调用格式:方法名(实参列表)
;(实参就是具体的数值)。
注意:
-
方法定义在类中和其它方法并列,不能方法套方法。
-
方法形参上定义的变量也是局部变量。(只在该方法内有效)
-
可以直接打印有返回值的方法。
-
调用方法传参的时候支持类型的自动提升。
-
实参:方法在调用时实际输入的参数值,不包括数据类型。
-
形参:方法在定义的时候的参数名,包括参数的数据类型和参数名。
-
静态方法(static修饰的方法)只能调用静态方法。
-
如果在本类调用本类的其它静态方法,可以直接调用,不需要用
类名.静态方法名(实参)
;如果在本类调用其它类的静态方法,必须采用其它方法的类名.静态方法名(实参)
; -
参数的传递:基本数据类型(值传递),引用数据类型(内存地址值)。
-
当调用方法时,如果传入的数值为基本数据类型(包含String类型),形式参数的改变不影响实际参数。
-
当调用方法时,如果传入的数值为引用数据类型(不包含String类型),形式参数的改变影响实际参数。
JVM内存划分
栈:当方法被调用的时候会入栈,方法中的局部变量就会存在栈中。
堆:存new出来的东西,数组对象。
int a = 10;和int b = 19;
中的a,b叫做实参,compareNum()方法参数列表中的a和b是形参,这两个a和b的地址是不同的。只不过是通过值传递的方式放实参的值传递给形参,所以参数列表中的数据类型必须匹配,变量名可以随意。
注意:当前语句块中return语句下不能再有代码。如果返回值类型是void就不需要return语句。
方法的重载(overload)
在同一个类中函数(方法)名字相同,参数列表不一样(参数个数不一样,或者对应索引位类型不一样,顺序不一样)的两个方法是重载关系,跟返回值一点关系没有。
目的:为了节约方法的功能命名和提高代码的可读性。
public static int add(int a, int b){
return a+b;
}
public static double add(int a, double b){
return a+b;
}
评论区