java 静态变量和静态块_java[11]静态变量和静态方法、以及静态代码块

静态变量和静态方法

有一个 Account(银行账户)类,假设它有三个成员变量: amount(账户金额)、

interestRate(利率)和 owner(账户名)。在这三个成员变量中, amount 和 owner 会因人而异,对于不同的账户这些内容是不同的,而所有账户的 interestRate 都是相同的。amount 和 owner 成员变量与账户个体有关,称为“实例变量”, interestRate 成员变量与个体无关,或者说是所有账户个体共享的,这种变量称为“静态变量”或“类变量”。

总结:实例变量会因人而异,静态变量是共有的

静态变量和静态方法示例代码如下:// Account.java文件

package com.a51work6;

public class Account {

// 实例变量账户金额

double amount = 0.0; ①

// 实例变量账户名

String owner; ②

// 静态变量利率

static double interestRate = 0.0668; ③

// 静态方法

public static double interestBy(double amt){

//静态方法可以访问静态变量和其他静态方法

return interestRate * amt; ⑤

}

// 实例方法

public String messageWith(double amt) { ⑥

/    /实例方法可以访问实例变量、实例方法、 静态变量和静态方法

double interest = Account.interestBy(amt); ⑦

StringBuilder sb = new StringBuilder();

// 拼接字符串

sb.append(owner).append("的利息是").append(interest);

// 返回字符串

return sb.toString();

}

}

static 修饰的成员变量是静态变量,见代码第③行。staitc 修饰的方法是静态方法,见代码第④行。相反,没有 static 修饰的成员变量是实例变量,见代码第①行和第②行;没有 staitc 修饰的方法是实例方法,见代码第⑥行。

注意 静态方法可以访问静态变量和其他静态方法,例如访问代码第⑤行中的interestRate静态变量。实例方法可以访问实例变量、其他实例方法、 静态变量和静态方法,例如访问代码第⑦行interestBy静态方法。

调用 Account 代码如下:// HelloWorld.java文件

packagecom.a51work6;

public classHelloWorld {

public static voidmain(String[] args) {

// 访问静态变量

System.out.println(Account.interestRate);①

// 访问静态方法

System.out.println(Account.interestBy(1000));②

Account myAccount =new Account();

// 访问实例变量

myAccount.amount =1000000; ③

myAccount.owner ="Tony"; ④

// 访问实例方法

System.out.println(myAccount.messageWith(1000));⑤

// 通过实例访问静态变量

System.out.println(myAccount.interestRate);⑥

}

}

调 用 静 态 变 量 或 静 态 方 法 时 , 可 以 通 过 类 名 或 实 例 名 调 用 , 代 码 第 ① 行Account.interestRate通过类名调用静态变量,代码第②行 Account.interestBy(1000)是通过类名调用静态方法。 代码第⑥行是通过实例调用静态变量。

静态代码块:

前面介绍的静态变量interestRate,可以在声明同时初始化,如下代码所示。publicclass Account {

// 静态变量利率

staticdouble interestRate = 0.0668;

...

}

//如果初始化静态变量不是简单常量,需要进行计算才能初始化,可以使用静态(static)

//代码块,静态代码块在类第一次加载时执行,并只执行一次。示例代码如下:

//Account.java文件

packagecom.a51work6;

publicclass Account {

// 实例变量账户金额

doubleamount = 0.0;

// 实例变量账户名

Stringowner;

// 静态变量利率

staticdouble interestRate;

// 静态方法

publicstatic double interestBy(double amt) {

// 静态方法可以访问静态变量和其他静态方法

returninterestRate * amt;

}

// 静态代码块

static { ①

System.out.println("静态代码块被调用...");

// 初始化静态变量

interestRate= 0.0668; ②

}

}

上述代码第①行是静态代码块,在静态代码块中可以初始化静态变量,见代码第②行,也可以调用静态方法。

调用 Account 代码如下://HelloWorld.java文件

packagecom.a51work6;

publicclass HelloWorld {

publicstatic void main(String[] args) {

AccountmyAccount = new Account(); ①

// 访问静态变量

System.out.println(Account.interestRate);②

// 访问静态方法

System.out.println(Account.interestBy(1000));

}

}

Account 静态代码块是在第一次加载Account 类时调用。上述代码第①行是第一次使用 Account 类,此时会调用静态代码块。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值