锁定老帖子 主题:Java 基础复习笔记一
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (8)
|
|
---|---|
作者 | 正文 |
发表时间:2010-06-04
最后修改:2010-06-05
这两天复习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 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-06-04
topic!!!
|
|
返回顶楼 | |
发表时间:2010-06-04
汗,上了首页!
|
|
返回顶楼 | |
发表时间:2010-06-04
JavaLike 写道 汗,上了首页!
??? |
|
返回顶楼 | |
发表时间:2010-06-04
上首页很正常,提醒大家不要忽略基础
|
|
返回顶楼 | |
发表时间:2010-06-04
woxiaoe 写道 JavaLike 写道 汗,上了首页!
??? ???你不明白吗?人家的意思是这样的帖子竟然也能出现在首页! |
|
返回顶楼 | |
发表时间:2010-06-04
基础很实在很重要呀!
顶! |
|
返回顶楼 | |
发表时间:2010-06-06
woxiaoe 写道
这两天复习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
感觉楼主对java里面很多概念都比较混乱和模糊,为免误人子弟,挑几个说说吧:
13)数组时最简单的复合数据类型,是一系列数据的集合 数组和集合是两个不同的数据结构。数组不仅仅是一系列数据的集合。。。。。
14)java语言中的方法的参数传递时传值调用,而不是地址调用。 我不太明白你的定义中的“值调用” “地址调用”分别是什么,什么叫 值调用?????都是值了,还调用?啥叫调用? 如果我分别理解为 值传递 和 地址传递 ,那你这句话就是错的。 如果我分别理解为 值传递 和 引用传递 ,那可以理解为是正确的。准确的表述应该是 java中只有值传递,没有引用传递。 绝大多数的人认为 对于java中的对象在方法参数传递时,也是传递的值,这个值就是对象的引用(地址)。包过java之父在内的绝大多数人支持这个观点,我学Bruce Eckel,保持中立。
15)出static内部类外,不能再类内声明static成员。 明白你的意思,感觉应该是笔误了吧。修正笔误。 不能在非static的内部类中声明static成员。
21)final修饰的变量一旦被初始化后就不可改变了,对于基本类型来说是其值不可改变,对于对象变量来说是其引用不可改变。其初始化可以在两个地方,一是其定义出,二是在构造函数中,两者只能选其一。
画线部分有问题,final的变量除了在定义的时候 和 构造函数中初始化外,还有2个地方也可以用来初始化final变量:初始化块 和 静态初始化块,但是具体的是有区别的,准确的应该这样描述: 1。 对于final的非静态变量(非static),可以在其定义时,初始化块,或者构造函数等三个地方初始化,三者选其一。 2。 对于final的静态变量(static),可以在其定义时,静态初始化块等两个地方初始化,二者选其一。 特别说明,static的常量不可以在构造函数中初始化。
23)判断一块内存空间是否符合垃圾收集的标准: *给对象赋予了空值null,以下在没有调用过。 *给对象赋予了新值,及重新分配了内存空间
感觉你在这里的描述还是有大问题,建议彻底忘掉你的两种判断方法,唯一判断是否符合垃圾收集标准的是:对象从根进程是否可达。(软链接的情况暂不和你考虑)
按你的判断标准, List<Object> list = new ArrayList<Object>(); Object o = new Object(); list.add(o); o = null; 或者 o = new Object();
按你的标准,o所指向的原来的对象就已经符合垃圾收集的标准了。相信你也知道,实际是不符合的,因为这个对象在虚拟机的有向图中是可达。 说白点,还可以通过list.get(0)来获取这个对象的引用。
另外,从你的描述中感觉你对 对象 的概念不是很理解。 Object o = new Object(); 这句话中,o是一个对象吗?NO。 这句话的含义是,在堆中新建一个对象空间,并把这个对象的引用传递给变量o。变量o本身并不是一个对象。
还有一些描述,水平有限,没看懂。不予评论。以上言论也仅供参考,纳百家之言吧。希望新手谨慎对待楼主的这篇文章。
|
|
返回顶楼 | |
浏览 5413 次