`
京城蛮子
  • 浏览: 1165 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

JAVA常量,静态变量,变量的理解,面试有感

阅读更多
最近面试了一些java初级,中级程序员,现场出了一个很简单的题,看看他们对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的角度来说它是在常量池中
静态变量:所有实例共享的一块内存,其中一个实例改变它的值其它的实例也随之改变
变量:每一个实例创建的时候都会给变量分配一块内存,创建一百个实例那就是一百块变量内存,创建一千个实例就是一千块变量内存

有空的童鞋,可以读下JVM虚拟机规范深入了解一下!


分享到:
评论

相关推荐

    01.【前言、入门程序、常量、变量】.zip

    【前言、入门程序、常量、变量】"这个压缩包文件将引导你走进Java的大门,通过学习前言了解Java的基本背景,编写第一个Java程序感受编程的魅力,然后深入理解数据的静态表示——常量,以及动态表示——变量。...

    java软件开发实习日记.docx

    2. **C#基础知识**:虽然文档主要关注Java开发,但提到了C#,这是一种类似的面向对象编程语言,基础概念如变量、数据类型、控制结构等对于理解Java同样重要。 3. **Java环境变量与命令**:了解`PATH`、`JAVA_HOME`...

    自整理Java关于基础和框架的面试题

    - **方法区**:存放类的信息、常量、静态变量等。 ##### 内存泄露和内存溢出 - **内存泄露**:已分配的内存不再使用但未释放。 - **内存溢出**:申请内存失败。 ##### 单例 - 单例模式确保一个类只有一个实例,并...

    《变量与函数》教学反思[文].pdf

    首先,变量与常量是理解函数的基础。在本节课中,教师强调了变量是可变的量,而常量则是保持不变的量。学生需要认识到现实世界中各种现象之间的关系往往不是固定不变的,而是动态变化的。例如,物体的重量与高度的...

    java面试总结

    - **方法区**: 存放类的信息、常量、静态变量等。 - **程序计数器**: 记录当前线程所执行的字节码指令地址。 #### 二十四、内存泄露和内存溢出 - **内存泄露**: 已经不再使用的对象仍然被引用,导致垃圾回收器无法...

    java垃圾回收机制借鉴.pdf

    方法区(在Java 8及以后版本中被称为元空间)存储类信息、常量、静态变量等。原生方法栈则是为JNI(Java Native Interface)中的本地方法服务的。 垃圾回收主要关注的是堆内存,因为这里的对象生命周期和引用关系...

    编译原理电子资源下载

    编译原理是计算机科学中的一个重要领域,主要研究如何将高级编程语言转换为机器可以理解的低级语言,如汇编代码或直接机器码。这个过程通常分为词法分析、语法分析、语义分析和代码生成等多个阶段。在这个“编译原理...

    第一课 TypeScript基础实用课程介绍1

    1. **基本的JavaScript知识**:理解变量、数据类型、控制流程、函数等JavaScript基础概念。 2. **熟悉VSCode编辑器**:Visual Studio Code(VSCode)是广泛使用的代码编辑器,它有强大的TypeScript支持,包括代码...

    重庆理工大学 2019级 编译原理课程设计(c语言版)

    2. **静态类型**:C语言中的变量需要在声明时指定类型,并在编译时进行类型检查。 3. **结构化编程**:C语言支持结构化编程概念,如if-else、while、for循环和函数,鼓励模块化编程。 4. **内存管理**:C语言提供...

    传感器考试题简答题.pdf

    静态特性则关注在稳态或准静态信号下的输入-输出关系,通常不涉及时间变量。当输入信号变化缓慢或为常量时,静态特性足以满足大多数应用需求。 2. 实现不失真测量的条件:为了确保测量结果的准确无失真,传感器的...

    传感器考试题简答题.doc

    而静态特性则是指在输入信号为常量或变化缓慢的情况下,传感器的输入-输出关系,这种关系不包含时间变量。在输入量稳定或者变化极慢的工况下,研究静态特性就能满足大多数应用需求。 然而,当输入量随时间快速变化...

    挑战6

    5. **枚举(Enums)**:枚举是预定义的一组命名常量,用于简化表示固定集合的值。在TypeScript中,你可以创建数值或字符串枚举。 6. **类(Classes)**:TypeScript支持面向对象编程,包括类的定义、继承、构造函数...

    golang-tutorials:Go教程-通过编写许多Golang代码让我们真正地变得肮脏

    变量声明、常量定义、数据类型(包括基本类型、复合类型如数组、切片、映射、结构体)以及控制流(if、for、switch等)是学习的起点。同时,Go语言的函数支持多返回值,这在处理错误和返回多个结果时非常方便。 ...

    learngo:进入训练营

    在“learngo:进入训练营”中,你将学习到如何设置Go开发环境,理解基本语法,如变量、常量、控制流、函数等。进一步,你将接触到更高级的主题,比如反射、类型断言、通道操作、上下文(Context)的使用,以及如何编写...

Global site tag (gtag.js) - Google Analytics