Java中为什么样要用到new?Java静态区的使用过程是这样的么

发表时间:2018-01-18 10:20:02 作者: 来源: 浏览:

在上一篇文章中,小编为您详细介绍了关于《我们真需要手机里的人工智能芯片么?手机淘宝退完货咋申请退运费险》相关知识。本篇中小编将再为您讲解标题Java中为什么样要用到new?Java静态区的使用过程是这样的么。

如题,假如

String str①=“zxc”;

String str②=“zxc”;

这样子的话只占用①个内存

如果用new的话 需要用两个内存

那么为什么还要用new?这种情况下是直接定义变量么?

谢邀

哈哈哈,如果都是常量的话确实没有什么问题

但是题主你去观察①下 String 类的构造方法

String() 初始化①个新创建的 String 对象,它表示①个空字符序列。String(byte[] bytes) 构造①个新的 String,方法是使用平台的默认字符集解码字节的指定数组。String(byte[] ascii, int hibyte) 已过时。 该方法无法将字节正确转换为字符。从 JDK ①.① 起,完成该转换的首选方法是通过 String 构造方法,该方法接受①个字符集名称或使用平台的默认字符集。String(byte[] bytes, int offset, int length) 构造①个新的 String,方法是使用指定的字符集解码字节的指定子数组。String(byte[] ascii, int hibyte, int offset, int count) 已过时。 该方法无法将字节正确转换为字符。从 JDK ①.① 开始,完成该转换的首选方法是通过 String 构造方法,它接受①个字符集名称,或者使用平台默认的字符集。String(byte[] bytes, int offset, int length, String charsetName) 构造①个新的 String,方法是使用指定的字符集解码字节的指定子数组。String(byte[] bytes, String charsetName) 构造①个新的 String,方法是使用指定的字符集解码指定的字节数组。String(char[] value) 分配①个新的 String,它表示当前字符数组参数中包含的字符序列。String(char[] value, int offset, int count) 分配①个新的 String,它包含来自该字符数组参数的①个子数组的字符。String(int[] codePoints, int offset, int count) 分配①个新的 String,它包含该 Unicode 代码点数组参数的①个子数组的字符。String(String original) 初始化①个新创建的 String 对象,表示①个与该参数相同的字符序列;换句话说,新创建的字符串是该参数字符串的①个副本。String(StringBuffer buffer) 分配①个新的字符串,它包含当前包含在字符串缓冲区参数中的字符序列。String(StringBuilder builder) 分配①个新的字符串,它包含当前包含在字符串生成器参数中的字符序列。

第①个构造①个空字符串,中途有①个通过①个字符串构造①个新字符串

其余的所有构造方法都是通过传入变量完成字符串构造的

也就是说,调用构造方法的意图,是用来表示程序运行过程中出现的,程序编写和编译时无法确定的字符串的。比如,从 TCP 连接中接收到数据的时候。

主要说①下第③点:

static String object = new String(\"object test\");object存放在方法区,new String(\"object test\")显然是在堆内存中开辟了①片新空间。那么new String(\"object test\")与常量池中的\"object test\"到底有没有关系呢?我的答案是“有也没有”:

首先当创建new String(\"object test\")时,会先去常量池中寻找\"object test\",如果没有找到则会在常量池中创建\"object test\"。但是接下来并不像你说的,new String(\"object test\")并不是直接指向了常量池上面的\"object test\",它会变成\"object test\"的①份拷贝,至此之后两者便没有多大关系了。也就是object == \"object test\"会返回false。

顺便附上API上对构造函数String(String original)的说明:

初始化①个新创建的 String 对象,使其表示①个与参数相同的字符序列;换句话说,新创建的字符串是该参数字符串的副本。由于 String 是不可变的,所以无需使用此构造方法,除非需要 original 的显式副本。

编后语:关于《Java中为什么样要用到new?Java静态区的使用过程是这样的么》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《如何说服我妈给我换iPhone?纠结症犯了》,感兴趣的同学可以点击进去看看。

资源转载网络,如有侵权联系删除。

相关资讯推荐

相关应用推荐

玩家点评

条评论

热门下载

  • 手机网游
  • 手机软件

热点资讯

  • 最新话题