Java中如何在字符处理方法中返回char类型的-1?
Java方法中返回char类型的-1解决方案
在Java里,char是无符号的16位整数类型,取值范围是\u0000到\uffff。要返回代表“-1”的char值,你需要把int类型的-1强制转换为char,转换后得到的是Unicode字符\uffff(对应十进制65535),这个值常被用作“无匹配结果”的标记。
修改你的代码如下:
static char nonrepeatingCharacter(String S) { ArrayList<Character> al = new ArrayList<Character>(); for(int i=0; i<S.length(); i++){ if(!al.contains(S.charAt(i))) al.add(S.charAt(i)); else al.remove(Character.valueOf(S.charAt(i))); } if(al.size() == 0){ // 返回char类型的-1,对应Unicode的\uffff return (char) -1; } return al.get(0); }
补充说明
- 直接写
return -1;会编译报错,因为-1是int类型,无法直接赋值给char类型的返回值,必须通过(char)进行强制类型转换。 (char) -1和(char) 0xffff是完全等价的,因为int类型的-1在二进制补码中是全1,转成16位char后就对应\uffff。
内容的提问来源于stack exchange,提问作者Aman Kumar Shaw
相关产品推荐
相关产品推荐

