菜鸟学习think in java (三)

来源:互联网 发布:st单片机是什么意思 编辑:程序博客网 时间:2024/05/01 12:45

三四章都是c中的一些基础知识


数字 47,魔幻数字,random(47)的时候出来的序列并非随机的,而是固定的,具体原因也没查出来。


-3中的符号在java中确实表示负,并非其他


Bill Joy  java=C++--这就意味着java已经除去了C++中一些很困难有没有必要的东西,成为一种精简的语言。


短路(short circuit):指通过逻辑表达式的一部分就可以得出结果的情况下,剩下的一部分会不需要计算,潜在的能力会得到提升。因此,在写程序时候可以将比较容易得出结果的或者比较常用的数据或者方法放在前面。


指数计数法:在java中会自动表示为最精简的形式。eg:47e47=4.7e48。表示的由来来自FORTRAN语言。


移位运算符中<<<表示无符号的移位


类型转换:1,宽化转换:2,窄化转换此时需要注意转化数字的风险。    结尾与取舍的概念

截尾:就是直接进行窄化转换,多余部分直接舍弃。

取舍:需要用到round()方法,此时则为四舍五入。


关于sizeof();C或者C++在不动的机器上面,相同的数据类型大小可能不同,但java通过虚拟器可以达到在所有的机器上面都相同,这也是java的一个优势吧。


另外java中不允许将一个数字作为布尔类型来使用,即0和1,只是int不能  a = 0;if (a){};必须通过表达式转化if (a!=0)即可。


针对数组和容器可以更多地使用foreach语句


goto语句:真正的问题不在于goto语句的使用,而是由于goto语句的滥用。


练习题的吸血鬼数字的代码,写的确实比较稀烂。

public class BloodSucker {
public static void main(String[] args) {
int m, n, p;
int a, b, c, d;
int a1, b1, c1, d1;
System.out.println("改程序将会输出传说中的吸血鬼数字,哇哈哈,敬请期待:");
int count = 0;
for (m = 10; m < 100; m++)
for (n = m; n < 100; n++) {
p = m * n;
if (p < 999 || p > 10000)
continue;// 说明该数字并非吸血鬼数字范围,继续
else {
a = m / 10;// 十位
b = m % 10;
c = n / 10;
d = n % 10;
a1 = p / 1000;
b1 = p / 100 % 10;
c1 = p / 10 % 10;
d1 = p % 10;// 得出所有的位数
// 对abcd进行排序,然后进行对比


int[] x = { a, b, c, d };
int[] y = { a1, b1, c1, d1 };
for (int i = 0; i < 4; i++) {
for (int j = i + 1; j < 4; j++) {
if (x[i] < x[j]) {
int swap;
swap = x[i];
x[i] = x[j];
x[j] = swap;
}// 比较交换法
}
}
for (int i = 0; i < 4; i++) {
for (int j = i + 1; j < 4; j++) {
if (y[i] < y[j]) {
int swap;
swap = y[i];
y[i] = y[j];
y[j] = swap;
}// 比较交换法
}
}
if (x[0] == y[0] && x[1] == y[1] && x[2] == y[2]
&& x[3] == y[3]) {
System.out.print(p + "    ");
count++;
if (count == 10) {
System.out.println();
count = 0;
}
}
}

}
}
}