Java中该代码写法是否规范?求内存优化方案与最佳编码惯例
原代码的实践判定
这段代码属于不良实践,主要问题包括:
- 用逗号分隔多行变量声明,可读性差,后续维护时很难快速定位单个变量的定义。
Math.random()返回的是[0.0, 1.0)区间的double值,直接强转成int会把小数部分截断,结果永远是0,完全达不到生成随机整数的目的。sum = (num1 + num2)里的括号纯属于冗余写法,既没实际作用,还会干扰代码阅读。
内存高效的实现方式
如果你的需求是生成指定范围的随机整数并求和,推荐用Random(单线程场景)或者ThreadLocalRandom(多线程场景,性能更优),示例代码如下:
单线程场景
import java.util.Random; public class RandomSumDemo { public static void main(String[] args) { Random random = new Random(); // 生成 [0, 99] 区间的随机整数,可根据需求调整数值范围 int num1 = random.nextInt(100); int num2 = random.nextInt(100); int sum = num1 + num2; System.out.print("sum is " + sum); } }
多线程场景
import java.util.concurrent.ThreadLocalRandom; public class RandomSumDemo { public static void main(String[] args) { // 生成 [0, 99] 区间的随机整数 int num1 = ThreadLocalRandom.current().nextInt(100); int num2 = ThreadLocalRandom.current().nextInt(100); int sum = num1 + num2; System.out.print("sum is " + sum); } }
要是你只是想生成0或1的随机数(毕竟原代码强转后只能得到0),也可以这么写:
int num1 = Math.random() > 0.5 ? 1 : 0; int num2 = Math.random() > 0.5 ? 1 : 0; int sum = num1 + num2; System.out.print("sum is " + sum);
但这种场景下用Random的nextBoolean()会更直观:
Random random = new Random(); int num1 = random.nextBoolean() ? 1 : 0; int num2 = random.nextBoolean() ? 1 : 0; int sum = num1 + num2;
高效且恰当的编码惯例
- 变量声明:每个变量单独占一行,方便后续加注释、修改,可读性拉满。
- 随机数生成:
- 单线程用
Random,多线程优先用ThreadLocalRandom(不用手动处理同步,性能更高),别再直接强转Math.random()来生成整数。 - 明确随机数的范围,用
nextInt(int bound)这类带参数的方法,业务意图一目了然。
- 单线程用
- 冗余代码清理:删掉没用的括号、多余空白,保持代码简洁但不牺牲可读性。
- 格式规范:保持统一的缩进和换行,变量名对齐可以按团队规范来,但优先保证单个变量一行的原则。
内容的提问来源于stack exchange,提问作者Abhijit Bhangale
相关产品推荐
相关产品推荐

