为什么java里用常量赋值就相等,用字符串就不等?
例一:
String s0="HF";
String s1=new String("HF");
System.out.println(s0==s1);
输入为什么是false呢?
例一解释:
"=="表示的是地址是否相等。equals表示两个字符串的值是否相等,如果为s0.equals(s1)则返回true。
程序执行时,会在栈里分配两块空间s0 s1,在堆空间里存储对象。内存分配图如下:
例二:
(1) String s1="123";
String s2="123";
s1变量先在栈中,然后在堆中开辟一个空间存储"123"
(直接赋值,例如String s1="123")这个字符串存储在
一个特殊的区域----常量池,
在s2创建字符串"123"之前会先寻找堆中的常量池是否有
对象"123",如果有就直接指向已经存在的"123"
没有的话就重新开辟一个新空间存储在常量池中
(2)String s1=new String("123");
String s2=new String("123");
变量s1先在栈中存储,然后在堆中开辟一个空间存储"123",
s2创建字符串"123",直接再开辟新空间存储"123".
为什么java里用常量赋值就相等,用字符串就不等?的更多相关文章
- Java里如何判断一个String是空字符串或空格组成的字符串
要判读String是否为空字符串,比较简单,只要判断该String的length是否为0就可以,或者直接用方法isEmpty()来判断. 但很多时候我们也会把由一些不可见的字符组成的String也 ...
- Java中用字符串常量赋值和使用new构造String对象的区别
String str1 = "ABC"; String str2 = new String("ABC"); String str1 = “ABC”;可能创建一个 ...
- java里的static和final
本节介绍JAVA里static和final的作用和使用方法以及一些需要注意的问题. 一.static static表示"全局"或"静态",用来修饰成员变量和成员 ...
- java里的static/final含义
java里的static/final含义 static static可以修饰:属性,方法,代码段,内部类(静态内部类或嵌套内部类) static修饰的属性的初始化在编译期(类加载的时候),初始化后能改 ...
- java里的基本数据类型
java里一共有八大数据类型 boolean(未定) char(2字节) byte(1字节) short(2字节) int(4字节) long(8字节) float(4字节) double(8字节), ...
- java里的日期时间
为了更好理解java的日期时间类,在这里我们先介绍一下关于历法.标准时间的一些概念. 历法有很多种,我们大中华上下五千年,自然也有自己的历法,生活中我们通常把自己传统的历法叫做农历,也有人叫它阴历或夏 ...
- 转:JAVA里面的int类型 和Integer类型,有什么不一样
JAVA里面的int类型 和Integer类型,有什么不一样 原文链接:http://blog.csdn.net/wuxinliulei/article/details/11099565 java.l ...
- java里String类为何被设计为final
前些天面试遇到一个非常难的关于String的问题,"String为何被设计为不可变的"?类似的问题也有"String为何被设计为final?"个人认为还是前面一 ...
- Java对象引用和对象赋值
关于对象与引用之间的一些基本概念. 初学Java时,在很长一段时间里,总觉得基本概念很模糊.后来才知道,在许多Java书中,把对象和对象的引用混为一谈.可是,如果我分不清对象与对象引用,那实在没法很好 ...
随机推荐
- php对象引用和析构函数的关系
在php中构造函数和析构函数都属于魔术方法,比如构造函数在某一个类中,当这个类被实例化的时候就会自动调用,而析构函数是在这个类的对象被销毁的时候自动调用,默认情况下是在程序执行结束时自动调用. 如果我 ...
- MPlayer 增加边看边剪切功能
下载 http://pan.baidu.com/s/1ntj0XLn 解压到 D:\MPlayer 前些日子用 FFMpeg 的 FFPlay 来做了视频剪切工具 结果发现 FFPlay 的 CPU ...
- 【JAVA、C++】LeetCode 010 Regular Expression Matching
Implement regular expression matching with support for '.' and '*'. '.' Matches any single character ...
- CodeForces - 427A (警察和罪犯 思维题)
Police Recruits Time Limit: 1000MS Memory Limit: 262144KB 64bit IO Format: %I64d & %I64u Sub ...
- hibernate的sqlQuery自动封装
1.Query query = session.createSQLQuery("SQL").addEntity(Tree.class); //返回对象 List list = ...
- Perl中的正则表达式
转自:http://c20031776.blog.163.com/blog/static/684716252013624383887/ Perl 程序中,正则表达式有三种存在形式 分别是 (1 模式匹 ...
- PowerDesigner12逆向生成oracle数据表时,错误解决
1.用PowerDesigner12建模,在Database—>Generate Database (或者用Ctrl+G快捷键)来生产sql语句,却提示“Generation aborted d ...
- sql server存儲過程語法
-- 变量的声明,sql里面声明变量时必须在变量前加@符号 DECLARE @I INT -- 变量的赋值,变量赋值时变量前必须加set SET @I = 30 -- 声明多个变量 ...
- 【Android】Android之Action Bar
Action Bar是在窗口上指示用户位置的组件,同时给用户提供导航和操作.使用Action Bar可以让你的应用在不同配置的屏幕上看起来比较一致.在开始之前,先了解一些相关的术语: Action B ...
- aggregateByKey
def seq(a:Int, b:Int) : Int ={ math.max(a,b) } def comb(a:Int, b:Int) : Int ={ a + b } val data = sc ...