String 创建对象问题
Posted wscy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了String 创建对象问题相关的知识,希望对你有一定的参考价值。
# String 创建对象问题
一、String、StringBuffer、StringBuilder区别
- 都是final类,不可被继承。
- 对比,如下表:
String | StringBuffer | StringBuilder | |
---|---|---|---|
对象类型 | 字符串常量(由final 修饰) |
字符串变量 | 字符串变量 |
是否线程安全 | 否 | 是(关键方法由synchronized 修饰) |
否 |
执行效率(一般情况) | 低 | 中 | 高 |
应用场景 | 对字符串操作少 | 多线程、对字符串操作多 | 单线程、对字符串操作多 |
二、创建对象
String str = new String("hello world");
在常量池中创建"hello world",并在堆中创建实例对象,返回堆中对象的引用。
String str = "hello world";
在常量池中创建"hello world"。
String str = "hello" + " " + "world";
由于编译器原因,会直接在常量池创建"hello world"。
String str1 = "hello"; String str2 = str1 + "world";
在常量池中创建"hello",创建
StringBuilder
对象,通过append()
方法加载"hello"。在常量池中创建"world",再通过StringBuilder
的append()
方法加载"world"。PS:在常量池中创建对象时,首先会对常量池进行搜索。如果常量存在,直接返回对常量的引用;反之,在常量池中创建新的常量,再返回对常量的引用。
三、分析工具 javap
win + r
打开 cmd
,进入相应目录,执行:
javac [java]
javap -c [class]
例,
javac Test.java
javap -c Test
以上是关于String 创建对象问题的主要内容,如果未能解决你的问题,请参考以下文章
创建一个叫做机动车的类: 属性:车牌号(String),车速(int),载重量(double) 功能:加速(车速自增)减速(车速自减)修改车牌号,查询车的载重量。 编写两个构造方法:一个没有(代码片段
Failed to convert property value of type ‘java.lang.String‘ to required type ‘int‘ for property(代码片段
Android 逆向使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 创建反汇编解析器实例对象 | 设置汇编解析器显示细节 )(代码片段
11.按要求编写Java应用程序。 创建一个叫做机动车的类: 属性:车牌号(String),车速(int),载重量(double) 功能:加速(车速自增)减速(车速自减)修改车牌号,查询车的(代码片段