packagetest.string.equal;public classMain {/*** 创建了三个对象,"helloworld对象创建在常量池中",每次new String()都会创建一个对象在堆内存中。*/

voidtest() {

String s1="helloworld";

String s2= new String("helloworld");

String s3= new String("helloworld");

}/*** 程序只创建一个字符串对象“Java”,存放在常量池中,所以s1==s2 为true*/

voidtest1(){

String s1="Java";

String s2="Java";

System.out.println(s1==s2);

}/**第一个new String("Java"):创建了两个对象,Java创建于常量池中,String对象创建于堆内存中。

* 第二个new String("Java"):由于常量池中有Java对象,所以只需创建一个对象,String对象创建于堆内存中。

* s1与s2分别指向String对象堆内存,所以s1==s2 为false*/

voidtest2() {

String s1=new String("Java");

String s2= new String("Java");

System.out.println(s1==s2);

}/**常量的值在编译的时候就确定了,"hello"、"world"都是常量,因此s2的值在编译的时候也确定了,

* s2指向常量池中的"hello world",所以s1==s2为true

**/

voidtest3() {

String s1="hello world";

String s2="hello "+"world";

System.out.println(s1==s2);

}/**s4由两个String变量相加得到,不能再编译时就确定下来,不能直接引用常量池中的"helloworld"对象,而是在堆内存中创建一个新的String对象并由s4指向

* 所以s1==s4为false

**/

voidtest4() {

String s1="helloworld";

String s2="hello";

String s3="world";

String s4=s2+s3;

System.out.println(s1==s4);

}/**s2与s3被final修饰为宏变量,不可更改,编译器在程序使用该变量的地方直接使用该变量的值进行替代,所以s4的值在编译的时候就为"helloworld"

* 指向常量池中的"helloworld"对象

* 所以s1==s4为true

**/

voidtest5() {

String s1="helloworld";final String s2="hello";final String s3="world";

String s4=s2+s3;

System.out.println(s1==s4);

}public static voidmain(String[] args) {

Main o= newMain();

o.test1();

o.test2();

o.test3();

o.test4();

o.test5();

}

}

java string 对象地址_Java中String对象的存储位置(学习笔记)相关推荐

  1. java string对象名称_java中常见对象——String

    字符串:就是由多个字符组成的一串数据.也可以看成是一个字符数组. A:字符串字面值"abc"也可以看成是一个字符串对象. B:字符串是常量,一旦被赋值,就不能被改变. 构造方法: ...

  2. java中string类相等_Java中String类的常见面试题

    第一题:==与equals()的区别 1.判断定义为String类型的s1和s2是否相等 String s1 = "abc"; String s2 = "abc" ...

  3. java string占用内存_Java中String到底占用多大的内存空间?

    写在前面 对于Java中的String类占用多大的内存空间这个问题,是最近面试中问的比较多的一个问题.很多小伙伴的回答的都不是很正确,有说不占空间的,有说1个字节的,有说2个字节的,有说3个字节的,有 ...

  4. java中对象类型转换_Java中的对象的类型转换介绍(附代码)

    本篇文章给大家带来的内容是关于Java中的对象的类型转换介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 向上转型:子类对象转为父类,父类可以是接口.公式:Father ...

  5. java valueof的用法_Java中String.valueOf()方法的使用

    Java中String.valueOf()方法的使用 (2013-06-21 18:07:34) 标签: it Java中String.valueOf() 方法的使用 1. 由 基本数据型态转换成 S ...

  6. set列表对象去重_java中List对象列表去重或取出以及排序

    面试碰到几次list的去重和排序.下面介绍一种做法: 1. list去重 1.1 实体类Student List容量10k以上,要求去重复.这里Student的重复标准是属性相同,因此需要重写equa ...

  7. java流的序列化_Java中的对象流和序列化介绍

    最近,在讲流的使用,其中对象流的作用其实就是将自定义类的对象与流之间相互转换的流. 看起来还是挺简单的,那么看下面的例子: public class Student{ private int id; ...

  8. java 对象列表_Java中的对象列表

    参见英文答案 > Why does my ArrayList contain N copies of the last item added to the list?               ...

  9. java如何接受字符_java中string怎么获取指定位置的字符

    //截取#之前的字符串String str = "sdfs#d";str.substring(0, str.indexOf("#"));// 输出的结果为:sd ...

最新文章

  1. UnicodeEncodeError: 'ascii' codec can't encode character....
  2. SegmentFault 助力 Uber Hackathon
  3. grpc框架_分布式RPC框架dubbo、motan、rpcx、gRPC、thrift简介与性能比较
  4. Vue-第七天 学习与相关问题总结
  5. 深度解密Go语言之基于信号的抢占式调度
  6. 工作374-前端margin:0 auto为什么会失效
  7. ASP.NET中的Menu控件的应用
  8. macos下使用aria2_macOS下 ansible简单安装及基础使用
  9. ProjectMan是这样炼成的
  10. 苹果新Metal API实测:四倍完爆OpenGL ES
  11. 《GDAL源码剖析与开发指南》导读
  12. IOS VFL语言(页面布局)
  13. mysql 视频教程下载_最全138节Mysql数据库+PHP零基础到精通视频教程【云盘下载】...
  14. 母亲节祝福html源码,有创意的母亲节祝福语大全
  15. 突破同一账号不能同时在不同电脑登录限制程序软件(多电脑端登录器多开软件)
  16. built a JNCIS LAB系列:Chapter 9 L3××× L2×××
  17. 【HMS core】【Ads Kit】华为广告——海外应用在国内测试正式广告无法展示
  18. SIM7600透传模式
  19. ios android 手柄,升级至iOS 13系统iPhone现已支持Xbox手柄
  20. MBA-day18 消元法

热门文章

  1. Map And Reduce Join的使用案例
  2. 大数据安全分析需要关注哪些问题
  3. 数据分析数据可视化(四)
  4. rad linux下安装mysql_Rad Hat Enterprise Linux 5.5上安装Oracle 11g R2
  5. 回转体怎么划分六面体网格_一文了解ANSYS Meshing 高级网格划分技术
  6. column分栏布局只是文字布局吗_CSS3 column 分栏
  7. neo4j︱neo4j批量导入neo4j-import (五)
  8. python︱利用dlib和opencv实现简单换脸、人脸对齐、关键点定位与画图
  9. 笔记(4)——Analyzing Communities and Their Evolutions in Dynamic Social Networks
  10. 读论文笔记(1)——web文本挖掘技术研究