您的位置:首页 > 编程语言 > Java开发

java基础编程学习过程中的知识点 -- 个人总结

2014-08-25 10:26 706 查看
一、基础语法:

1,一个文件中只能有一个public 修饰的class类,并且该类名和文件名相同。

二、面向对象:

1,类是具有同一事物的抽象;对象是这类的一个实例。

2,类(对象)之间的关系:关联,继承,聚合(聚集、组合),多态,实现。

3,一个方法声明为static后,这个方法不在属于某个对象,而属于整个类,就可以直接调用。

4,调一个方法,必须先new一个对象,然后通过这个对象来调用这个方法(一个方法只有通过一个对象才能调用它)。

5,new一般和构造方法一起使用;构造方法和类同名,无返回值,不能使用void。



6,使用对象(引用).成员变量或来引用对象的成员变量;(this.i=i)

使用对象(引用).方法(参数列表)来调用对象的方法;

同一类的每个对象有不同的成员变量存储空间;

同一类的每个对象共享该类的方法;

(非静态方法是针对每个对象进行调用)。

7,this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this的用法。

this一般出出现方法里面,当方法还没调用的时,this指向谁并不知道。当new一个对象时,this指的就是当前这个对象,你对哪个对象调用这个方法,this指的就是谁。当必须指出当前使用方法的对象是谁时要使用this。this指向当前对象本身。

8,super指向当前子类对象的父类对象。

9,如果你要把一个类放到包里面,第一句写package,后面想跟多少层包都可以,但你编译出来的class文件必须位于正确目录下面。

如果要在另一个类里使用包,必须写全包的名字。(例:com.bjsxt.java110.Cat c = new com.bjsxt.java110.Cat();或者在首行加import com.bjsxt.java110.Cat(*);

10,class文件的最上层包的父目录必须位于classpath下。执行一个类需要写全包名。

11, 打包成jar :jar cvf test.jar com

12,子类可以在自己的构造方法中使用super(参数列表)调用父类的构造方法。(或使用this(参数列表))调用本类的另外的构造方法。

如果调用super,必须写在子类构造方法的第一行。

13,一个基类的引用类型变量可以“指向”其子类的对象;一个基类的引用不可以访问其子类对象新增加的成员(属性和方法);使用引用变量instanceof 类名来判断该引用型变量所“指向”的对象是否属于该类或该类的子类;子类的对象可以当作基类的对象来使用称作向上转型,反之叫向下转型。

14,动态绑定(多态)实现的三个必要条件:

1,要有继承;2,要有重写;3,父类引用指向子类对象。

15,abstract:

当一个类里含有抽象方法时,这个类必须定义为抽象类。

抽象类必须被继承,抽象方法必须被重写,抽象方法只需声明,而不需实现,抽象类不能被实例化。

16,interface

接口是抽象方法和常量值的定义的集合

多个无关的类可以实现同一个接口

一个类可以实现多个无关的接口

与继承类似,接口与实现类之间存在多态性。

特性:

1,一个类可以实现多继承;(。。。extends。。。implements。。。)

2,接口中声明的属性默认为public static final;

3,接口中只能定义抽象方法,这些方法默认为public的;

4,接口可以继承其他接口,并添加新的属性和抽象方法。

三、异常处理

1,抛出异常:Java程序的执行过程中如果出现异常事件,可以生成一个异常类对象,该异常类对象封装了异常事件的信息并将被提交给Java运行时系统

2,捕获异常:当Java运行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理。try{。。。}

catch()

3,异常对象.printStackTrace()抛出堆栈信息

4,error:由Java虚拟机生成并抛出

exception:所有异常类的父类,一般需要用户显示的声明或捕获;

runtime exception:一类特殊的异常,由系统自动检测并将它们交给缺省的异常处理程序(用户不必声明或捕获)。

5.throws关键字通常被应用在声明方法时,用来指定可能抛出的异常。多个异常可以使用逗号隔开。

6.throw关键字通常用在方法体中,并且抛出一个异常对象。程序在执行到throw语句时立即停止,它后面的语句都不执行。通过throw抛出异常后,如果想在上一级代码中来捕获并处理异常,则需要在抛出异常的方法中使用throws关键字在方法声明中指明要跑出的异常;如果要捕捉throw抛出的异常,则必须使用try—catch语句。

7, finally所指定的代码都要被执行。

通常在finally语句中可以进行资源的清除工作,如:

关闭打开的文件;删除临时文件。。。

8.

先逮小的异常,再逮大的;

重写方法需要抛出与原方法所抛出异常类型一致或不抛出异常。

四、数组

每个数组都有一个属性length指明它的长度,例:a.length的值为数组a的长度(元素个数)。

五、

1,public staticString valueOf(。。。)可以将基本数据类型转换成字符串。(例:public static String valueOf(double d))。

2.方法public String[] split(String regex)可以将一个字符串按照指定的分隔符分隔,返回分隔后的字符串数组。

3,递归调用至在方法执行过程中出现该方法本身的调用。

4,Enum:

只能够取特定值中的一个;使用enum关键字;是java.lang.Enum类型;

六、容器

1,Collection接口--定义了存取一组对象的方法,其子接口Set和List分别定义了存储方式:

Set中的数据对象没有顺序且不可以重复;

List中的数据对象有顺序且可以重复。

2,两个对象之间如果互相equals,那么它们就重复了,那么这两个对象具有相同的hashCode。

3,重写equals方法必须重写hashCode()方法。这个对象当作索引(键)的时候使用。

4,什么时候使用hashCode方法:

当这个类的某个对象用在Map接口里被当作键值(索引)来使用的时候,会使用它的hashCode方法,因为效率比较高。

5,Iterator接口:

所有实现了Collection接口的容器类都有一个iterator方法用以返回一个实现了Iterator接口的对象;

Iterator对象称作迭代器,用以方便的实现对容器内元素的遍历操作。

6,Set接口:

Set容器可以与数学中“集合”的概念相对应;Set容器类有:HashSet,TreeSet

7,List接口:

List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素。

List容器类有ArrayList,LinkedList。

类java.util.Collections提供了一些静态方法实现了基于List容器的一些常用算法。

8,Comparable接口:

所有可以“排序”的类都实现了java.lang.Comparable接口,Comparable接口中只有一个方法(public int comparaTo(object obj) 返回0表示this==obj 返回正数表示this>obj 返回负数表示this<obj)。



9,Map接口:

Map接口定义了存储“键(Key)--值(value)映射对”的方法.实现类有HashMap,TreeMap。

存储的键-值对通过键来标识,所以键不能重复,即索引不能重复。

10,泛型:在定义集合的时候同时定义集合中对象的类型。

七、流

1,按数据流的方向不同可以分为输入流和输出流(InputStream按文件的角度看为输出(读出),按程序角度看为输入(写入),一般按程序角度看);按处理单位不同可以分为字节流和字符流;按功能不同可以分为节点流和处理流。

八、线程:

1,线程是一个程序内部的顺序控制流。/线程是一个程序里面不同的执行路径。

2,尽量使用从接口Runnable。

3,线程同步:

关键字Synchronized来与对象的互斥锁(每个对象都对应于一个互斥锁标记)联系;当某个对象Synchronized修饰时,表明该对象在任一时刻只能有一个线程访问。

4,wait时别的线程可以访问锁定对象(调用wait方法的时候必须锁定该对象);sleep时别的线程不可以访问锁定对象。

九、网络编程:

1,Socket(插座):

两个java应用程序通过一个双向的网络通信连接实现数据交换,这个双向链路的一端称为一个Socket;

Socket通常用来实现TCP上的Client-Server连接;

java.net包定义的两个类Socket和ServerSocket,分别用来实现双向连接的Client端和Server端;

建立连接时所需的寻址信息为远程计算机的IP地址和端口号(Port number)。

端口:分为TCP端口和UDP端口,各有65535个端口,写程序时一般用1024以上的端口。

2,先启动Server再启动Client。必须有一个先读,有一个先写。

十、GUI编程

1,AWT(Abstract Window Toolkit):

包括了很多泪和接口,用于java application的GUI(Graphics User Interface 图形用户界面)编程。

Container和Component是AWT中的两个核心类。

2,Component & Container:

一般的Component对象不能独立地显示出来,必须将“放在”某一的Container对象中才可以显示出来。

Container是Component子类,Container子类对象可以“容纳”别的Component对象。

Container对象可用add()方法向其中添加其他Component对象。

Container是Component的子类,因此Container对象也可以被当作Component对象添加到其他Container对象中。

两种常用的Container:

Window:其对象表示自由停泊的顶级窗口

Panel:其对象可作为容纳其他Component对象,但不能独立存在,必须被添加到其他Container中(如Window或Applet)。

3,Frame

Frame是Window的子类,由Frame或其子类创建的对象为一个窗体;

构造方法:

Frame()

Frame(String s)创建标题为s的窗口;

4,Panel:

Panel对象可以看成可以容纳Component的空间;可以拥有自己的布局管理器;拥有从其父类继承来的方法;

构造方法:

Panel()使用默认的FlowLayout类布局管理器初始化;

Panel(LayoutManager layout)使用指定的布局管理器初始化;

把Panel作为一个组件添加到某个容器中后,该Panel仍然可以有自己的布局管理器。

5,布局管理器:

管理Component在Container中的布局,不必直接设置Component位置大小;如果用户试图设置组件的大小和位置属性都会被布局管理器覆盖;如果用户确实需要亲自设置组件大小和位置属性可以将布局管理器设置为空:setLayout(null)。

每个Container都有一个布局管理器对象,当容器需要对某个组件进行定位或判断其大小尺寸时,就会调用其对应的布局管理器,调用Container的setLayout方法改变其布局管理器对象。

5种布局管理器:FlowLayout-Panel默认布局管理器,BorderLayout-Frame默认布局管理器,GridLayout,CardLayout,GridBagLayout .

6,用内部类实现事件处理

  内部类(inner class)是被定义于另一个类中的类,使用内部类的主要原因是由于:

  ◇ 一个内部类的对象可访问外部类的成员方法和变量,包括私有的成员。

  ◇ 实现事件监听器时,采用内部类、匿名类编程非常容易实现其功能。

  ◇ 编写事件驱动程序,内部类很方便。  

  因此内部类所能够应用的地方往往是在AWT的事件处理机制中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: