侧边栏壁纸
博主头像
coydone博主等级

记录学习,分享生活的个人站点

  • 累计撰写 306 篇文章
  • 累计创建 51 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

方法

coydone
2020-12-28 / 0 评论 / 0 点赞 / 378 阅读 / 1,761 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-05-01,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

代码块

语句块/代码块(有时叫做复合语句),是用花括号扩起的任意数量的简单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;
}
0

评论区