lotus

贵有恒何必三更眠五更起 最无益只怕一日曝十日寒

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  1846 随笔 :: 0 文章 :: 109 评论 :: 288万 阅读

 

最近考试出了一个很简单的题,看看他们对java常量,变量,静态变量的理解,代码如下:


public class TestVar { 

/** 
* JAVA基础,常量,变量,静态变量 
*/ 
public static void main(String[] args) { 
// TODO Auto-generated method stub 
A a = new A(); 
A b = new A(); 

System.out.println("a.aa.value =" + a.aa); 
System.out.println("b.aa.value =" + b.aa); 

System.out.println("========================"); 
System.out.println("a.bb.value =" + a.bb); 
System.out.println("b.bb.value =" + b.bb); 

System.out.println("#########################"); 
a.bb = "654321"; 
System.out.println("a.bb.value =" + a.bb); 
System.out.println("b.bb.value =" + b.bb); 

System.out.println("%%%%%%%%%%%%%%%%%%%%%%%%%"); 
b.bb = "123456"; 
System.out.println("a.bb.value =" + a.bb); 
System.out.println("b.bb.value =" + b.bb); 
} 
} 

class A { 
public static final String aa = "123";// 定义一个常量aa 

public static String bb = "321";// 定义一个静态变量bb 

public String cc = "666";// 定义一个变量cc 

} 

 

输出结果:

a.aa.value =123

b.aa.value =123

========================
a.bb.value =321
b.bb.value =321
#########################
a.bb.value =654321
b.bb.value =654321
%%%%%%%%%%%%%%%%%%%%%%%%%
a.bb.value =123456
b.bb.value =123456

如此简单的一段代码,居然大多数人回答都是错误的,其中不乏工作三四年的java开发人员!

简单的理解:
常量:从jvm的角度来说它是在常量池中
静态变量:所有实例共享的一块内存,其中一个实例改变它的值其它的实例也随之改变
变量:每一个实例创建的时候都会给变量分配一块内存,创建一百个实例那就是一百块变量内存,创建一千个实例就是一千块变量内存

posted on   白露~  阅读(1909)  评论(0编辑  收藏  举报
编辑推荐:
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示