Java语言程序设计教程 书本知识点汇总_第1页
Java语言程序设计教程 书本知识点汇总_第2页
Java语言程序设计教程 书本知识点汇总_第3页
Java语言程序设计教程 书本知识点汇总_第4页
Java语言程序设计教程 书本知识点汇总_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java语言程序设计教程书本知识点汇总参考

第一章Java语言概述

1.面向对象的基本概念

1.1对象、类、消息、封装、继承、多态

2.Java语言发展历史和现状及前景

3.Java语言的特点

简单、面向对象、分布式、健壮性、结构中立、

安全性、可移植、解释的、高性能、多线程、多态性

4.Java虚拟机概念,Java程序的执行过程

5.Java应用程序分类:Application和Applet

6.Java程序的开发环境:JDK,IDE

课后习题:

2.解释几个概念:对象、实例、类、消息、封装、继承、多态。

4.简述Java语言的主要特点。

5.简述Java语言与C/C++语言的主要差异。

7.简述Java程序的运行过程。

第二章Java语言基础

1.标识符与保留字

1.2标识符命名语法规则与Java推荐的标识符命名规则

1.3Java中的关键字

2.数据类型

byte,short,intlong,char,float,double,boolean

注意点:Java中所有数据类型是确定的,与平台无关,没有sizeof操作,其中特别注意char类型是2字节Unicode编码,与C++不同;知道基本类型都有对应的默认值。整型数的十进制、八进制、十六进制值的表示。

实型数的十进制、十六进制与科学计数法表示,注意实型常量默认类型为double型。

3.运算符与表达式

算术运算符:+-*/%++--

关系运算符:>>=<<===!=

逻辑运算符:&&a

则相当于:k=(int)(k+44.232D);

条件运算符:exp?stat1:stat2要注意stat1与stat2要求类型相兼容且不能为void类型。

运算符的优先级:算术运算>关系运算>逻辑运算

数值型之间可以相互强制转换,但不能在数值型与复合型类型(数组、对象等)间强制转

换。

4.常用的输入输出

System类管理的标准输入输出流:System.inSystem.outSystem.err

常用的方法:System.out.println()与System.out.print()的区别;System.in.read()方法。

javax.swing.JOptionPane类提供的对话框界面:

StringshowInputDialog(StringtoShowInfo)

voidshowMessageDialog(Componentparent,StringtoShowInfo)

5.Java流程控制

if-else与if-else-if格式

switch分支结构

for、while、do-while循环

break、continue与return语句,注意带标号的break与continue用法

6.数组的创建和使用

要区分数组的引用声明与数组的创建两个概念

声明仅仅给出了一个引用,但没有可用的数组对象。

如:int[]a;此时a是引用,还不可以使用,如果此时就访问a.length是错误的要使用数组必须进行创建,使用new关键字。

如:int[]b=newint[8];注意创建时必须指定数组的大小,且在程序运行期间是不可以改动大小的。

数组的初始化:声明时就给数组一个初始值,如:int[]c={3,4,5};或int[]d=newint[]{3,4,5};

注意复合类型的数组中仅仅存放了符合类型的引用,没有具体的对象,如:

Person[]x=newPerson[3];则数组中仅仅存放三个Person对象的引用,而不是创建了3个Person对象。

访问的数组长度:数组名.length,在循环中尤为重要。

二维及多维数组的创建与使用

二维及多维数组可以创建锯齿形数组。

课后习题:

2.Java有哪些基本数据类型?与C/C++相比有何特点?复合数据类型是哪几种?

3.Java的字符类型采用何种编码方案?有何特点?

第三章字符串

1.String类与字符串常量

创建字符串的方法,构造函数:

String(Stringoriginal)

String(char[]value)

String(char[]value,intoffset,intcount)

常用的方法:

intlength()

intindexOf(inttoFindChar)

intcompareTo(StringanotherString)

booleanequals(ObjectstringObject)

booleanequalsIgnoreCase(StringanotherString)

staticStringvalueOf(doubled)

2.StringBuffer与字符串变量

理解StringBuffer与String的差异

课后习题:

1.Java中字符串常量用什么类表示?字符串变量用什么类表示?主要区别在哪?

2.说明程序Strings1=“Ilike”;s1+=“Java!”;与StringBuffers1=newStringBuffer(“Ilike”);s1.append(“Java!”);的区别。根据结论,指出程序处理大量字符串连接时的操作策略。

第四章面向对象编程基础

1.类和对象

对象就是对现实世界的存在的实体的一个模拟,每一个对象都有自己的状态和行为。对象的状态描绘对象的静态属性特征,对象行为说明对象会发生变化的动态行为,对象的行为一般通过方法的调用来实现。

类是对一组具有相同属性、行为、关系及语义的对象的描述,是具有相同类型对象的抽象。类中使用变量来表示对象的抽象状态,用方法抽象出对象的行为特征。在Java编程时,可以将类理解为数据类型,将对象理解为数据类型中的变量实例。

2.类的声明与使用

[修饰符]class类名[extends父类][implements接口,...]{类的成员

}

其中修饰符可以有:publicfinalabstract,理解各修饰符的意义,理解类的访问控制,当使用其他包中的公共类时需要使用import导入。

对于方法名称([参数列表])[throws异常名表]{方法体

}

知道成员访问控制的差别。

4.类的静态成员

静态方法与静态属性

5.类的创建

理解声明、实例化、初始化的过程。

6.包的概念

包的创建与命名,如何组织类导入

7.构造方法

构造方法:用于对象初始化的特殊的方法,必须与类名相同,没有返回值。特点:构造方法的命名不符合方法的命名规则,它和类名相同,没有返回值。

成员方法的非访问控制符如final,static,abstract,native,synchronized等关键字不能修饰构造方法。

构造方法一般由用户定义,如果用户没有定义构造方法,则系统会自动提供一个

默认的无参构造方法,来初始化对象。

用户可以定义多个带有不同参数的构造方法,称为重载构造方法。【P60.例4.9】构造方法通过new操作符来实现方法的调用,不像一般方法那样显式的调用。

8.this关键字

用于访问对象的成员或实现在构造方法内调用其他的构造方法。【P62.例4.11】

9.嵌套类(内部类)

分为静态内部类和非静态内部类。另外比较重要的是匿名类。【P69.例4.15】

10.final修饰的意义

final修饰变量:变量为基本类型表示为常量,修饰引用表示引用不允许指向其他对象。

final修饰方法:表示该方法不能被重写。

final修饰类:表示类不能被继承。

课后习题:

3.写出构造方法的定义和用途?

4.关键字static在修饰类、类的成员数据和成员方法中的作用各是什么?

6.this关键字的含义是什么?主要用途有哪些?

8.编程队列

9.编程栈

10.编程复数运算

第五章继承和多态

1.继承

继承是一个新的类继承原有的类的基本特性,并增加新的特性,体现类的层次关系,新的类与原有类之间体现一种IS-A的关系。

继承通过extends关键字来实现,任何类都有父类,除了Object类外。

class子类名称extends父类名称{

类的描述

}

如果没有写extends标明父类,则表示该类的父类为Object。

需要掌握子类在继承父类时,哪些被继承,哪些没有被继承。

2.抽象类用abstract修饰的类

抽象类是对一组固定实现的抽象描述,并不对应具体的概念,只作为一个抽象概念存在,是不能被修改的,通常只用来派生子类。

abstractclass抽象类名称{

类体

}

3.抽象方法用abstract修饰的方法

抽象方法只有方法的签名没有方法体,只提供方法的规格说明,没有具体的实现。final关键字不能修饰抽象方法。static也不能修饰抽象方法。

注意:抽象类中不一定包含抽象方法;但是只要类中包含抽象方法则类一定是抽象类。

抽象类必须在派生的子类中重写抽象方法,没有重写抽象方法的子类还是抽象类。非抽象类的子类可以重新声明为抽象类。

4.多态

Java中不支持用户定义符号重载,支持用户定义方法的重载。

方法的重载就是在一个类{

实现接口中定义的方法

}

接口的定义类似于抽象类,但其实现依赖于类,而不是通过继承来实现的。

理解下面程序出现的问题:

classPoint{

intx,y;

privatePoint(){reset();}

Point(intx,inty){this.x=x;this.y=y;}

privatevoidreset(){this.x=0;this.y=0;}

}

classColoredPointextendsPoint{

intcolor;

voidclear(){reset();}

}

classTest{

publicstaticvoidmain(String[]args){

ColoredPointc=newColoredPoint(0,0);

c.reset();

}

}

知道下面的类构造过程中的执行顺序:

classBird{

{System.out.println(“b1“);}

publicBird(){System.out.println(“b2“);}

}

classRaptorextendsBird{//Raptor[‘ræptə(r)]n.猛禽,肉食鸟static{System.out.println(“r1“);}

publicRaptor(){System.out.println(“r2“);}

{System.out.println(“r3“);}

static{System.out.println(“r4“);}

}

classHawkextendsRaptor{

publicstaticvoidmain(String...args){

System.out.println(“pre”);

newHawk();

System.out.println(“hawk“);

}

}

//结果是:r1r4preb1b2r3b2hawk

推广到更一般的情况:

classBird{

{System.out.println("b1");}

publicBird(){System.out.println("b2");}

static{

System.out.println("b3");

}

}

classRaptorextendsBird{

static{System.out.println("r1");}

publicRaptor(){System.out.println("r2");}

{System.out.println("r3");}

static{System.out.println("r4");}

}

classHawkextendsRaptor{

publicstaticvoidmain(String...args){

System.out.println("pre");

newHawk();

System.out.println("end");

}

{

System.out.println("h1");

}

static{

System.out.println("h2");

}

}

////////////////

b3r1r4h2preb1b2r3r2h1end

课后习题:

2.方法的覆盖和方法的重载有什么不同?

4.编程计算式子的值。

6.利用接口编写计算三角形、梯形面积和周长的程序。

第六章常用工具类和Applet小程序

1.Collection接口及其子接口List、Set

理解集合框架中存放的都是对象,基本类型不能直接放到集合框架中保存,必须进行包装成对象才可以放入集合中。

Collection接口中的常用方法:

2.List接口和ArrayList类与LinkedList类

用数组和链表实现了抽象的列表结构,掌握其基本的操作方法add、remove、size等。List中可以包含相同的元素。

3.Set接口和HashSet类与TreeSet类

Set中不可以包含相同的元素,与数学中集合的定义相同。注意HashSet中元素是无序的,而TreeSet中元素是经过排序的。

理解下面程序的问题:

importjava.util.*;

publicclassSetDemo6{

publicstaticvoidmain(Stringargs[]){

Sets=newTreeSet();

s.add("37");

s.add(newInteger(37));

Iteratori=s.iterator();

while(i.hasNext())

System.out.println(i.next());

}

}

4.Map接口和HashMap类

Map不是集合,是映射,掌握Map的工作方式,通过键值对来保存和访问数据。

5.Applet小程序

Applet小程序课通过因特网下载并在接收计算机上运行,通常在支持Java的浏览器中运行。

常见的方法:

init():首次加载Applet,准备运行时调用。

start():init方法后,Applet开始执行时或Applet停止后重新启动也会调用。

paint():每次必须重绘窗口时调用。

stop():离开Applet页面将调用stop方法。

destroy():Applet生命周期结束、Applet结束之前调用。

6.Applet标记

在HTML中嵌入Applet标记,指示浏览器的执行,可提供的信息有:Applet的URL路径、Applet的类名、Applet的高度和宽度、名称、对齐方式、无法显示时显示的文字、传入的参数。

课后习题:

1.如何创建一个List或Set对象?使用它们存放数据时哪种对象不能存放重复数据?

3.如何向HashMap对象中添加元素?

4.使用本章介绍的一种集合类编写程序,实现从控制台任意输入若干名字,如:Mike、Jone、Benny...,将它们以字典序按升序方式输出。

第七章Java图形处理和Java2D

1.Java图形坐标系统和图形上下文

Java中坐标原点在屏幕左上角,坐标度量以像素为单位,水平向右为x轴正向,竖直向下为y轴正向。屏幕绘图通过图形上下文环境进行,可通过Component类getGraphics方法返回获得。

2.常用的类ColorFont

3.常见的绘图方法

直线,矩形,椭圆,弧形等。

4.Java2D

第八章GUI编程初步

1.AWT与Swing的关系

AWT是抽象窗口工具集,大部分使用重量级组件,Swing是纯Java实现,属于轻量级组件。

2.Swing常见组件JFrame、JLabel、JTextField、JTextArea、JButton、JPanel的创建和使用

3.布局管理器

Flowlayout、BorderLayout、GridLayout的使用及窗口调整时其布局的策略。知道JPanel的默认布局管理器是FlowLayout,JFrame中内容窗格的默认布局管理是BorderLayout,理解其布局行为。

课后习题:

3.什么是MVC模式?

第九章Java事件处理

1.委托事件处理模式(基于代理的事件处理模型)

2.事件源、事件对象、事件监听器

3.事件处理的步骤

1)导入java.awt.event包或javax.swing.event包

2)创建事件源,即初始化GUI组件对象

3)给事件源注册事件监听器,形如:source.addXxxListener(XxxListenerx)

4)根据监听到的事件类型,实现事件监听器接口的对应方法。

4.组织事件处理代码和处理方式

利用独立的监听器类实现事件处理

利用实例//getcontentpaneandsetitslayoutContainercontainer=getContentPane();container.setLayout(newGridLayout(3,2));//setupGUIpublicDivideByZeroTest(){super("DemonstratingExceptions");privateintnumber1,number2,result;privateJTextFieldinputField1,inputField2,outputField;

container.add(inputField1);//setuplabelandinputField2;registerlistenercontainer.add(newJLabel("EnterdenominatorandpressEnter",SwingConstants.RIGHT));inputField2=newJTextField();container.add(inputField2);inputField2.addActionListener(this);//setuplabelandoutputFieldcontainer.add(newJLabel("RESULT",SwingConstants.RIGHT));outputField=newJTextField();container.add(outputField);setSize(425,100);setVisible(true);}//endDivideByZeroTestconstructor//processGUIeventspublicvoidactionPerformed(ActionEventevent){outputField.setText("");//clearoutputField//readtwonumbersandcalculatequotienttry{}//processimproperlyformattedinputcatch(NumberFormatExceptionnumberFormatException){}//processattemptstodividebyzerocatch(ArithmeticExceptionarithmeticException){}JOptionPane.showMessageDialog(this,arithmeticException.toString(),"ArithmeticException",JOptionPane.ERROR_MESSAGE);JOptionPane.showMessageDialog(this,"Youmustentertwointegers","InvalidNumberFormat",JOptionPane.ERROR_MESSAGE);number1=Integer.parseInt(inputField1.getText());number2=Integer.parseInt(inputField2.getText());result=quotient(number1,number2);outputField.setText(String.valueOf(result));}//endmethodactionPerformed//demonstratesthrowinganexceptionwhenadivide-by-zerooccurspublicintquotient(intnumerator,intdenominator)}publicstaticvoidmain(Stringargs[]){}DivideByZeroTestapplication=newDivideByZeroTest();application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);throwsArithmeticException{returnnumerator/denominator;

}//endclassDivideByZeroTest

看懂下面的例子:

classPlane{

staticStrings=“-”;

publicstaticvoidmain(String[]args){

newPlane().s1();

System.out.println(s);

}

voids1(){

try{s2();}catch(Exceptione){s+=“c”;}}

voids2()throwsException{

s3();s+=“2”;

s3();s+=“2b”;}

voids3()throwsException{thrownewException();}}

Whatistheresult?:-c

课后习题:

8.比较throw与throws关键字之间的功能差异

第十一章Java多线程程序

1.线程的概念:线程是比进程更小的执行单位,一个进程在执行过程中,可以产生多个线程,形成多条执行线索。线程间可以共享相同的yield()方法:使得正在执行的线程放弃处理器进入调度队列,重新参与调度竞争,使得其他线程有机会执行,即将处理器交给其他线程。

6.线程的同步synchronized加锁

synchronized可以修饰方法或定义同步代码块。

结合使用wait()、notify()、notifyAll()方法。

7.死锁

两个或多个线程无休止的相互等待的对象释放所占据的资源的过程。错误的同步容易引发死锁。防止死锁的方法:

课后习题:

2.线程的状态有哪些?描述相互转换的过程。

4.创建线程的方式有哪几种?

12.什么是死锁?多线程设计中如何防止死锁?

第十二章文件和流

1.流的概念

Java中的所有IO都是基于流的,分为字节流和字符流,从方向上看有输出流和输入流。对应四个抽象类:InputStream、OutputStream、Reader、Writer。

2.常见的字节流及操作方法

FileInputStream,FileOutputStream,

ObjectOutputStream,ObjectInputStream,

BufferedInputStream,BufferedOutputStream,

DataInputStream,DataOutputStream

InputStream的方法:

longskip(longn)跳过几个字节

intavailable()可用字节数

read()方法:

intread();

intread(byte[]b);

intread(byte[]b,intoff,intlen)

OutputStream方法:

voidflush()

write()方法:

voidwrite(intx)

voidwrite(byte[]b)

voidwrite(byte[]b,intoff,intlen)

3.常见的字符流及操作方法

InputStreamReader,OutputStreamWriter

BufferedReader,BufferedWriter

掌握字节流与字符流的连接操作,如使用System.in,接收用户输入:

BufferedReaderbr=newBufferedReader(

newInputStreamReader(System.in));

StringwhatGet=br.readLine();

4.文件流

使用FileOutputStream和DataOutputStream进行二进制文件的写操作【P230.例12.4,P231.例12.5】

5.对象流和序列化流

序列化接口java.io.Serializable。

如何进行对象的序列化。

课后习题:

2.Java的基本输入输出流有哪些?主要的功能如何?

3#.利用基本输入输出流编写程序:从键盘输入一串字符,然后显示到屏幕上。

第十四章Java网络编程

1.套接字概念

2.TCP方式传接数据

3.UDP方式传接数据

看懂下面的程序:

.*;

importjava.util.Date;

importjava.io.*;

publicclassTestSocket{

publicstaticvoidmain(String[]args)throwsException{

newServer().start();

Thread.sleep(2000);

newClient().start();

Thread.sleep(2000);

Server.stopMe=true;

}

}

classServerextendsThread{

publicstaticfinalintPORT=44442;

publicstaticbooleanstopMe=false;

publicvoidrun(){

ServerSocketss=null;

try{

ss=newServerSocket(PORT);

while(!stopMe){

Socketclient=ss.accept();

newServerWorker(client).start();

}

}catch(IOExceptione){

}finally{

try{

ss.close();

}catch(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论