黑马程序员技术交流社区

标题: java易错知识点总结 [打印本页]

作者: GoldMan    时间: 2015-6-9 22:17
标题: java易错知识点总结
1.java中的main方法是静态方法,即方法中的代码是存储在静态存储区的。

2.任何静态代码块都会在main方法之前执行。

3.java程序的初始化顺序:原则:静态优先于非静态,且只初始化一次;父类优先于子类;按照成员定义顺序初始化。
例顺序:父类静态变量,父类静态代码块,子类静态变量,子类静态代码块,父类非静态变量,父类非静态代码块,父类构造函数,子类非静态变量,子类非静态代码块,子类构造函数。

4.java中一个文件可以定义多个类,但只能有一个类被public修饰,且访问的类名与文件名必须相同,每一个类都会生成一个字节码文件。

5.构造函数的特点:1)名字必须与类名相同;2)构造函数不能被继承,不能被覆盖,但是可以被重载;3)子类可以通过super关键字来显示的调用父类的构造函数,但当父类没有提供无参的构造函数时,子类的构造函数必须显示的调用父类的构造函数。

6.java中的接口常量默认使用public static final修饰。

7.java在处理基本数据类型时,都是按照值传递,其他的都是按照引用传递。

8.clone方法,深复制和浅复制的区别:深复制把复制的对象所引用的对象都复制了一遍;浅赋值仅仅赋值所考虑的对象,不复制他所引用的对象。

9.三种获取类的方法:1)class.forName(); 2)类名.class; 3)实例.getClass()。

10.四种创建对象的方法:1)通过new实例化;2)通过反射机制;3)通过clone()创建;4)通过反序列化的方式创建对象。

11.当子类中定义的成员变量和父类中定义的成员变量相同时,子类成员变量会覆盖父类的成员变量,不会继承。

12.java提供两种用于多态的机制,编译时多态和运行时多态。编译时多态是通过方法重载实现的,运行时多态是通过方法覆盖实现的。

13.方法重载和方法覆盖:覆盖是子类和父类之间的关系,是垂直关系;重载是同一个类中方法之间的关系,是水平关系。覆盖要求参数列表相同,重载要求参数列表不同。

14.抽象类和接口的异同:1)abstract只能用来修饰类或者方法,不能用来修饰属性。2)抽象类表示的是一个实体,而接口表示的是一个概念。
3)只要包含一个抽象方法的类就必须被声明为抽象类 4)子类为父类中的所有抽象方法提供具体的实现,否则他们也是抽象类。
相同点:1)接口和抽象类都不能被实例化 2)接口的实现类或者抽象类的子类只有实现了他们之中的抽象方法后才能被实例化。

不同点:1)接口只有定义,其方法不能再接口中实现,只有实现接口的类才能实现接口中定义的方法,而抽象类可以有定义与实现,即方法可以在抽象类中被实现
2)接口需要实现implements 但抽象类需要被继承extends,一个类可以实现多个接口,但是一个类智能继承一个抽象类。
3)接口强调特定功能的实现,设计理念为has-a;抽象类强调所属关系,其设计理念为is-a
4)接口中定义的成员变量默认为public static final,只能够有静态的不能被修改的数据成员,而且必须为其赋初值,所有成员方法必须是public和abstract的。
抽象类可以有自己的数据成员,也可以有费抽象的方法,成员默认为default的,也可以被定义为private,protected和public的。
当功能需要被积累时,使用抽象类,不需要积累时,使用接口。
5)接口被用于实现比较常用的功能,便于日后的维护或者添加删除方法,抽象类更倾向于充当公共类的角色。
接口可以继承接口,抽象类可以实现抽象类,抽象类也可以继承具体类,抽象类也可以有静态类的main方法。

15.内部类:主要分为四种 静态内部类 ;成员内部类 ;局部内部类 ;匿名内部类
1)静态内部类不能与外部类有相同的名字,不能访问外部类的普通成员变量,只能访问外部类中的静态成员和静态方法;非静态内部类不能有静态成员。
2)局部内部类像局部变量一样,不能被public protect private以及static修饰
3)匿名内部类是一种没有类名的内部类,不能使用关键字class extends implements 没有构造函数,他必须继承其他类或者实现其他接口。

16.this与super:this指针指向当前实例对象,super可以用来访问父类的方法或者成员变量。
17.当子类的构造函数需要调用父类的构造函数时super()必须为构造函数中的第一条语句。

18.final,finally,finalize区别:
final:1)final用于声明属性,方法,类,表示不可变属性,方法不可覆盖,类不可被继承。(不可变有两层含义:引用不可变;对象不可变。final指的是引用的不可变)
2)final类,该类不能被继承,所有的方法不能被重写,但是属性可变。一个类不能既被声明为abstract又被声明为final。
finally:作为异常处理的一部分,跟在try/catch后并且附带一个语句块,表示这段语句最终一定会被执行。
finalize:是object类的一个方法,在垃圾回收器执行时会调用被用于回收对象的finalize方法。

19.assert:作为一种软件调试方法,住要作用是对一个boolean表达式进行检查
与C语言中的assert异同:java是assert是关键字,C语言中使用的是库函数,assert是编译时开启,而java语言则是在运行时开启。

20.static关键字:主要作用:为某种特定的数据类型或者对象分配单一的存储空间;实现某个方法或属性与类而不是与对象关联在一起。
1)静态成员变量:静态成员变量属于类不属于某个对象,在内存中指有一个复制,另外,java中不能在成员函数内部定义静态变量。
2)静态成员方法:静态方法属于类不属于某个对象,静态方法中不能使用this和super关键字。static关键字一个很重要的用途就是用来实现单例模式。(单例模式:隐藏构造函数,提供一个静态创建对象的方法)
3)静态代码块:不在任何一个方法体内且只执行一次。

21.switch语句:支持int 或者int的包装类Integer ,一些能隐式转化成int类型的例如short byte 和 char 还有他们的包装类也支持。另外Java7中开始支持String类型。

22.volatile:是一个类型修饰符,他是被设计用来修饰不同线程访问和修改的变量。系统每次用到它的时候会从对应的内存当中提取。

23.instanceof:是java语言中的一个二元算符,他的作用是判断一个引用类型的变量所指向的对象是否是一个类的实例。

24.java中存在八种基本数据类型:byte short int long float double char boolean(需要注意java中默认声明的小数是double类型的,所以float a=1.1是不合法的)

25.不可变类:所有基本类型的包装类都是不可变类(引用不可变)。
创建一个不可变类五个原则:
1)类中所有成员变量被private所修饰。
2)类中没有写或者修改成员变量的方法,只提供构造函数一次生成。
3)确保类中的所有方法不会被子类覆盖(利用final达到目的)。
4)如果一个类成员不是不可变类,那么在成员初始化或者使用get方法获取该成员变量时,需要通过clone方法来确保类的不可变性。
5)如果有必要覆盖Object的equals和hashCode方法。

26.值传递和引用传递:1)在方法调用中,实参会把它的值传递给形参,形参知识用实参的值初始化一个临时的存储单元,形参虽然与实参有相同的值却有着不同的存储单元。
2) 原始数据类型在传递参数时都是按照值传递,而包装类型都是按照引用类型在传递。

27.不同数据类型的转换:
自动转化。
1)char类型会转换为高级类型,会专函为其对相应的asc码。
2)byte char short类型参与运算时会自动转换为int类型。但当使用+=时就不会产生类型转换。
3)基本数据类型和boolean类型时不能相互转化的。
当需要高级数据类型转化为低级数据类型时就需要进行强制类型转换。

28.round ceil floor方法:round方法表示四舍五入,ceil方法表示向上取整,floor方法表示向下取整。

29.i++表示先使用i在给i自增,++i表示先给i自增,在使用i。

30.>>与>>>:>>在执行右移操作时,若参与的数字为正数,则在高位补零,若为负数,则在高位补1。>>>则不同,无论运算的数字为正数或负数,在执行运算时都会在高位补0。
作者: 下一页5    时间: 2015-6-9 22:18
大神啊 啊,写的真认真啊
作者: 朱智琳    时间: 2015-6-9 22:26
不错不错
作者: feng0606    时间: 2015-6-9 22:26
总结的真好,学习了.
作者: 痞子刘忙    时间: 2015-6-9 22:27
学习了,总结的很全面
作者: DAN66    时间: 2015-6-9 22:42
好详细!谢谢楼主
作者: hieiyukina    时间: 2015-6-9 22:55
挺有用的 还很详细 谢谢分享
作者: 王沙龙    时间: 2015-6-10 09:28
学习了,呵呵
作者: jife94    时间: 2015-6-10 09:53
总结的很好,收藏一个
作者: pizhihui    时间: 2015-6-10 10:16
总结的很好,谢谢分享!
作者: 梧樱楠    时间: 2015-6-10 13:24
感觉很赞!!
作者: lucien_he    时间: 2015-6-10 15:13
学习下  ~~
作者: yang9876q    时间: 2015-6-10 15:21
不错,有的依旧看不懂,慢慢学吧
作者: meng12    时间: 2015-6-10 16:12
写的很有帮助
作者: 雪域星辰    时间: 2015-6-10 17:30
这个很有用哦。。。
作者: 嘎路的米    时间: 2015-6-10 18:56
牛人啊,佩服,居然总结那么细
作者: Monster    时间: 2015-6-10 19:59
得好好看看,总结的真用心
作者: 杜黎明    时间: 2015-6-10 20:25
好像很不错的样子
作者: 小车车    时间: 2015-6-10 20:49
总结的不错!
作者: SHISY    时间: 2015-6-10 21:56
真好,学习了

作者: shame00    时间: 2015-6-10 22:56
受教了  谢谢 分享
作者: fecuznmn    时间: 2015-6-10 22:58
学习学习 哈哈
作者: 蓝菊蚊香2    时间: 2015-6-10 23:01
不错不错,感觉很详细
作者: 金亮0602    时间: 2015-6-11 00:37
针对性很强,尤其是对初学者有很大的指导作用,便于把握重点、易混点。
作者: 半山岩    时间: 2015-6-19 21:13
总结得太好了
作者: 牵着蜗牛去逛街    时间: 2015-7-19 10:38
总结的不错,继续学习。。。
作者: 泪奔小子    时间: 2015-7-19 12:28
GoldMan 发表于 2015-6-9 22:17
1.java中的main方法是静态方法,即方法中的代码是存储在静态存储区的。

2.任何静态代码块都会在main方法之 ...

写的挺认真的
作者: Wqi    时间: 2015-7-19 13:33
学习了,谢谢分享。
作者: No98342    时间: 2015-7-19 13:42
谢谢啦 有些东西有用
作者: Matrix_heima    时间: 2015-7-19 14:23
总结的很好,谢谢分享,收藏了
作者: 晓月残魂    时间: 2015-7-19 18:29
总结的真好,学习了.
作者: yongaidongbing    时间: 2015-7-19 18:57
。。。。。。。。。。。。。。
作者: 王文辉    时间: 2015-7-19 19:22
写的不错,支持
作者: Frank2008    时间: 2015-7-19 19:30
这个强,总结的灰常好!!!
作者: javaking    时间: 2015-7-19 19:32
感谢分享
作者: oooohnick    时间: 2015-7-19 20:08
这个好!!!谢谢分享!
作者: 官沛    时间: 2015-7-19 20:22
感谢楼主,真心不错!
收下啦~
作者: lyx5201324    时间: 2015-7-19 21:27
学习了,总结的很全面
作者: 刘贤俊    时间: 2015-7-20 00:02
总结的很好,值得收藏。
作者: 胡家兵    时间: 2015-7-20 00:07
真是认真,学习了 ,感谢分享
作者: 神兽    时间: 2015-7-20 00:09
好详细,领教了
作者: tao13yang    时间: 2015-7-20 00:17
总结总结,
作者: Holmes    时间: 2015-7-25 11:27
大神,感谢分享。。。
作者: 端详眼    时间: 2015-8-16 19:14
楼主辛苦了,手动点赞
作者: 探险家丶    时间: 2015-8-16 21:11
赞一个,写的不错。
作者: 小黑与小白    时间: 2015-8-16 21:16
还不错!!!!
作者: Swornf、时年    时间: 2015-8-17 09:27
赞一个!
作者: l_15562009298    时间: 2015-8-17 09:55
哎呦 不错欧
作者: 1231312331    时间: 2015-8-17 19:21
学习了,谢谢。。

作者: 虚心的小菜    时间: 2015-8-17 21:31
赞赞赞!
作者: liuch111    时间: 2015-8-18 10:56
涨姿势了
作者: 18734903493    时间: 2015-8-18 11:28
总结的很好啊!
作者: zzy1990    时间: 2015-8-18 11:37
学习了,哈哈
作者: 风华正茂    时间: 2015-8-18 12:21
楼主总结得不错,谢谢分享
作者: 木石不是牧师    时间: 2015-8-18 13:06
经典经典
作者: visen    时间: 2015-8-18 19:04
谢谢楼主分享,非常好的资料
作者: sunsteam    时间: 2015-8-18 21:31
内容不错 收藏了
作者: 冷小六    时间: 2015-8-18 21:37
认真地温故了一下
作者: xp2015    时间: 2015-8-18 21:41
GoldMan 发表于 2015-6-9 22:17
1.java中的main方法是静态方法,即方法中的代码是存储在静态存储区的。

2.任何静态代码块都会在main方法之 ...

嗯 总结的很详细 好记忆不如烂笔头 常总结 常看看
作者: 超级宝贝乐爷    时间: 2015-11-16 23:41
收藏了等会回去好好看看
作者: 申请补助没成功    时间: 2015-11-17 00:14
写得好,学习了
作者: 小鹿    时间: 2015-11-17 08:58
兄弟! 这种精神值得我们学习啊!!你上就业班了吗?
作者: Little_jie    时间: 2015-11-17 10:05
总结的很详细,学习了
作者: 洛荣神川    时间: 2015-11-17 10:15
有点长 谢谢分享哦
作者: 西伯利亚的雪景    时间: 2015-11-17 12:08
先收藏再看,顶个贴~!
作者: ppaapc    时间: 2015-11-17 19:48
学习了  多谢楼主

作者: songjianzaina    时间: 2015-11-17 23:29
学习了~
作者: xiao15779706    时间: 2015-11-18 08:39
总结的真好 赞一个
作者: 大耳冬    时间: 2015-11-18 10:44
学习了,楼主好人。
作者: Rocky_zhang    时间: 2015-11-18 13:53
太详细了,真的好好
作者: fslichen    时间: 2015-11-18 15:45
总结的非常好,谢谢分享!
作者: 袁有福123    时间: 2015-11-18 22:57
写的很认真很详细 把这些知识点全部整合到了一起 更容易理解进去 很棒的总结!
作者: xiaoxiao147    时间: 2015-11-18 23:09
很好。总结的很详细
作者: mlxg    时间: 2015-11-18 23:27
哇,真有心,赞一个,以后可以多看看啦、!!!
作者: sshh11    时间: 2015-11-19 00:04
太全了  学习了现在
作者: DoubleUUU    时间: 2015-11-19 00:14
好东西,学习了
作者: 小妖精    时间: 2015-11-30 11:26
哇塞,都太会总结了,给力
作者: Ansel_young    时间: 2015-11-30 21:36
很好啊~支持一下
作者: Little_jie    时间: 2015-11-30 21:43
学习,总结的很好
作者: Endless_paradox    时间: 2015-12-2 13:22
总结的太好了,学习了
作者: Flower.    时间: 2015-12-2 14:29
感谢楼主分享知识!
作者: 一个人的朝圣    时间: 2015-12-2 14:31
总结的很不错,多谢分享了
作者: 再续啸傲    时间: 2015-12-2 18:42
get And look look
作者: Little_jie    时间: 2015-12-2 21:40
总结的全面,学习了
作者: eddy1820    时间: 2015-12-2 21:44
受益良多,感謝分享
作者: Rocky_zhang    时间: 2015-12-2 22:39
任何静态代码块都会在main方法之前执行
  楼主的这个好像我觉得不是很赞同。所有的程序入口都是先从main方法开始执行,怎么说任何静态的代码块会在main方法之前执行呢?
作者: 星晴。    时间: 2015-12-3 01:43
整理的不错,谢谢分享~~~
作者: hansnowqiang    时间: 2015-12-3 11:02
收藏必须的
作者: 蔡泽杰    时间: 2015-12-3 12:28
这个好,get起来
作者: zhangguohui    时间: 2015-12-3 15:15
666666666666
作者: Weidan    时间: 2015-12-3 20:29
我在论坛收藏的第一个帖子 觉得有必要收藏
作者: 牛德阳    时间: 2015-12-3 21:20
记下来了很有用
作者: 八宝    时间: 2015-12-3 21:58
谢谢总结 收藏多看看复习
作者: yangzelin    时间: 2015-12-3 22:37
写的挺认真的,加油。
作者: liuruhui    时间: 2015-12-3 22:51
6666666666666666666666
作者: 队长别开枪是我    时间: 2015-12-3 23:28
马克下  方便日后学习~
作者: 会走路的二百块    时间: 2015-12-7 22:20
总结的很好,对自己非常有帮助
作者: hyl    时间: 2015-12-7 22:25
恩,很好。总结的很全面。
作者: zhanganping    时间: 2016-1-15 22:23
全面展示了Java的 基础,有这个在,想考不上就业班都难,赞
作者: songMr    时间: 2016-2-23 21:51
总结的很全面




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2