论坛首页 Java企业应用论坛

Java 基础复习笔记一

浏览 5413 次
精华帖 (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

   发表时间:2010-06-04  
topic!!!
0 请登录后投票
   发表时间:2010-06-04  
汗,上了首页!
0 请登录后投票
   发表时间:2010-06-04  
JavaLike 写道
汗,上了首页!

???
0 请登录后投票
   发表时间:2010-06-04  
上首页很正常,提醒大家不要忽略基础
0 请登录后投票
   发表时间:2010-06-04  
woxiaoe 写道
JavaLike 写道
汗,上了首页!

???



???你不明白吗?人家的意思是这样的帖子竟然也能出现在首页!
0 请登录后投票
   发表时间:2010-06-04  
基础很实在很重要呀!
顶!
1 请登录后投票
   发表时间: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本身并不是一个对象。

 

 

 

 

还有一些描述,水平有限,没看懂。不予评论。以上言论也仅供参考,纳百家之言吧。希望新手谨慎对待楼主的这篇文章。

 

 

 

 

0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics