String 类型的初始化的三种常见手法:
1、使用new 关键字的话,就可以直接在构造函数中传入String类型的参数,例如:String name = new String("Name");
2、也还可以以char[]类型的参数对构造函数的形参赋值,例如:char[] te = {‘a‘,‘a‘,‘b‘};String s = new String(ch);
3、也还可以使用byte[]数组 实现String构造函数的初始化,其中byte的类型就是以一个一个字节数据类型的大小范围内赋值。其值在0~255之间变化,其中每两个字节数据类型组成一个汉字,比如-61和-26就组成“面”这个字,当然这是根据具体的中文编码类型来判断一个汉字是占用几个字节。具体请查看GB2312和GBK 以及UTF-8 对中文进行编码的细则
4、还可以对char 类型的数组中从某个元素起开始取值到从这个元素开始去多少个字符;同理对byte类型的数组也同样适合。
例如:char[] te = {‘a‘,‘a‘,‘b‘}; String s = new String(ch,0,3);s 的结果值为:aab
但是有一点需注意:结束的值不能超过数组类型的长度;也即 offset+length < 字符数组.length
如果超过了字符数组的长度,这个时候编译不会报错,这是因为在编译阶段,编译器只检查语义和语法上的错误。但运行结果让人出乎意料的:此时会出现StringIndexOutOfBoundsException异常。这一点切记!这也是在开发中通常隐藏的比较深的一类错误,即运行期的错误,也叫逻辑上的错误。这类错误一般是比较难查找的,所以要求我们每位程序员在编代码的时候格外小心,的注意安全呀!
时间: 2024-11-07 00:30:53