J2SE视频着重讲解了java基本语法,本次学习掌握了java的基本语法规则,对面向对象以及死锁现象都有了更深层次的了解。本博文主要对面向对象,容器,流做出讨论。
【总体回顾】
任何语言的学习都是由数据和程序两部分组成,数据主要区分的是不同数据类型在何时使用,所占用的内存空间是多少以及数据类型转换。java的数据类型主要分为基本数据类型和引用类型两方面,引用数据类型是分配在堆空间的数据。数据类型转换遵循字节数小的向字节数大的类型转换可自动转换,字节数大的向字节数小的转换,则需要强制类型转换机制,且数据准确度降低,字节由小到大数据类型顺序为:byte,short,char->int->long->float->double
程序要考虑的三大结构:选择,顺序,循环。Java程序在执行过程中不得不考虑的一个重要因素是错误处理机制:
RuntimeException是运行时错误,出现频繁,由系统自动检测并将他们交给特定的异常处理程序,不需要我们去捕获,error有Java虚拟机生成并捕获,程序也不需要做处理。
错误处理过程中遵循先捕获小异常然后再捕获大异常,小异常详细具体,先捕获大异常的情况下,小异常就会被忽略不计。
【面向对象】
不同的学习阶段对面向对象都有不一样的理解,首先我们先对两个个易混概念做一下区分:
重载:方法名相同,但传进的参数不同,在调用时根据不同的参数选择不同的方法,最常用的是构造函数,用户往往需要引用不同的参数来建立对象,实例化过程中引用的构造函数就要多种多样了。
重写:方法名,参数,返回数据类型均一致,实现方法体不一样。多用于类的继承和接口实现,抽象方法,子类继承父类,必须要求重写。
动态绑定:在执行期间(非编译期间)判断所引用对象的实际类型,根据实际类型调用相应的方法。
abstract class Animal {
private String name;
Animal(String name) {this.name = name;}
/*
public void enjoy(){
System.out.println("叫声......");
}
*/
public abstract void enjoy();
}
abstract class Cat extends Animal {
private String eyesColor;
Cat(String n,String c) {super(n); eyesColor = c;}
/*
public void enjoy() {
System.out.println("猫叫声......");
}
*/
//public abstract void enjoy();
}
class Dog extends Animal {
private String furColor;
Dog(String n,String c) {super(n); furColor = c;}
public void enjoy() {
System.out.println("狗叫声......");
}
}
class Bird extends Animal {
Bird() {
super("bird");
}
public void enjoy() {
System.out.println("鸟叫声......");
}
}
class Lady {
private String name;
private Animal pet;
Lady(String name,Animal pet) {
this.name = name; this.pet = pet;
}
public void myPetEnjoy(){pet.enjoy();} //Lady内引用的只是pet的enjoy方法
}
public class Test {
public static void main(String args[]){
Cat c = new Cat("catname","blue");
Dog d = new Dog("dogname","black");
Bird b = new Bird();
Lady l2 = new Lady("l2",d);
Lady l3 = new Lady("l3",b);
l2.myPetEnjoy(); //输出为dog的叫声
l3.myPetEnjoy(); //输出为bird的叫声
}
}
在Lady类内只使用了pet的enjoy()方法,但输出根据实际类型返回子类dog和bird的enjoy方法,实现动态绑定。
【容器】
引用数据类型--对象存在堆内,用同一类实例化的对象大量的分散在内存中,程序调用过程是相当复杂的,因此提出容器的概念,来盛放这些对象引用。另外,这些容器引用要能够提供方便的遍历,查询和修改接口。
java中提供丰富的容器接口,满足用户多样化需求:
set容器装元素,不能重复,且没有顺序
List可重复,有顺序。
Map是一对一对的往里装。
详细学习内容可参考:《java中的容器》
【流】
流是对输入输出设备的抽象,这个设备可以是文件,内存,网络。流是有方向的,从程序流向设备,称为输出流,从设备流向程序叫做输入流。
在java.IO包中分为字节流(InputStream输入流 outputStream输出流)和字符流(Reader输入流,writer输出流)两种。
Java中数据的输入输出都是以流的方式进行。
【总结】
阶段性用思维导图的方式对学习的内容进行整理,便于形成知识网,在以后的学习中要不断实践,不断总结,达到颗粒归仓的效果。