一、字符连接问题
问题:‘H’+'a'的结果是什么? 169
分析:
(1)"+"有两种用法:
- 字符串连接:两个操作数之一一定要是String
- 加法:一般的加法
(2)对于字符,+并没有什么重载方式能够连接两个字符,因此只能执行加法。
(3)对于字符的加法,可以转换成int然后执行加法。
(4)String提供了String.valueOf(char)可以将字符转换成String.
(5)StringBuilder提供
解决方法:
(1)String.valueOf('H')+String.valueOf('c');
(2)""+'H'+'a'
二、字符数组打印问题
问题:
char[] c= {'1','2'};
System.out.println(c);
System.out.println(""+c);
分别打印什么?
12
[C@1234
分析:
(1)字符数组是继承自Object类,但是并没有重载toString()方法,因此如果c.toString()调用的是Object的toString方法。
(2)println重载了println(char[]),因此可以正常打印字符数组。
(3)String.valueOf(char[])也可以将字符数组转换成一个String。
解决方案:
(1)System.out.println(c);
(2)System.out.println(String.valueOf(c));
三、享元模式探究
问题:
String str1 = "123";
String str2 = "123";
System.out.println(str1==str2);
打印结果是什么? true
分析:
(1)这是享元模式的体现,因为如果两个变量有相同的字符串,为了减少内存开销,则两个变量都指向同一个堆内存。
(2)不仅是String,包括int也是一样.
比如:
int i1 = 5000;
int i2 = 5000;
i1==i2返回true。
四、Unicode转义字符和转义字符序列
Unicode转义字符:以\u****形式表示的字符。
转义字符序列:\*形式的字符。
五、注释不会影响编译?不!
问题:
// \uaaa
能通过编译吗?不能。
分析:
(1)在编译之前,程序会把Unicode转义字符转换成Unicode字符,判断依据就是寻找\u开头,如果转换不成功,则出错。
(2)Unicode转义字符一定要合法,就算在注释中,也会被检查。
(3)尽量不要使用Unicode转义字符,因为Unicode转义字符减少了可读性。
六、字符集惹的祸
问题:说出:
(1)String(byte[]);
(2)String(byte[],Charset);的区别。
分析:
(1)String(byte[])使用平台默认的字符集来解码byte数组构造一个新的String,然而给定字节有时在默认字符集上并非有效。
(2)字符集是字节序列和字符序列的转换方式。
结论:
每当一个byte数组转换成一个String对象时,都要显式指定字符集。
七、StringBuffer初始化问题
问题:
StringBuffer sb = new StringBuffer('M');
在sb中的内容是什么?
答案:空。
分析:
(1)首先列出StringBuffer的构造器:
因此没有类似于StringBuffer(char ch)的构造器,而char是一个无符号的字符,可以通过类型转换变成一个int值,调用中间的构造器。
结论:char应该把他看成int,而不是一个String。
八、栅栏柱错误:Random的小细节
Random rnd=new Random();
rnd.nextInt(int n );的规范是选取0~n-1之间的整数(注意n是不包含的)
栅栏柱错误:在处理长度、范围时必须确定端点是否包含在内。
分享到:
相关推荐
Python 字符串深度总结Python 字符串深度总结
VC++字符串截取总结,对初学者很有好处的
字符数组字符指针sizeofstrlen的一点总结
hash字符串函数总结,挥泪大放送,绝对全面,各类总结。
linux 字符设备驱动 字符设备是指在I/O传输过程中以字符为单位进行传输的设备,例如键盘,打印机等。请注意,以字符为单位并不一定意味着是以字节为单位,因为有的编码规则规定,1个字符占16比特,合2个字节。 在...
java字符串的处理,java中常用字符串方法总结,java中常用字符串方法总结,
C语言字符串函数总结: 1.字符处理库(ctype)中的函数 2.stdio中的字符串和字符输入/输出的函数 3.通用实用库stdlib中的字符串转换函数 4.字符串处理库string中的字符串处理函数
参考字符串函数,有strstr strcat strcpy strcmp等
这个是一些c++字符串,CString的常用函数总结。
本文主要针对Javascript中字符串相关常用的使用方法进行了总结
本文对51单片机串口通信中字符发送进行了总结。
MySql连接字符串总结 MySql连接字符串总结
C++字符处理文件总结
字符串比对的几大算法,包括KMP,BM,Sunday等
很全面的总结,十分实用。很全面的介绍了String的用法,很实用,实战总结。
学习字符集的一些问题及解决,还有一些关于字符集的基础知识的学习。
C#_处理字符串方法总结.doc
NULL 博文链接:https://onestopweb.iteye.com/blog/2340047
我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出 256种状态,这被称为一个字节(byte)。 也就是说,一个字节一共...