1. How to understand 面向对象编程
站在分类学家的角度去考虑问题!是的,这个世界是由动物、植物等组成的。动物又分为单 细胞动物、多细胞动物、哺乳动物等等,哺乳动物又分为人、大象、老虎……就这样的分下去了!
现在,站在抽象的角度,我们给“类”下个定义吧!我的意思是,站在抽象的角度,你回答我“什么是人类?”首先让我们来看看人类所具有的一些特征,这个 特征包括属性(一些参数,数值)以及方法(一些行为,他能干什么!)。每个人都有身高、体重、年龄、血型等等一些属性。人会劳动、人都会直立行走、人都会 用自己的头脑去创造工具等等这些方法!人之所以能区别于其它类型的动物,是因为每个人都具有人这个群体的属性与方法。“人类”只是一个抽象的概念,它仅仅 是一个概念,它是不存在的实体!但是所有具备“人类”这个群体的属性与方法的对象都叫人!这个对象“人”是实际存在的实体!每个人都是人这个群体的一个对 象。老虎为什么不是人?因为它不具备人这个群体的属性与方法,老虎不会直立行走,不会使用工具等等!所以说老虎不是人!
由此可见-------类描述了一组有相同特性(属性)和相同行为(方法)的对象。在程序中,类实际上就是数据类型!例如:整数,小数等等。整数也有 一组特性和行为。面向过程的语言与面相对象的语言的区别就在于,面向过程的语言不允许程序员自己定义数据类型,而只能使用程序中内置的数据类型!而为了模 拟真实世界,为了更好的解决问题,往往我们需要创建解决问题所必需的数据类型!面向对象编程为我们提供了解决方案。
2. Java语言基础
java程序由包和类组成,声明成员(全局)变量----类的属性,方法中的属性是局部变量。Java语言严格区分大小写。
常量声明的关键字是final
//为单行代码注释
/* */为之间所有的内容注释 多行之间可以嵌套单行的流程控制语句与C#、C相同
字符串都是放在“”里面的, String s=new String(“good”) 字符串的操作现用现查
数组的操作
fill用来填充替换数组中的元素 Arrays类中,形式Arrays.fill 使用类之前需要 import java.util.Arrays;
排序 Arrays.sort
复制 Arrays.copyOf copyOfRange
查询 binarySearch 索引之前最好先排序 也可以在制定的位置检索
数组排序算法
(1)冒泡排序 (2)直接选择排序 (3)反转排序http://i.cnblogs.com/EditPosts.aspx?postid=4668213&update=1
http://i.cnblogs.com/EditPosts.aspx?postid=4668213&update=1
3. Java 类和对象
面向对象程序具有封装性、继承性和多态性。装是讲对象的属性和行为close起来,其载体就是类。继承性主要利用特定对象之间的共有属性。将父类对象应用于子类的特征就是多态。抽象类不能实例化对象,多态类中,父类通常会被定义为抽象类,给出一个方法的标准,不给出实现的具体流程。一般,将抽象类定义为接口,由抽象方法组成的集合就是接口。
类是封装对象的属性和行为的载体,对象的属性以成员变量的形式存在,方法以成员方法的形式存在
对象的创建就是通过构造方法完成的,每当类实例化一个对象时,类都会自动调用构造方法,其没有返回值,名称要与本类的名称相同。
对象的创建:new关键字 每实例化一个对象就会自动调用一次构造方法,创建对象的过程。
在类中可以利用方法来实现对成员变量的隐藏,设置变量方法setVariable(),获取变量方法getVariable()
类的构造方法:与类同名的方法,对象的创建就是通过构造方法完成的,每当类实例化一个对象,类都会自动调用构造方法。
4. 数字格式化处理
DecimalFormat用于格式化十进制数字,将一些数字格式化位整数、浮点数、科学计数法和百分数等。
Math各种数学运算及生成随机数 还有random类
java.math.BigIntegar/BigDecimal大数字操作
5. 类的接口、集成和多态
extends关键字来标识两个类的继承关系 用super关键字调用父类的构造方法和成员方法。
对象类型的向上和向下转换
使用instanceof操作符判断对象类型(向下转型之前需要做个判断)
方法的重载:构造方法只有一个名称,如果希望以不同的方式来实例化对象,就需要使用多个构造方法来完成。同一个类中允许同时存在一个以上的同名方法,只要这些方法的参数个数或类型不同即可。
多态:父类和子类,子类不同的通用方法可以在父类中实现,new个子类的对象调用父类的方法实现相应的功能。
抽象类与接口:解决实际问题时,一般将父类定义为抽象类,使用这个父类进行继承与多态处理。越往上的类别越抽象,多态机制中,应不需要将父类初始化对象,需要的只是子类对象。因此设置抽象类不可以实例化对象,public abstract class ××{abstract void 定义抽象类方法()},实际上抽象类除了被继承之外没有任何意义。
继承抽象类的所有子类需要将抽象类中的抽象方法覆盖,每个子类都重写抽象类方法,但是代码会冗余,父类局限性也很大,出现了接口的概念。
接口是抽象类的延伸,interface 一个类实现一个接口可以用implements关键字 ,使用接口还可以多重继承。
6. 异常处理
当某一个方法中发生错误时,这个方法会创建一个对象,传递给正在运行的系统,就是异常对象。
捕捉异常try-catch 和finally三个部分组成
7. 集合类
java.util中提供了一些集合类,也称为容器,数组的长度是固定的,而集合的长度是可变的;此外,数组用来存放基本类型的数据,集合用来存放对象的引用。Collection接口(Set List接口),常用方法有add remove isEmpty iterator size
Collection/ArrayList<String/Integer> list=new ArrayList<>();引用类型
List接口 获取索引位置 List<E> list=new ArrayList(); /new LinkedList();
Set集合 其中不能包含重复的对象 HashSet TreeSet
Map接口单独没有继承Collection,实现类通常有HashMap和TreeMap
8. !/O输入/输出
永久的保存创建的数据在磁盘文件中。
输入流 InputStream父类 输出流OutputStream类
(1) File类
new File(String parent, String child)
FileInputStream和FileOutputStream类 只提供了对字节或者字节数组的读取方法
FileReader和FileWriter类采用字符流 读取汉字方便
带缓存的BufferedInputStream与BufferedOutputStream类 达到性能优化
数据输入输出流 DataInputStream DataOutputStream
Zip压缩输入输出流 ZipEntry ZipInputStream ZipOutputStream