最近闲的无聊,开始学Java,呵呵!
Java这东西火了那么多年了,本小飞龙一直没好好学过(之前在折腾别的),不过最近要捣鼓IPhone、Android这些好玩的东西,觉得还是有必要学学Java(没办法,微软那个该死的Mobile太不成气了)
在学习的过程中,本小飞龙习惯于做学习笔记,所以,今后学到哪里,就记到哪里,便于将来查找资料回顾之用!
本文总结一下Java SE 的一些基本知识(没办法,只能写这个,因为我只学到这里),由于都是基础知识,最所以想到什么就写什么,随笔而已,遗漏的今后再慢慢补充进来!
说明一下:这里参考的学习资料是:
1)马士兵的那一套视频
一、Java的变量:分为两种
基本数据类型有4类8种:
整数类型:byte、short、int、long 注意:向上转型
浮点类型:float、double 注意:默认是double型,如果用float型要在数字后面加 f
字符类型:char
逻辑类型:boolean
Java的引用数据类型:
除了上面的8种基本数据类型之外的,都是引用型
二、成员变量与局部变量的区别
三、Object类下的几个重要方法
1、toString()这个函数可以重写,以便于输出一个字符串,描述一个类;如果字符串 + 一个类,在进行打印输出的时候,会自动调用类的toString()方法
2、什么是hashCode
3、equals()这个方法一般都应该重写,用于比较两个对象是否完全一样
如果不重写,将会调用默认的父类方法(Object类中的是 a == b ),比较的是当前对象的引用与要比较对象的引用是不是指向同一个对象;所以一般要重写!
注意:比较的对象不能为空值(null),见下面代码片段:
四、多态的本质(要点)
1、new出来的对象是什么,就是什么
2、将子类对象赋值给基类引用变量,基类引用变量能看到的只是一部分成员变量
3、将子类对象赋值给基类引用变量,基类引用变量能看到的只是一部分方法(在没有重写方法的情况下)
4、将子类对象赋值给基类引用变量,在有重写方法的情况下(也就是说,父类中有一个A方法,子类有一个重写的A方法),那么当调用A的时候,用的是哪一个?记住:看系统中到底new出来的是什么对象,调用的就是哪个!
5、多态三个必要条件:1)有继承,2)有重写,3)父类引用指向子类对象
深刻理解这3条规则
6、多态的应用举例:游戏设计中,屏幕上每一个对象,可以从一个基类GameObject继承下来,基类的方法Draw()在子类中重写,则每个物体就会有自己独特的绘制行为
五、接口的本质(要点)
1、接口是一种抽象类
2、接口只能有方法和静态的final的变量(不能改变的变量,也就是常量)
3、Java不支持多继承,而用接口来实现此功能(例如:金丝猴是一种动物,同时也是一种受保护的东西)
4、接口中蕴含着同样的多态,例如:类中有一个接口类型的变量(这个变量虽然有可能被分配一个子类对象,但只能看到借口自身的方法)
六、异常
1、异常的分类
Error:称为错误,由Java虚拟机生成并抛出,包括动态连接失败、虚拟机错误等,程序对其不作处理
Exception:所有异常类的父类,其子类对应了各种各样可能出现的异常事件,需要用户显示声明并加以捕获
Runtime Exception:一类特殊的异常,比如:被零除、数组下标越界、字符串越界等,针对这种频繁产生、处理麻烦,如果显示声明并捕获将会严重影响程序可读性和运行效率,因此由系统自动检测并将他们交给缺省的异常处理程序处理,用户不必对其进行处理(当然,自己捕捉也可以)
2、异常的结构图(层级)
3、方法如果会抛出异常,那么一般这个方法会在方法的声明后面注明一句话:Throws SomeException
例如:IO包下面的File类下面的File构造方法下面的说明,Throws注明了会抛出空指针异常
4、我们自己写的类的方法,也可以指定会抛出什么异常,以便让其他开发人员明白
如下面代码:声明一个方法,会抛出一个ArithmeticException异常
注意:ArithmeticException异常属于Runtime Exception,因此下面的方法在使用的时候可以用户自己捕获,也可以不去捕获
5、看下面复杂一点的例子
6、e.printStackTrace()
7、Throws与Throw是两个不同的关键字,不要混淆
8、当一个方法中有语句可能产生异常时,应该写try...catch语句或try...catch...finally语句进行处理,如果不处理或者不知道怎样处理,就应该在方法声明的时候,写上Throws往外抛出异常,由调用者方法处理,调用者方法应该对其加上try...catch语句或try...catch...finally语句进行处理;如果还处理不了,就依此类推往外抛出,直到main方法
9、抛出多个异常