Java中char返回值类型的方法如何实现返回null?
问题根因
char是Java的基本数据类型,基本类型仅支持对应取值范围内的字面量,无法接收引用类型的null值,二者类型不匹配会直接报错。- 你现有代码的最后一行
return null缺少分号,也会触发编译错误。
解决方案
方案1:修改返回值类型为Character(推荐)
Character是char对应的包装类(引用类型),天然支持null值,是这类需求的常规实现方式,修改后的代码如下:
import java.util.*; public class Test { public static void main(String[] args) { char[] characterArray1 = {'D', 'B', 'C', 'A', 'B', 'A'}; char[] characterArray2 = {'D', 'B', 'C', 'A', 'E', 'T'}; Character res = FRC(characterArray2); if (res == null) { System.out.println("数组中无重复字符"); } else { System.out.println("首个重复字符为:" + res); } } // 返回值改为Character类型 public static Character FRC(char[] array) { HashMap<Character, Integer> hashMap = new HashMap<>(); for(char character: array) { if(hashMap.containsKey(character)) { return character; }else { hashMap.put(character, 1); } } return null; } }
方案2:约定特殊标记字符(保留char返回值)
如果要求必须保留char作为返回值类型,可以提前约定一个不会出现在业务字符范围内的特殊值作为无重复的标识,比如空字符'\0',修改后代码如下:
public static char FRC(char[] array) { HashMap<Character, Integer> hashMap = new HashMap<>(); for(char character: array) { if(hashMap.containsKey(character)) { return character; }else { hashMap.put(character, 1); } } // 用空字符代表无重复,可根据业务场景替换为其他不会用到的特殊字符 return '\0'; }
调用时判断返回值是否等于约定的特殊字符,即可判断是否存在重复。
内容的提问来源于stack exchange,提问作者ZQY
相关产品推荐
相关产品推荐

