Java生成随机单个字母并返回String类型的简化实现咨询
生成单个随机字母并返回String类型的简洁实现
问题描述
我需要编写一个方法来生成单个随机字母,并返回String类型而非char类型。我已实现了如下方法,但不满当前实现中创建过多临时变量的问题,希望找到更简洁的方式,避免使用char[] temp:
现有实现代码:
public static String randomLetter(){ int num = intInRange(0, 26) + 97; char [] temp = new char[1]; temp[0] = (char) num; return new String(temp); }
依赖的已有方法:
public static int intInRange(int min, int max) { Random rnd = new Random(); return rnd.nextInt(max - min) + min; }
简洁实现方案
完全可以避免创建字符数组,直接利用Java提供的字符串转换方法简化代码:
方案1:使用String.valueOf()
这是最常用的方式,直接将单个char转换为String,可以压缩到一行:
public static String randomLetter(){ return String.valueOf((char) (intInRange(0, 26) + 97)); }
如果想保留可读性,也可以拆成两行(依然无多余临时数组):
public static String randomLetter(){ char randomChar = (char) (intInRange(0, 26) + 97); return String.valueOf(randomChar); }
方案2:使用Character.toString()
效果和String.valueOf()完全一致,是专门用于将单个字符转为字符串的方法:
public static String randomLetter(){ return Character.toString((char) (intInRange(0, 26) + 97)); }
额外优化建议(可选)
你的intInRange方法每次调用都会创建新的Random实例,没必要重复创建,可以把Random声明为静态成员变量,减少对象创建开销:
private static final Random RND = new Random(); public static int intInRange(int min, int max) { return RND.nextInt(max - min) + min; }
内容的提问来源于stack exchange,提问作者Prophet
相关产品推荐
相关产品推荐

