String str = "abc" + '/';和"abc" + "/";的区别?

ameyume
博客专家认证
2015-04-23 07:37:51
如题,把斜杠/当作字符或字符串有什么区别呢?
一个是当作基本数据类型char,一个是对象String。具体有什么区别呢?
当作字符效率会更高吗?
String str = "abc" + '/';

String str = "abc" + "/";
...全文
563 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
youzi05 2015-04-24
  • 打赏
  • 举报
回复
引用 9 楼 u011004037 的回复:
额, 关于这个问题我觉得可以使用javap工具, 详细的过程我写了一个博客: http://blog.csdn.net/u011004037/article/details/45248117
额,刚修改了一下, 正在审核中...
引用 10 楼 chenliwen1991303 的回复:
string类型 就是char[] ,“/”就是1个字符的字符串,占的内存都是一样大。
数组不还有一个长度属性吗? 不照样占内存吗?
util_00000 2015-04-24
  • 打赏
  • 举报
回复
string类型 就是char[] ,“/”就是1个字符的字符串,占的内存都是一样大。
youzi05 2015-04-24
  • 打赏
  • 举报
回复
额, 关于这个问题我觉得可以使用javap工具, 详细的过程我写了一个博客: http://blog.csdn.net/u011004037/article/details/45248117
引用 7 楼 kiyoki 的回复:
这种常量字符串编译阶段直接得结果,不存在运行效率差异问题
7楼厉害!!! 在是常量时确实没区别, 可是是变量时就有区别了
ameyume 2015-04-24
  • 打赏
  • 举报
回复
谢谢各位。即使有差别,差别应该不是很大吧。
Tensai-K 2015-04-24
  • 打赏
  • 举报
回复
虽然我不是很懂但是你都是存成了String 类型 应该是char强转了吧
kiyoki 2015-04-24
  • 打赏
  • 举报
回复
这种常量字符串编译阶段直接得结果,不存在运行效率差异问题
JPF1024 2015-04-23
  • 打赏
  • 举报
回复
问题很好,其实如果不是/而是a的话,可能就有差别了
cscxxx 2015-04-23
  • 打赏
  • 举报
回复
楼主提的问题真不错 我一般在做Web项目的时候都是使用字符串的,而且经常都在DB里组好字符串(可能使用Stored Procdure),基本上卡效率的地方不在这里。
youzi05 2015-04-23
  • 打赏
  • 举报
回复
我觉得应该使用的是valueOf方法变为字符串的,毕竟String的构造函数就没有
String(char ch)
只有
String(char[] value)
。 至于说str1和str2参见
String.intern()
方法的介绍
姜小白- 2015-04-23
  • 打赏
  • 举报
回复
刚才猜测了一下,两个在空间存储上完全相同

    private final char value[];

    public String() {
        this.value = new char[0];
    }

    public String(String original) {
        this.value = original.value;
        this.hash = original.hash;
    }
String 在存储中是按照字符数组存储的,所以,字符型的 '/' 和 字符串型的 "/" 到了存储时都是 char[] 数组中的一个字符而已 试了一下

String str1 = "abc" + "/";
String str2 = "abc" + '/';
System.out.println(str1 == str2);
str1 和 str2 相等,而且它们指向同样的字符串常量

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧