Java问题总结
在有段时间没有写代码,碰到一些简单的问题也生疏了,现在记下来。\n
(应该用<br>
)
java基本数据类型及其初始值
|
|
| 取值范围 |
---|---|---|---|
byte | 1 | 0 | -128~127 |
short | 2 | 0 | -32768~32767(-2^15~2^15-1) |
int | 4 | 0 | -2147483648~2147483647(-2^31~2^31-1) |
long | 8 | 0L(记得带l或L,最好是L) | -2^63~2^63-1 |
char | 2 | 0(\u0000 ) | \u0000 - u\ffff |
float | 4 | 0.0F/f | -3.40292347E+38-3.40292347E+38 |
double | 8 | 0.0 | -1.79769313486231570E+308-1.79769313486231570E+308 |
boolean | 1 | false | true、false |
求1! +…+100!的问题
做一个小练习,求1!到100!之和。刚看到觉得很简单的问题,两次for循环就可以了,于是有了下面的代码:
/**
求1!+2!+...+100!之和
*/
public class SumTest {
public static void main(String[] args) {
int sum = 0; //总和
for (int i = 1; i <= 100; i ++) {
int temp = 1; //临时变量
for (int j = 1; j <= i; j ++) {
temp *= j;
}
sum += temp;
}
System.out.println("总和是:" + sum);
}
}
在命令行一运行,结果就悲剧了:
总和是:-125961703
然后,明白过来肯定是超出int类型取值范围了。
/**
求1!+2!+...+100!之和
*/
public class SumTest {
public static void main(String[] args) {
long sum = 0L; //总和
for (int i = 1; i <= 100; i ++) {
long temp = 1L; //临时变量
for (int j = 1; j <= i; j ++) {
temp *= j;
}
sum += temp;
}
System.out.println("总和是:" + sum);
}
}
总和是:1005876315485501977
这样就可以了.