`

【转】String创建的几种方式

阅读更多
String包含几种不同的创建方式,并且不同的创建方式都会将String存到入不同的区域内,例如:String池 或者 java堆中。其中有一些原理,只要懂这些原理。以上的问题都不是问题。
原理1:当使用任何方式来创建一个字符串对象s时,Java运行时(运行中JVM)会拿着这个X在String池中找是否存在内容相同的字符串对象,如果不存在,则在池中创建一个字符串s,否则,不在池中添加。

       原理2:Java中,只要使用new关键字来创建对象,则一定会(在堆区或栈区)创建一个新的对象。

       原理3:使用直接指定或者使用纯字符串串联来创建String对象,则仅仅会检查维护String池中的字符串,池中没有就在池中创建一个,有则罢了!但绝不会在堆栈区再去创建该String对象。

       原理4:使用包含变量的表达式来创建String对象,则不仅会检查维护String池,而且还会在堆栈区创建一个String对象。

String a = "ab";   
String b = "a" + "b";   
System.out.println(a==b);  


String a = "abc";   
String b="ab";   
String c=b+"c";   
System.out.println(a==c); 


String a = "ab1";   
String b = "ab"+1;   
System.out.println(a==b); 


String a = "ab1";   
String b = "ab"+1;   
String c = b + "";   
System.out.println(a==c); 


String a = new String("abc");   
String b = "abc";   
System.out.println(a==b);  


String a = "abc";   
String b = "abc";   
System.out.println(a==b); 
分享到:
评论

相关推荐

    java面试题目.docx

    答:String创建对象有两种情况: 第一种:如果String常量池中已经创建了“xyz”,则不会继续创建,此时只创建了一个对象new String(“xyz”) 第二种:如果String常量池中没有创建“xyz”,则会创建两个对象,一个...

    Visual C++窗口标题改变的几种方法.doc

    Visual C++窗口标题改变的几种方法 在论坛中,经常有人会问到这个问题,所以今天整理了几种方法用来改变窗口标题,希望对这些朋友有所帮助。  一•单文档接口(SDI)类型窗口标题的改变  首先,我们来看Windows ...

    JavaScript创建类/对象的几种方式概述及实例

    在JS中,创建对象(Create Object)并不完全是我们时常说的创建类对象,JS中的对象强调的是一种复合类型,JS中创建对象及对对象的访问是极其灵活的。 JS对象是一种复合类型,它允许你通过变量名存储和访问,换一种...

    Java中创建对象的4种方法

    会创建几个完全不相同的对象 实体类: package cn.xiaov.creatobject; public class Person { private String name; private int age; public String getName() { return name; } public void setName(String ...

    Android 开发之旅:详解view的几种布局方式及实践

    View的布局显示方式有下面几种:线性布局(Linear Layout)、相对布局(Relative Layout)、表格布局(Table Layout)、网格视图(Grid View)、标签布局(Tab Layout)、列表视图(List View)、绝对布局...

    JavaScript中创建类/对象的几种方法总结

    在JS中,创建对象(Create Object)并不完全是我们时常说的创建类对象,JS中的对象强调的是一种复合类型,JS中创建对象及对对象的访问是极其灵活的。 JS对象是一种复合类型,它允许你通过变量名存储和访问,换一种...

    C#写的基本文件操作类,创建删除读写

    交大老师验证与修改的 C#写的基本文件操作类 包括 创建 删除 写入 读取,满足一般用法,注意用的时候要改命名空间。 操作时两种模式,1.构造函数FileWriter()是先新建对象再用其他函数打开文件 2.FileWriter(string ...

    JavaScript 三种创建对象的方法

    JavaScript中对象的创建有以下几种方式: (1)使用内置对象 (2)使用JSON符号 (3)自定义对象构造 一、使用内置对象 JavaScript可用的内置对象可分为两种: 1,JavaScript语言原生对象(语言级对象),如String、...

    别再问我 new 字符串创建了几个对象了!我来证明给你看!

    我想所有 Java 程序员都曾被这个 new...以目前的情况来看,关于 new String(“xxx”) 创建对象个数的答案有 3 种: 有人说创建了 1 个对象; 有人说创建了 2 个对象; 有人说创建了 1 个或 2 个对象。 而出现多个答案

    phrase-styling-example:演示使用 Phrase 设置文本样式的几种不同方法

    演示使用文本样式的几种不同方法。 Phrase 使用 Android 的文本框架,因此保留了模式和值的任何跨度。 字符串中的 HTML Android 支持使用 HTML 标签的子集直接在字符串资源文件中设置文本样式: ![html in string]...

    string-lite:C ++ 98和更高版本的字符串工具

    创建字符串精简版我看过, , , 以及随着时间的推移创建的几种算法。 lite字符串的特性和属性是易于安装(单个标头),除标准库外的其他依赖项。 执照 字符串lite是在下分发的。 注意:此存储库包含出于的几个...

    Java面试经典题,对JAVA面试很有帮助

    16.Java创建对象有几种方式 17.有没有可能两个不相等的对象有相同的hashcode 18.深拷贝和浅拷贝的区别是什么 19.final有哪些用法 20.static都有哪些用法 21.3*0.1 == 0.3返回值是什么 22.a=a+b与a+=b有什么区别吗 23...

    springmybatis

    1. 在MyBatis 里面创建两个源码目录,分别为 src_user,test_src, 用如下方式建立,鼠标右键点击 JavaResource. 2. 设置mybatis 配置文件:Configuration.xml, 在src_user目录下建立此文件,内容如下: 程序代码 程序...

    level-hash-index:将任何字符串存储到级别中,并获得该值的无冲突散列,您可以在索引或其他东西中使用它

    在制作某种查询引擎时,您通常希望创建以几种不同排列方式存储相同值的索引。 因此,与其在索引中多次存储完整值,不如只存储散列值,从而防止索引的大小膨胀。如何使用它 var HashIndex = require ( 'level-hash-...

    Java面试宝典2020修订版V1.0.1.doc

    34、Java创建对象有几种方式 22 35、写出验证Email的正则表达式 22 39、说出十种常见的异常 22 40什么是检查性异常和非检查性异常? 23 41、Java的异常处理机制是什么? 23 42、一个静态方法,里面可不可以用this和...

    浅谈javascript和java中的字符串

     创建一个字符串有几种方法。  1、简单的是用引号将一组字符包含起来 var myStr = "Hello, String!";// 在js中单双引号没有区别  2、可使用如下语句:var myStr1 = new String("Hello, String!");  ...

    登录验证全局控制的几种方式总结(session)

    一,在一个公共类里创建一个公共方法,然后需要验证的页面都调用这个方法 //在此例子中,就是在入口函数里调用CheckLogin()方法; 代码如下: public static string SeUserID { get { return HttpContext....

    C#中txt数据写入的几种常见方法

    小伙伴们在使用C#开发时,可能需要将一些信息写入到txt,这里就给大家介绍几种常用的方法。 方法: 1.将由字符串组成的数组写入txt 此种方法不需要使用Flush和Close(). 如果没有WriteLines.txt,系统会自动帮忙创建一...

    Android 解决监听home键的几种方法

    Android 解决监听home键的几种方法 前言: 以下两种方法可以完美解决监听back键,home键,多任务键(最近任务键)。 一、使用注册广播监听home键、多任务键 演示图 创建一个广播代码如下: class InnerRecevier ...

    java面试题.docx

    企业常见java面试题,java基础,java进阶 JDK 和 JRE 有什么区别? == 和 equals 的区别是什么? 两个对象的 hashCode()相同,则...创建线程池有哪几种方式? 在 java 程序中怎么保证多线程的运行安全? 什么是死锁?

Global site tag (gtag.js) - Google Analytics