A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hlh 中级黑马   /  2016-5-8 00:24  /  483 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class Test {
    public static void main(String[] args)  {
        MyClass myClass1 = new MyClass();
        MyClass myClass2 = new MyClass();
        System.out.println(myClass1.i);
        System.out.println(myClass1.j);
        System.out.println(myClass2.i);
        System.out.println(myClass2.j);

    }
}

class MyClass {
    public final double i = Math.random();
    public static double j = Math.random();
}
这里的final修饰的常量i为什么变化了?哪位大神能帮忙解答一下啊

4 个回复

倒序浏览
没改变啊,你创建的是两个对象,随机给出了两个对应的值
回复 使用道具 举报
土豆你个马铃薯 发表于 2016-5-8 01:19
没改变啊,你创建的是两个对象,随机给出了两个对应的值

光顾着想常量去了 以为random是创建的同一个对象
回复 使用道具 举报
你这是实例变量不是静态变量,对象独享实例变量,静态变量才被对象共享,你这里有两个对象,那肯定值不一样啦。
回复 使用道具 举报
亲,程序猿一定要细心哦,你实例化了两个MyClass对象,里边的i对象自然会随机的分配两个不同的或者相同的值。并不是i的值变了,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马