Java中String使用总结(1)
来源:互联网 发布:js定时器重复执行 编辑:程序博客网 时间:2024/05/16 10:30
Java中的String是不可变类,意味着每次对String的操作得到的都是一个从全新的对象。在项目中对多个字符串进行操作,使用StringBuilder,如果涉及到线程安全则用StringBuffer。在String的使用过程中还有一些需要注意的地方。
1. 避免递归调用
如果要打印一个对象的内存地址,因为this代表的是当前对象,我们可能会这么写
@Override public String toString() { return "C{" + "name='" + name + '\'' +this+ '}'; }
但是在调用该对象的toString()方法的时候会出现如下的错误:
Exception in thread "main" java.lang.StackOverflowError at java.lang.AbstractStringBuilder.appendNull(AbstractStringBuilder.java:493) at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:446) at java.lang.StringBuilder.append(StringBuilder.java:136) at javatest4.C.toString(C.java:21) at java.lang.String.valueOf(String.java:2994) at java.lang.StringBuilder.append(StringBuilder.java:131) at javatest4.C.toString(C.java:21) at java.lang.String.valueOf(String.java:2994) at java.lang.StringBuilder.append(StringBuilder.java:131) at javatest4.C.toString(C.java:21) at java.lang.String.valueOf(String.java:2994) at java.lang.StringBuilder.append(StringBuilder.java:131) at javatest4.C.toString(C.java:21) at java.lang.String.valueOf(String.java:2994) at java.lang.StringBuilder.append(StringBuilder.java:131)
这是因为出现了递归调用,当编译器遇到this时,它会去找当前对象的toString()方法,但在toString方法中又有this,就会出现循环引用的情况。如果想要打印内存地址,将this改成super.toString()即可。
2. 使用format格式化输出
在开发中,我们经常需要打印一些信息到日志文件或控制台中。可以使用String.format()或是printf方法来格式化输出。
public static void main(String[] args) { C c = new C(); System.out.printf("[output Str:%s]\n", c.printStr("hello world")); System.out.println(String.format("[output Str:%s]", c.printStr("hello world"))); }
输出的结果:
[output Str:HELLO WORLD]
[output Str:HELLO WORLD]
常用的类型转换字符
阅读全文
0 0
- Java中String使用总结(1)
- Java中String类总结
- Java中字符串String总结
- java中String类总结(更新中)
- Java中String的使用
- Java中String.format()使用
- java中String 的==和equals;String直接赋值和使用new String()
- Android中string.xml使用总结
- Android中string.xml使用总结
- Android中string.xml使用总结
- Android中string.xml使用总结
- Android中String.xml的使用总结
- Android中string.xml使用总结
- Android中string.xml使用总结
- Java 中String类的终极总结
- Java中String的用法总结
- Java 中String类的终极总结
- java中String的操作总结
- 使用命令行工具编译C#程序
- spring学习笔记十六 重用切点表达式
- spring mybatis 搭建环境
- hdu2176取(m堆)石子游戏 ——Nim 博弈
- Android Framework
- Java中String使用总结(1)
- 【MySQL】InnoDB体系结构之后台线程
- velocity
- 职场故事 -- 一天看一遍
- first-missing-positive
- javaSE基础总结1-3章
- 我的第一篇CSDN博客
- 网络编程与并发-线程、进程、协程
- pgpool性能测试