备案做电影网站吗,广州微信网站建设平台,成品网站 售卖,会议响应式网站开发相信大家在看到标题之后#xff0c;是疑惑的点进来看内容的。
在看到标题之后#xff0c;大家肯定会怀疑#xff0c;我赵某人用java写了好几年的代码了#xff0c;还真就没见过java中的变量能先用在声明#xff0c;今天就是进来看看你在没有声明变量的前提下是怎么用的是疑惑的点进来看内容的。
在看到标题之后大家肯定会怀疑我赵某人用java写了好几年的代码了还真就没见过java中的变量能先用在声明今天就是进来看看你在没有声明变量的前提下是怎么用的怎么用的
各位先别激动能不能你先自己看我们先来写个例子
/***
*
* 项目名称BianChengXiGuan
* 类名称TestMain
* 类描述 静态变量
* 创建人Mu Xiongxiong
* 创建时间2020-6-17 下午10:53:54
* 修改人Mu Xiongxiong
* 修改时间2020-6-17 下午10:53:54
* 修改备注
* 个人博客https://blog.csdn.net/qq_34137397
* 微信公众号雄雄的小课堂
* version
**/
public class TestMain {public static int num 10;static{num 100;}public static void main(String[] args) {System.out.println(num);}}
这个例子很简单输出结果我不说大家也都知道是100正确。那么我们稍微改一下上面的代码
/***
*
* 项目名称BianChengXiGuan
* 类名称TestMain
* 类描述 静态变量
* 创建人Mu Xiongxiong
* 创建时间2020-6-17 下午10:53:54
* 修改人Mu Xiongxiong
* 修改时间2020-6-17 下午10:53:54
* 修改备注
* 个人博客https://blog.csdn.net/qq_34137397
* 微信公众号雄雄的小课堂
* version
**/
public class TestMain {static{num 100;}public static int num 10;public static void main(String[] args) {System.out.println(num);}}注意了我将声明num的和赋值num的代码替换了位置你肯定会问兄弟你这代码能编译通过吗即便你能编译通过那输出来是多少这里可以看到num是先赋值后声明的
这段代码可以编译通过并且输出的num结果是10是不是有点出乎意料了不着急要想把这里说通我们还得回到静态变量的诞生说起总所周知静态变量是在我们第一次使用类加载类的时候别分配到数据区的它在内存中之后一次拷贝不会被分配多次其后不管给它赋值多少遍都是值在改变而地址不变。
当类被加载时首先会找到类中的所有静态声明然后给它们分配空间这个时候仅仅只是分配空间并未赋值此后JVM就会根据静态赋值或者静态块的先后顺序去执行到这里相信大家差不多就明白了。
回到我们的代码中TestMain类被加载时JVM首先在内存中开辟出了一块空间并且将该地址传递给num也就是执行的是public static int num,其次按照先后顺序就该执行num 100;了接着往下执行碰到了num 10;显而易见最后输出的结果就是num为10谁在最后谁说了算
最后温馨提示一下大家正常情况下我们还是先声明在赋值比较靠谱点免得本来想装个大神来着结果出现了语料未及的结果造成没必要的麻烦可就不值得了。