当前位置:  技术问答>java相关

String mystr = "test"; 并没有 new 为什么也创建了对象?

    来源: 互联网  发布时间:2017-04-13

    本文导语:  String mystr = "test"; 并没有 new 为什么也创建了对象mystr? 到底是在什么时候创建的?谢了! | 我听说是这样的: 用new String("")来定义的String是新开一块内存区域来存储内容 (赋值给变量)...

String mystr = "test"; 并没有 new 为什么也创建了对象mystr?
到底是在什么时候创建的?谢了!

|
我听说是这样的:
用new String("")来定义的String是新开一块内存区域来存储内容
(赋值给变量),
而直接用=""就是先从一个什么存储空间里(好像叫堆吧)找,
找到了,就把变量指向那个值,
没有的话就在那个存储空间里建这么一个值,然后赋给变量!

说的不对就算我说梦话吧!:)

good luck

|
String mystr = "test"; //虚拟机自动分配
String mystr = new String("test"); //对象分配,再程序中实现。
String是一个特殊对象,你可以通过new来实例化,也可以匿名实例化。
但是匿名实例化的效率比new实例化的效率还要高,你可以试试。

|
String是一个比较特殊的东西 "test"本身就是一个String对象

String mystr= new String("test");

也是正确的,但没必要重复创建对象,

看一下书,仔细体会一下

|
请参考以下文档:
The String class represents character strings. All string literals in Java programs, such as "abc", are implemented as instances of this class. 

Strings are constant; their values cannot be changed after they are created. String buffers support mutable strings. Because String objects are immutable they can be shared. For example: 


     String str = "abc";
 
is equivalent to: 


     char data[] = {'a', 'b', 'c'};
     String str = new String(data);

|
你就把String看作原始类型就可以了!
这个特性只是为了方便,Java给的方便你还有意见啊!

|
我觉得
"test" 应该是一个匿名对象
而java的特点是自动回收,String str申明了一个对象,而这个对象引用了那个匿名对象,从而使用str就相当于使用了"test"

|
String mystr = "test"; 
根本就没有为mystr创建对象吧!
它应该相当于
String temp = new String("test");
String mystr = mystr;

其中temp是JVM自动创建的
mystr只是一个引用而已

类似于C里面:char * p = "hi!";

|
String a = "ABC";
String b = "ABC";
a == b      --> true
a.equals(b) --> true

String a = new String("ABC");
String b = new String("ABC");
a == b      --> false
a.equals(b) --> true

第一个之所以是true是java优化的问题
它跟这个是等价的
String a = "ABC";
String b = a;

|
不知道这句话是不是等效
String mystr= new String("test");

|
""在java中默认为字符串类型,当String mystr = "test"; 时,jvm自动为mystr创建"test"。

|
java 提供String str=""的初始化类

|
默认

|
String 是一个特例
记得就行了

|
同意。java规定 String对象创建的语法与与众不同

|
形同c语言的算符重载,在java中没有这个概念,但是虚拟机对String自动进行算符重载

|
"test".equals("test")

这个是不是能说明一些问题!

    
 
 

您可能感兴趣的文章:

  • session.getAttribute("id")对象怎么变成String类型?
  • 关于剪贴板(对象的复制、粘贴,而非String的复制、粘贴)
  • 请问有什么java共通类能在程序里将unicode转换成String对象?
  • 用什么方法,可以把一个String型的字符串赋给JTextField对象?谢谢!
  • 如何把jtextfield中String型的对象转变成int型,有现成的函数吗?
  • 请教JAVA小问题:如何将含数字的String类型的对象转化为int或long类型
  • 请问java.sql包中 preparedStatement 对象的setString(int parameterIndex,java.lang.String x)方法怎么用?
  • java对象转换String类型的三种方法
  • Java中的String对象数据类型全面解析
  • C#中的DataSet、string、DataTable、对象转换成Json的实现代码
  • 大家来讨论一下关于String对象的"=="问题!
  • c字符串,string对象,字符串字面值的区别详解
  • 如何创建一个file,直接把一个string写入这个file?是否可以不用到outputStream和inputStream?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java中有没有什么方法可以求出数据库表中的字段名?赋到一个String的数组中?
  • 与刚才提问的string有一定关系的一个程序。没有看的,看过的都来看呀!!!
  • 有没有什么函数可以将String转化为Date?
  • 我要在JPanel上画一个字符串String,有没有让它倒立(竖着显示在JPanel上)的函数(类似drawSting()的)
  • 太奇怪了,正在开发bootloader,gcc难道有内置的string的处理函数链接到我的程序中了?我根本没有链接C库啊。
  • System.getProperty(String key),这里的输入参数key有哪些值,有没有查询列表?
  • java命名空间java.lang类string的类成员方法: string定义及介绍
  • 请告知一下String s1 = "mm"; 与String s1 = new String("mm");的区别!
  • C++ Bitsets 成员 to_string():返回bitset的字符串表示
  • String s = new String() 和 String s= null;有什么区别?
  • java命名空间javax.xml.xpath类xpathconstants成员方法: string定义参考
  • 已知a=1,b=2 String string="a+b";如何将string转化为表达式,并计算结果
  • java命名空间javax.management.openmbean类simpletype<t>的类成员方法: string定义及介绍
  • 对String.indexOf(String str,int fromIndex);和lastIndexOf(String str, int fromIndex);的困惑!
  • java命名空间java.io接口objectstreamconstants的类成员方法: tc_string定义及介绍
  • 问个低级的问题:我从库里取汉字时候,代码如下:String ls=ob.test(i);String dbstr1= new String(ls.getBytes("ISO-8859-1"),"GBK");
  • java命名空间javax.xml.ws.handler接口messagecontext成员方法: query_string定义参考
  • c#中 String和string的区别介绍
  • java命名空间java.lang类string的类成员方法: copyvalueof定义及介绍
  • String a="123"与String a=new String("123")出来的两个a,b之间有什么区别???
  • java命名空间javax.imageio.metadata接口iiometadataformat的类成员方法: datatype_string定义及介绍
  • static String和String如何互相赋值?
  • java命名空间javax.print类docflavor.string的类成员方法: text_plain定义及介绍
  • 请问“new String[]{(String ) ob}”怎么理解??
  • java命名空间java.lang类string的类成员方法: valueof定义及介绍
  • 内容是String[]的Object用什么最简单办法转变回String[]
  • java命名空间java.lang类string的类成员方法: tostring定义及介绍
  • 请问String.equals()和String.equalsIgnoreCase()有什么区别啊?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3