`
wlxt_8436
  • 浏览: 15944 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

编译时和运行时,存储区域问题

阅读更多
1、编译时就能确定值,因此在方法区中。结果为true

String a = "a1";       
String b = "a"+ 1;      
System.out.println(a==b);  //true

2、编译器不能确定为常量 ,运行期才知道结果、运行时的结果存放在堆中。结果为false

String a = "ab";       
String bb = "b";      
String b = "a"+bb;     //运行时的结果存放在堆中
//编译器不能确定为常量 ,运行期才知道结果     
System.out.println(a==b);//false

3、常量,编译器就能确定值。结果为true

String a = "ab";       
final String bb = "b"; //常量,编译器      
String b = "a"+ bb;      
System.out.println(a==b);//true

4、常量的值由运行期决定。结果为false

String a = "ab";       
final String bb = getValue();  //运行期才能决定值
String b = "a"+ bb;      
System.out.println(a==b);//false
  
public static String getValue(){
return "b";
}
5、intern()始终返回方法区地址

public class StringBack{
private static String a = new String("ab");
public static void main(String[] args){
       String s1 = "a";      
String s2 = "b";       
String s = s1 + s2;      
System.out.println(s == a);  //false   
System.out.println(s.intern() == a);   //false
System.out.println(s.intern() == a.intern());
}
分享到:
评论

相关推荐

    JVM 运行时数据区域,垃圾回收机制,类加载机制三大功能详解.docx

    运行时数据区域: 在运行时数据区里存储类Class文件元数据(方法区),对象和数组(堆),方法参数局部变量(栈)等。 垃圾回收机制: java 语言的优势之一就是它的自动内存管理,主要回收运行时数据区域的堆内存里的数据 ...

    南航编译原理期末考试例题答案11

    (3)运行时存储空间划分主要包括哪些区域 (1)请给出句型 a-a/a-aT 的最左推导,并画出其语法分析树 (2)写出上述句型的所有短语、直接短语、句柄和素短

    学习Java基本语法的仓库 存放学习Java的md文件和Java代码.rar

    1. jvm是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行管理数据、内存、寄存器,包含在JDK中 2. 不同平台,不同虚拟机 3. java虚拟机屏蔽了底层运行平台的差别,实现一次编译,到处运行 JDK JDK的...

    踏入C++中的雷区C++内存管理详解

     (1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。  (2)在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,...

    网狐荣耀版开发使用常见问题解答

    十一、网狐荣耀版vs生成解决方案时出现“出现未能写入日志,请求的操作无法在使用用户映射区域打开的文件上执行“错误 一、定位文件,看是不是只读。 二、删除文件试一下,看看是不是文件被占用,如果删除不了,...

    C++学习代码(实例)

     (1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。  (2)在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,...

    电子类软硬件面试集锦

    答:一、从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量。 二、在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时...

    C#微软培训资料

    2.2 公用语言运行时环境与公用语言规范.13 2.3 开 发 工 具 .17 2.4 小 结 .19 第三章 编写第一个应用程序 .20 3.1 Welcome 程序 .20 3.2 代 码 分 析 .20 3.3 运 行 程 序 .23 .4 添 加 注 释 .25 ...

    C 语言编程常见问题解答.chm

    5.13 你能指定在编译时包含哪一个头文件吗? 5.14 包含文件可以嵌套吗? 5.15 包含文件最多可以嵌套几层? 5.16 连接运算符“##”有什么作用? 5.17 怎样建立对类型敏感的宏? 5.18 什么是标准预定义宏?...

    最新java面试专题01-JVM

    最新jvm面试题合集,涵盖JVM运行时数据区、垃圾回收算法、垃圾回收器、类加载机制、JIT即时编译等核心知识点及常见面试题,一书在手,天下我有。 JVM内存结构:JVM的内存结构主要包括堆内存、方法区、栈(包括Java...

    Java虚拟机

    2.4.3 方法区和运行时常量池溢出 2.4.4 本机直接内存溢出 2.5 本章小结 第3章 垃圾收集器与内存分配策略 3.1 概述 3.2 对象已死吗 3.2.1 引用计数算法 3.2.2 可达性分析算法 3.2.3 再谈引用 3.2.4 生存...

    C51的存储结构详细资料说明

    C51的程序经过编译后将在单片机上进行运行,C51的程序的代码和数据都是按照一定的存储类型,存放在单片机的特定存储区域中,否则该数据无意义。存储结构是单片机C51语言很重要的一部分内容,也是其特有的内容。C51的...

    Java常见面试问题整理.docx

    运行时常量池是方法区的一部分,class文件除了有类的字段、接口、方法等描述信息之外,还有常量池用于存放编译期间生成的各种字面量和符号引用。在老版jdk,方法区也被称为永久代。在1.8之后,由于永久代内存经常...

    CS435-Parallel-Distributive-Processing

    javac McCrearyCMT.java java McCrearyCMT(文件名) 要编译和运行 Monte Pi 程序,请转到 Monte_Pi/ 并运行: gcc -o 名称 monte_pi.c -lpthread -lm ./name(线程数)(模拟数) 要编译和运行区域标签程序,请转...

    Toad 使用快速入门

    在运行出现错误时,存储过程停止到有问题的语句。用户可以使用快捷方式或模板来快速编写PL/SQL,也可以根据需要生成自己的模板。使用Toad可以非常方便地进行编辑工作,可如设置书签、取消注释、格式化SQL语句等等。 ...

    用C语言开发手机软件-Windows CE 6.0开发者参考

    15.2.2 编译时的版本确定 15.2.3 显式链接 15.2.4 运行时的版本检测 15.3 电源管理 15.3.1 关机的含义 15.3.2 查询电源状态 15.3.3 电源管理器 15.3.4 不使用电源管理器来管理电源 第16章 串行通信 16.1 基本串行...

    VC++6.0核心编程源码.rar

    建立这样一个列表时存在的问题是,你可以调用一个Windows函数,但是该函数能够在内部调用另一个函数,而这另一个函数又可以调用另一个函数,如此类推。由于各种不同的原因,这些函数中的任何一个函数都可能运行失败...

    系统级编程 ss6 选择题及复习纲要

    4:静态分配:程序在编译和链接阶段为变量分配内存空间。静态分配的变量在main之前分配内存和初始化变量,只到程序终止才释放内存。每次调用函数不会重新初始化。 5:动态分配:在程序运行期间为变量分配内存空间。...

    PLSQLDeveloper下载

    您可以将其集成到PL/SQL Developer工作环境中,以便在编辑、编译出错或运行时出错时提供内容敏感帮助。 非PL/SQL对象——不使用任何SQL,您就可以对表格、序列、符号、库、目录、工作、队列、用户和角色进行浏览、...

    pl/sql developer 9 + 注册机

     该调试器(要求Oracle 7.3.4或更高)提供您所需要的全部特性:跳入(Step In)、跳过(Step Over)、跳出(Step Out)、异常时停止运行、断点、观察和设置变量、观察全部堆栈等。基本能够调试任何程序单元(包括...

Global site tag (gtag.js) - Google Analytics