java--static关键字的使用

static

当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过new关键字才会产生出对象,这时系统才会分配内存空间给对象,其方法才可以供外部调用。我们有时候希望无论是否产生了对象或无论产生多少对象的情况下,某些特定的数据在内存里只有一份

static的使用
  1. static可以用来修饰:属性,方法,代码块,内部类
  2. 使用static修饰属性:静态变量(或者类变量)
    2.1 属性:按是否使用static修饰,又分为:静态属性 和非静态属性(实例变量)
    2.2 实例变量:我们创建了类的多个对象,每个对象都独立一套类中的实例变量(非静态属性)
    静态变量:每个对象有共享用一个静态变量,当通过某一个对象修改静态变量时,会导致其他对象调用此静态变量是修改过的
    2.3 静态变量的其他说明:
    (1)静态变量随着类的加载而加载的,可以用过类名来调用
    (2)静态变量的加载要早于对象的创建
    (3)由于类只加载一次,则静态变量在内存中也只会存一份,存在方法区的静态域中
  3. 使用static修饰方法:静态方法
    3.1 随着类的加载而加载,可以通过类名来调用
    3.2 静态方法中只能调用静态方法或属性
    非静态方法中既可以调用非静态的方法和属性,也可以调用静态方法和属性
  4. static注意点:
    在静态方法中,不能使用this,super关键字
  5. 开发中,如何确定一个属性或者方法要声明为static?
    属性是可以被多个对象共享的,不会随着对象的不同而不同,类中的常量也声明为static
    操作静态属性的方法通常设置为static
    工具类中的方法,习惯上声明为static
public class CircleTest {

    public static void main(String[] args) {

        Circle c1=new Circle();

        Circle c2=new Circle();

        System.out.println("c1的id是 "+c1.getId());
        System.out.println("c2的id是 "+c2.getId());

        System.out.println("一共创建的圆的个数 "+Circle.getTotal());

    }

}


class Circle{

    private int radius;//半径
    private int id;//圆编号

    private static int init=1001;//自增
    private static  int total;//创建的圆的个数

    public Circle(){
        id=init++;
        total++;

    }
    
    public Circle(int radius){
        this();
        this.radius=radius;
    }

    public double findArea(){

        return 3.14*radius*radius;
    }
    public int getId(){
        return id;
    }

    public static int getTotal(){
        return total;
    }
}
/*
编写一个类实现银行账户的概念,包含的属性有“帐号”、“密
码”、“存款余额”、“利率”、“最小余额”,定义封装这些
属性的方法。 账号要自动生成。
编写主类,使用银行账户类,输入、输出
3 个储户的上述信息。
考虑:哪些属性可以设计成
static 属性。

 */
public class Account {

    private  int id;
    private String pwd="000000";
    private double balance;

    private static double interestRate;
    private static double minMoney=1.0;

    private static  int init=1001;//用于自动生成

    public Account(){
        id=init++;
    }
    //构造器中不操作静态变量
    public Account(String pwd,double balance){
        id=init++;
        this.pwd=pwd;
        this.balance=balance;
    }

    public int getId() {
        return id;
    }


    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    public double getBalance() {
        return balance;
    }


    public static double getInterestRate() {
        return interestRate;
    }

    public static void setInterestRate(double interestRate) {
        Account.interestRate = interestRate;
    }

    public static double getMinMoney() {
        return minMoney;
    }

    public static void setMinMoney(double minMoney) {
        Account.minMoney = minMoney;
    }

    @Override
    public String toString() {
        return "Account{" +
                "id=" + id +
                ", pwd='" + pwd + '\'' +
                ", balance=" + balance +
                '}';
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值