此段代码的作用是什么,求教
初心不负111
2016-07-22
class Apple { private static long counter=0;//会被赋值为0 private final long id=counter++;// public long id(){ return id; } } |
|
u010372981
2016-07-22
/** * Created by csucoderlee on 16/7/22. */ public class Apple { private static long counter=0;//会被赋值为0 private final long id=counter++;// public long id(){ return id; } public static void main(String[] args) { Apple apple1 = new Apple(); Apple apple2 = new Apple(); //用final修饰的成员变量表示常量,值一旦给定就无法改变 System.out.println(apple1.id()); System.out.println(apple1.id()); System.out.println(apple1.id()); System.out.println(apple1.id()); System.out.println(apple1.id()); //被static修饰的成员变量和成员方法独立于该类的任何对象 System.out.println(apple2.id()); System.out.println(apple2.id()); System.out.println(apple2.id()); System.out.println(apple2.id()); System.out.println(apple2.id()); } } count++ 在将count值为0 赋给id后,count的值就变为了1 ,对象apple1和对象apple2是共享count变量的,而final一旦被赋值就无法被改变了。 如果你对这个还是不理解或者是深入想了解,建议去看看java的内存机制,堆和栈都是用来存何种变量的。 |
|
初心不负111
2016-07-22
是不是可以这样理解(每创建一个对象count的值都会加1 而count值是 静态的存储时只有一份,是这个类所共享的类变量,,final的意思是相同的对象是无法改变id值的,因为final一旦被赋值就无法再改变,除非它又指向了另一个对象,这保证了相同对象不被重复计数)[/size][color=blue][/color]
|