Java成员变量和成员方法

成员变量

成员变量是指类的一些属性定义,标志类的静态特征,它的基本格式如下:
     访问修饰符 修饰符 类型 属性名称=初始值;
  • 访问修饰符:可以使用四种不同的访问修饰符中的一种,包括public(公共的)、protected(受保护的),无修饰符和 private(私有的)。public 访问修饰符表示属性可以从任何其它代码调用。private 表示属性只可以由该类中的其它方法来调用。protected 将在以后的课程中讨论。
  • 修饰符:是对属性特性的描述,例如后面会学习到的:static、final 等等。
  • 类型:属性的数据类型,可以是任意的类型。
  • 属性名称:任何合法标识符
  • 初始值:赋值给属性的初始值。如果不设置,那么会自动进行初始化,基本类型使用缺省值,对象类型自动初始化为 null。

成员变量有时候也被称为属性、实例变量、域,它们经常被互换使用。

成员方法

成员方法就是对象所具有的动态功能。Java 类中方法的声明采用以下格式:
     访问修饰符 修饰符 返回值类型 方法名称 (参数列表) throws 异常列表 {方法体}
  • 访问修饰符 : 可以使用四种不同的访问修饰符中的一种,包括public、 protected、无修饰符和 private。public 访问修饰符表示方法可以从任何其它代码调用。private表示方法只可以由该类中的其它方法来调用。protected 将在以后的课程中讨论。
  • 修饰符:是对方法特性的描述,例如后面会学习到的:static、final、abstract、synchronized 等等。
  • 返回值类型:表示方法返回值的类型。如果方法不返回任何值,它必须声明为 void(空)。Java 技术对返回值是很严格的,例如,如果声明某方法返回一个int值,那么方法必须从所有可能的返回路径中返回一个int值(只能在等待返回该 int 值的上下文中被调用。)
  • 方法名称:可以是任何合法标识符,并带有用已经使用的名称为基础的某些限制条件。
  • 参数列表:允许将参数值传递到方法中。列举的元素由逗号分开,而每一个元素包含一个类型和一个标识符。在下面的方法中只有一个形式参数,用 int 类型和标识符 days 来声明:
        public void test(int days){}
  • throws 异常列表:子句导致一个运行时错误(异常)被报告到调用的方法中,以便以合适的方式处理它。异常在后面的课程中介绍。
  • 花括号内是方法体,即方法的具体语句序列。

示例:比如现在有一个“车”的类——Car,“车”具有一些基本的属性,比如四个轮子,一个方向盘,车的品牌等等。当然,车也具有自己的功能,也就是方法,比如车能够“开动”——run。
要想车子能够开动,需要给车子添加汽油,也就是说,需要为run方法传递一些参数“油”进去。
车子就可以跑起来,这些油可以供行驶多少公里?就需要run方法具有返回值“行驶里程数”。

package net.weixueyuan.www.javatest;
public class Car {// 车这个类
    private String make;// 一个车的品牌
    private int tyre;// 一个车具有轮胎的个数
    private int wheel;// 一个车具有方向盘的个数
    public Car() {
        // 初始化属性
        make = "BMW";// 车的品牌是宝马
        tyre = 4;// 一个车具有4个轮胎
        wheel = 1;// 一个车具有一个方向盘
    }
    /**
    * 车这个对象所具有的功能,能够开动
    *
    * @param oil 为车辆加汽油的数量
    * @return 车辆行驶的公里数
    */
    public double run(int oil) {
        // 进行具体的功能处理
        return 100*oil/8;
    }
    public static void main(String[] args){
        Car c=new Car();
        double mileage=c.run(100);
        System.out.println("行驶了 "+mileage+" 公里");
    }
}
main方法是一个特殊的方法,如果按照public static void main(String[] args)的格式写,它就是一个类的入口方法,也叫主函数。当这个类被java指令执行的时候,首先执行的是main方法,如果一个类没有入口方法,就不能使用java指令执行它,但可以通过其他的方法调用它。

这里,注意一下形参和实参的区别:
  • 形参:就是形式参数的意思。是在定义方法名的时候使用的参数,用来标识方法接收的参数类型,在调用该方法时传入。
  • 实参:就是实际参数的意思。是在调用方法时传递给该方法的实际参数。

比如:上面的例子中“int oil”就是个形式参数,这里只是表示需要加入汽油,这个方法才能正常运行,但具体加入多少,要到真正使用的时候,也就是调用这个方法的时候才具体确定,加入调用的时候传入“100”,这就是个实际参数。

形参和实参有如下基本规则:
  • 形参和实参的类型必须要一致,或者要符合隐含转换规则
  • 形参类型不是引用类型时,在调用该方法时,是按值传递的。在该方法运行时, 形参和实参是不同的变量,它们在内存中位于不同的位置,形参将实参的值复制一份,在该方法运行结束的时候形参被释放,而实参内容不会改变。
  • 形参类型是引用类型时,在调用该方法时,是按引用传递的。运行时,传给方法的是实参的地址,在方法体内部使用的也是实参的地址,即使用的就是实参本身对应的内存空间。所以在函数体内部可以改变实参的值。
Java成员变量和局部变量是两种不同的变量类型。成员变量分为实例变量和静态变量。实例变量是指不使用static修饰的变量,而静态变量是使用static修饰的变量。局部变量则包括方法内声明的变量、方法的形参、构造器的形参和代码块内声明的变量。 尽管直接定义成员变量可以解决问题,但过多地使用成员变量会使程序变得混乱。成员变量的作用域和生命周期更大,不利于程序的内聚性,并且会带来更多的开销。因此,在可能的情况下,应该尽量使用方法局部变量而不是成员变量,使用代码块局部变量而不是方法局部变量。 具体来说,成员变量可以细分为实例变量和类变量。实例变量属于对象,每个对象都会有一份独立的实例变量。而类变量属于类,所有对象共享同一个类变量的值。局部变量可以细分为形参、方法局部变量和代码块局部变量。形参是方法或构造器的参数,方法局部变量是在方法内部声明的变量,而代码块局部变量是在代码块内部声明的变量。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [java--成员变量和局部变量](https://blog.csdn.net/m0_46151790/article/details/128323904)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [JAVA成员变量和局部变量(详解)](https://blog.csdn.net/qq_983030560/article/details/130895152)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值