1、String 支持操作符+和+=
也就是说可以
String test="abc"+"edf";
和String test+="ghi";
2、赋值操作符=
对于基本数据类型的=,如a=b;(包括string)
可以把b的值赋给a,而b的值不变,a仅是值改变;
对于对象赋值,如Test a和Test b
如果a=b,b的引用赋值给a;那么a和b便指向同一块内存,也即是a/b其中一方改变,另一方也会同样改变
备注:JS中,使用 = 获取的数组和对象,指代的也是同一块内存。
3、Random对象
Random r1=new Random(47);
Random r2=new Random(47);
这里的47为随机数生成器的种子,你可以任意写,只要是long类型的数字即可
当你的种子相等时,每一次所生成数字的大小的相等的,所以为了避免重复,可以不写种子,
这样Java就会以当前时间作为随机数种子。
r1.nextInt(100);这里的100规定的是范围,意思是生成的数只取0——100之间的(包括0,不包括100)
附带一句,作者说的魔幻数字47,没有任何特别的地方,私下认为是作者的一种编程习惯
而Math.random()产生的则是0——1之间的double值,包括0,但不包括1.
4、equals比较的是值是否相同,而==比较的是引用
但是当用equals比较实体类时,
如,Test a=new Test();Test b=new Test();
a.equals(b);时
需要重写equals方法,因为equals的默认行为是比较引用。
5、指数计数法用e来表示
如float f=2e12f;输出为2E12,意思为2*1012次方;
20.2e-4,输出为2.02e3;
6、基本类型转换
如果3.98要转换成整数如int类型,则为3(这种结果和Math.floor(3.98)是一样的,都是截取小数)
如果想按照四舍五入的方法,那么通过Math.round(3.78);的方法
在运算时char,byte,short会自动转换为int
float会转换成double
看thinking in Java 第3章总结
1、foreach
任何一个返回一个数组的方法都可以用foreach
其中(以前没干过)可以这样
for(char c:"someone is a good boy and handsome".toCharArray())
{
System.out.print(c+"/");
}
任何一个Iterable对象
看thinking in Java 第5章总结
程序的赋值步骤为
父类的静态变量赋值
自身的静态变量赋值
父类成员变量赋值
父类块赋值
父类构造器赋值
自身成员变量赋值
自身块赋值
自身构造器赋值
2、对于数组int a[]={1,2,3,4,5};
可以使用Arrays.toString(a);来进行遍历。
3、从jdk5开始,增加了可变参数列表,如下所示
public void ma(int... args){
for(int each:args){
System.out.println(each);
}
}
只要类型正确,可以输入>=0个参数,也可以输入一个int或Integer类型的数组(注意是一个,重要的自己去说三遍)。
甚至你可是写几个可变参数的重载方法,如
ma(char...args){}
ma(long...args){}
ma(int...args){}
4枚举Enum
Enum是在jdk5以后添加的,Enum中都为常量,所以用大写书写,如下:
public enum MoneyEnum {
ONE,TWO,THREE,FOUR,FIVE
}
Enum中有toString(),来显示某个enum的名字;有ordinal()方法,又来表示某个特定enum的声明顺序;
有static values(),按照enum的声明顺序,来生成由这些常量生成的数组。
Enum写在单独的一个类中
public class EnumTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
for(MoneyEnum e:MoneyEnum.values()){
System.out.println(e+",ordinal "+e.ordinal());
}
}
}
Enum支持switch遍历;