这两天复习java的基础知识,把一些自己认为比较有用的点记录下来。
1)合法标识符是以"$","_",和字母为开始的字符串。
2)'\r'表示回车符,'\n'表示换行符
3)不是所有的Unicode的字符都可以直接用做char类型常量,比如'\r','\n'需要用反斜杠做转义才可以。
4)一个整形的数据达到整型能表示的最大数值后,再加1,则机器产生上溢,结果为整型的最小值。如果该数据达到了整形能表示的最小数值后,再减一,这机器产生下溢,结果为整形的最大值。实型变量如果下溢,者计算机设置为0.0;如果上溢这机器设为+-Infinity(正负无穷大)
5)char为16为的Unicode字符
6)byte类型的范围是 -128~127,char类型的范围是0~65535,short 类型的范围是-32768~32767
7)double类型的数据占64位的存储空间。
8)char类型数据可以自动转换为除了boolean类型数据之外的任何简单数据类型
9)浮点数做除法是,如果分母为0.0则不会出现溢出,系统默认的结果为NaN特殊值
10)short类型的数据在计算机中存储时是按照高位数据在前,低位数据在后进行的
11)boolean只有true和false两个值,不能做类型转换,包括自动和强制
12)接口属于复合类型
13)数组时最简单的复合数据类型,是一系列数据的集合
14)java语言中的方法的参数传递时传值调用,而不是地址调用
15)出static内部类外,不能再类内声明static成员
16)抽象方法不一定在抽象类中,也可以在接口中。
17)单处理机的计算机上,2个线程实际上不能并发执行
18)线程是程序的一个单个执行流
19)线程可以通过调用sleep()方法使比当前线程低优先级的线程运行
线程可以通过调用yield()方法使和当前线程优先级一样的线程运行,若没有相同优先级的线程处于可运行状态,线程用yield()方法时,当前线程将继续执行
20)进程是有代码,数据,内核状态,以及一组寄存器组成的。java线程模型就是一个虚拟的cpu,程序代码和数据的封装体
21)final修饰的变量一旦被初始化后就不可改变了,对于基本类型来说是其值不可改变,对于对象变量来说是其引用不可改变。其初始化可以在两个地方,一是其定义出,二是在构造函数中,两者只能选其一
22)HashMap允许一个null的键和多个null值,Hashtable不允许。HashMap把Hashtable的contains方法去掉了,改成了containsvalue 和containsKey.
Hashtable方法是同步的,而HashMap不是
23)判断一块内存空间是否符合垃圾收集的标准:
*给对象赋予了空值null,以下在没有调用过。
*给对象赋予了新值,及重新分配了内存空间
24)*抽象类不可以初始化,
*如果一个类里有一个以上的抽象方法,则该类必须声明为抽象类,该方法必须声明为抽象的,此时抽象方法是不可以有body的
*抽象类中也可以有非抽象方法,非抽象方法与一般类相同
*抽象类中如果全是抽象方法,那么抽象类就是一个纯抽象类,整个抽象类也就变成了接口。
25)对于一个static的方法而言,无法访问泛型的类型参数,所以static方法需要使用泛型能力,就必须使其成为泛型方法。
26)在泛型代码内部,无法获得任何有关泛型参数类型的信息
27)无论何时对同一个对象调用hashCode()都应该生成同样的值。散列码不比是独一无二的,但是通过hashCode()和equals()必须能够完全确定对象的身份
28)如果一个后台线程,那么它创建的任何线程将被自动设置成后台线程。
29)Math.round() 返回与参数最接近的长整数
30)abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized (不能)
31)传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich