static变量以及++

this不能在static中使用

public class Test{ 
    private static int i=1;
    public int getNext(){ 
         return i++;
    } 
    public static void main(String [] args){ 
        Test test=new Test(); 
        Test testObject=new Test(); 
        test.getNext(); 
        testObject.getNext(); 
        System.out.println(testObject.getNext()); 
    } 
}

最总结果输出3,i变为4
static为类变量,无论多少对象调用为同一个变量所以在此i增加三次为4
而return i++;是先返回后加,所以返回三后加一

### Java 中 `static` 关键字与自增运算符 `++` 的用法 #### 静态变量与实例变量的区别 在 Java 中,`static` 关键字可以应用于成员变量和方法。当应用到变量上时,意味着这个变量属于类本身而不是某个特定的对象实例。因此,在整个应用程序生命周期内只存在一份副本。 对于非静态(即实例)变量而言,则每创建一个新的对象就会分配新的存储空间来保存这些属性值[^4]。 ```java public class Counter { // 定义一个静态变量 count 和 实例变量 instanceCount public static int count = 0; private int instanceCount; public Counter() { this.instanceCount = 0; count++; instanceCount++; } public void incrementInstanceCount(){ instanceCount++; } @Override public String toString(){ return "Counter{" + "count=" + count + ", instanceCount=" + instanceCount + '}'; } } ``` 这段代码展示了如何定义并初始化静态字段以及普通字段。每当新建了一个 `Counter` 对象时,不仅会更新当前实例中的计数值 (`instanceCount`) ,还会使共享于所有实例之间的公共计数器(`count`)加一。 #### 自增运算符的两种形式及其行为差异 自增运算符有两种表现方式:前置 (++i) 和 后置 (i++) 。它们的主要区别在于表达式的求值时机: - **后置版本** :返回原始值之后再执行增量操作; - **前置版本** : 先完成增值动作然后再给出结果[^2]。 下面的例子说明了这一点: ```java int a = 5, b = 7; System.out.println(a++); // 输出 5 ,此时a已经变为6但是这里输出的是原来的值也就是5 System.out.println(++b); // 输出8 因为这里是先进行了自增所以直接输出的就是增加了后的值 ``` #### 结合 Static 变量使用++ 考虑如下场景——我们希望跟踪某类被实例化的总次数而不需要依赖任何具体对象的状态变化。这时就可以利用静态变量配合自增运算符实现这一功能。 ```java class Student{ private static int studentNumber = 0; public Student(){ ++studentNumber ;//每次new一个Student对象都会让总数+1 } public static int getStudentTotal(){ return studentNumber ; } } // 测试部分 public class TestStaticIncrement { public static void main(String[] args){ new Student(); new Student(); System.out.println(Student.getStudentTotal()); // 应该打印出2 } } ``` 在这个例子中,无论创建了多少个 `Student` 类型的新实体,只要调用了构造函数一次,那么代表学生数量统计的那个静态整数就相应增长一位。这表明即使没有任何具体的学生活动记录下来,仍然能够准确掌握整体规模的变化趋势。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值