JAVA基础知识——方法、变量
3.2方法
3.2.1什么是方法?
- 方法的定义:解决一类问题中代码的有序组合方法,是一个功能模板,也就是将很多行代码放置在一组 {} 中,形成一个代码块。
3.2.2为什么需要使用方法?
- 提高代码的复用性
- 提高后期代码的扩展性、延展性
- 提高代码后期的维护性
- 案例:
//计算一个圆柱的表面积
import java.util.Scanner;
public class Method01{
static final double PI=3.14;
public static void main(String[] args){
Scanner input=new Scanner(System.in);
System.out.println("请输入圆的半径");
int r=input.nextInt();
System.out.println("请输入圆柱高度");
int height=input.nextInt();
double area=getArea(r,height);
System.out.println("半径是"+r+",高为"+height+"的圆柱体的表面积是:"+area);
}
public static double getArea(int r,int height){
double circleArea=getCircleArea(r);
double circleRe=getCircleRe(r);
double area=circleArea*2+circleRe*height;
return area;
}
public static double getCircleRe(int r){
double ret=2*PI*r;
return ret;
}
public static double getCircleArea(int r){
double area=PI*r*r;
return area;
}
}
3.2.3方法的基本格式
- 基本格式:访问修饰符 void|访问值类型 方法名(参数列表){
方法体;
}
public static void method(){
System.out.println("这是我的第一个方法");
}
1、访问修饰符(例如:public):方法允许访问的权限范围;
2、访问值类型:可以有返回值类型来决定。
3、方法名:需要遵守标识符规则:由字母、下划线、 符 号 开 头 , 以 字 母 、 下 划 线 、 符号开头,以字母、下划线、 符号开头,以字母、下划线、、数字结尾,千万不能用数字开头写标识符;
遵守驼峰原则:方法名不止一个单词组成时,第一个单词首字母小写,其后第二、三个等单词首字母大写。
4、参数列表(分为四种):
(1)无参无返回值方法;
(2)有参无返回值方法;
(3)无参有返回值方法;
(4)有参有返回值方法;
注意:对于java中的方法参数传递,无论传递的是原生数据类型,还是引用类型,统一传值。
5、方法体:包含具体的语句,定义该方法的功能。
3.2.4方法的使用
- 在main方法中通过方法的名称进行调用
public class Method02{
public static void main(String[] args){
//告诉jvm去执行method方法
method();
}
public static void method(){
System.out.println("我的第一个方法");
}
}
3.2.5参数列表的使用
i.无参无返回值方法
public class Method03{
public static void main(String[] args){
add();
}
public staic void add(){
int num1=20;
int num2=10;
int sum=num1+num2;
System.out.println("加的和是:"+sum);
}
}
- 发现问题,上述代码只能对于20和30进行累加计算,无法计算任意的两个数相加,该方法的复用性不强,借助参数列表来完成
ii.有参无返回值方法
public class Mathod04{
public static void main(String[] args){
String n="教室";
add(n);
}
public static void add(String a){
System.out.println("我在"+a+"努力学习");
}
}
iii.无参有返回值方法
- (此案例是关于类和对象,了解即可,后续会讲)
public class Mathod05{
public static void main(String[] args){
Add a=new Add();
System.out.println(a.toString());
}
class Add{
static String name="小明";
static int age=23;
public String toString(){
return "我的姓名"+name+"年龄"+age;
}
}
vi.有参有返回值方法
//计算一个圆柱的表面积
import java.util.Scanner;
public class Method01{
static final double PI=3.14;
public static void main(String[] args){
Scanner input=new Scanner(System.in);
System.out.println("请输入圆的半径");
int r=input.nextInt();
System.out.println("请输入圆柱高度");
int height=input.nextInt();
double area=getArea(r,height);
System.out.println("半径是"+r+",高为"+height+"的圆柱体的表面积是:"+area);
}
public static double getArea(int r,int height){
double circleArea=getCircleArea(r);
double circleRe=getCircleRe(r);
double area=circleArea*2+circleRe*height;
return area;
}
public static double getCircleRe(int r){
double ret=2*PI*r;
return ret;
}
public static double getCircleArea(int r){
double area=PI*r*r;
return area;
}
}
v.返回值
//计算一个圆柱的表面积
public class Method06{
public static void main(String[] args){
int r=10;//1:
double area=getCircleArea(r);
}
public static double getCircleArea(int r){
double pi=3.14;
double area=pi*r*r;
System.out.println("半径"+r+"的圆的面积是:"+area);
return area;
}
}
-
void:方法没有返回值,数据类型:方法中有返回值
-
一个方法存在返回值,该方法的最后一行代码一定是return语句,return返回的是具体的数值
-
返回的数据的具体是什么类型,方法就用该类型去接收
-
在main方法中,在调用完成某个具有返回值的方法之后,可以通过该值的类型的变量接收该值
-
参数列表注意事项:
- 在方法声明中的参数列表称之为形式参数,也叫形参
- 参数列表中可以声明0个或者是多个不同类型的参数,用逗号隔开
- 对于调用者而言,调用时,通过方法名传入的具体的参数的值称之为实际参数,也叫实参
- 方法声明的参数列表中变量只存在声明不需要初始化就可以使用,原因是由于该方法被调用之后,一定用实际参数进行赋值,赋值给形式参数。
- 方法调用者而言。在调用方法时不能只看方法名称,而且还需要查看方法的参数列表,只有这样才可以正确调用到需要被调用的方法。
- 在一个类中确定方法通过方法签名完成。方法签名(方法名称+参数列表)
- 对于参数列表而言,具体的参数类型、个数、顺序都有一定的要求,要求取决于业务逻辑。
3.3变量的分类
3.3.1变量的三要素
-
数据类型、变量名、生命周期(作用范围)
-
对于数据类型和变量的基本知识,我在之前的博客已经发了,可以通过这个地址搜索我的博客浏览:
https://blog.csdn.net/QZP51ZX/article/details/101481273
-
按照变量的位置不同,将变量分类为:局部变量、成员变量(全局变量、对象变量、实例变量)
-
3.3.2变量分类
i.局部变量
- 定义在方法中或者是代码块中的变量,称之为局部变量
- 局部变量的生命周期只能在声明的 {} 中有效,出了当前的{}就失效。
- 方法的参数列表中的变量属于当前方法的局部变量。
- 代码块是通过一组大括号括起来{}代码块,也分为:局部代码块、初始化块、静态代码块。局部代码块:声明在方法中的代码块。局部代码块中声明的变量只能在当前局部代码块中有效。
- 局部代码块的优势:
- 1:缩减了变量的生命周期。
- 2:提高内存的使用率,降低内存开销
- 局部代码块的优势:
public class Test01{
public static void main(String[] args){
int num1=10;//方法中的局部变量
System.out.println("main"+num);
{
int num2=10;//代码块中的局部变量
System.out.println("代码块"+num);
}
System.out.println("访问代码块"+num2);//无法访问
}
}
ii.成员变量
- 声明在类中,方法外的变量称之为成员变量
public class Test02{
static int num=20;
public static void main(String args){
System.out.print("访问1"+num);//方法一:通过static修饰
int num = 20;
System.out.println("访问2:"+num);//访问的是上面的num=20
Test02 t=new Test02();
System.out.println(t.rt);//方法二:通过创建对象来调用
}
public static void method(){
System.out.println(num);
}
}
- 成员变量可以不初始化就能够直接使用,因为有默认值
成员变量类型 | 默认值 |
---|---|
byte | 0 |
short | 0 |
int | 0 |
long | 0L |
float | 0.0F |
double | 0.0D |
char | ‘U\0000’ |
string | null |
总结表:
变量的分类 | 声明的位置 | 作用范围 | 注意事项 |
---|---|---|---|
局部变量 | 声明在方法中或者是代码块中,方法参数列表中的变量也是局部变量 | 当前声明的{}中有效 | 生命周期 变量一定要声明并赋值再使用 |
成员变量 | 声明在类中,方法外的变量 | 当前类中都有效 | 生命周期 变量一定要声明,但不需要初始化,每个不同类型的变量都存在默认的初始值 在本类调用时成员变量时,要么将当前的成员变量前加static修饰,要么通过创建类的所属对象,通过对象来访问 |