----------------------<a href="http://edu.csdn.net/heima"target="blank">android培训</a>、<a href="http://edu.csdn.net/heima"target="blank">java培训</a>、期待与您交流! ----------------------
视频总结java语言基础
第一章 JAVA语言基础
1.JAVA语言的特点:强类型、编译和解释、自动无用内存回收功能、面向对象、与平台无关、安全性、分布式计算、多线程。
2.小应用程序与应用程序的区别
(1)小应用程序只能在与JAVA兼容的容器中运行,可以嵌入在HTML网页内,在网络上发布,当网页被浏览时,在浏览器中运行。小应用程序的运行还受到严格的安全限制。而JAVA应用程序没有这些限制,也不支持网页嵌入和下载运行。
(2)两者在代码编写上也有很大差异。一个小应用程序必须定义成一个Applet类的子类,应用程序可以是Applet类的子类,也可以不是。
(3)应用程序必须在一个类中定义一个main()方法,该方法代表应用程序的入口。而小应用程序不必定义main()方法。它的执行由Applet类中定义的多个方法控制。
3.JAVA应用程序的开过过程
(1)JAVA应用程序,先编写JAVA源程序,源程序经JAVA编译器编译后产生字节码文件,最后由JAVA解释器解释执行字节码文件。
(2)小应用程序,先编写源程序,然后经JAVA编译器编译后产生字节码文件,最后由WEB浏览器解释执行字节码文件。
4.标识符:由字母和数字符组成,限定标识符第一个字符不能是数字符。
5.关键字:均由小写字母组成,关键字不可以用做变量、方法、类或标号的标识符。
6.基本数据类型:整数类型、浮点数类型、字符类型、逻辑类型。非基本数据类型:数组、字符串、类、接口
7.整数类型依次分为:byte(8位)、short(16位)、int(32位)、long(64位)。
8.浮点数类型分为:float(单精度型32位)、double(双精度型64位)。
第二章运算和语句
1.在进行连续的逻辑运算时,不分逻辑与和或的优先级,而是顺序进行逻辑与和或的计算,一旦逻辑表子达式或逻辑表达式能确定结果,就不再继续计算(即条件1&&条件2,若条件1不成立,则条件2也无须再计算。)。
2.break语句:必须出现在多路按值选择结构或循环结构中,其执行强制结束它所在的控制结构,让程序从这个控制结构的后继语句继续执行。(
3.continue语句:只能出现在循环结构中,其执行将忽略它所在的循环体中在它之后的语句,使控制转入对循环条件表达式的计算和测试。若出现在for循环体中,则转入表达式3的求值。
4.return语句:只能出现在方法体中,其执行将结束方法的执行,将控制返回到方法调用处。
5.在JAVA语言中,用try...catch语句指定可能会发生异常的代码块和错误处理代码块。
6.循环体中的continue语句的作用是结束当前循环,直接进入下一次循环。break语句的作用是从循环体内跳出至循环的后继语句,即强行中断当前循环。
1.if语句
if(条件表达式)
{语句1}
else
{语句2}
2.switch语句
switch(表达式)//该表达式的类型只限于char,int,short,byte类型
{
case常量表达式1:语句序列1;break;//也可以没有break
case常量表达式2:语句序列2;break;//也可以没有break
......
case常量表达式n:语句序列n;break;//也可以没有break
default :语句序列n+1;break;//也可以没有break
3.try...catch语句
try
{
语句块//执行该语句块,可能会发生异常
}
catch(异常类型 e)
{
异常发生时要执行的语句块
}
finally
{
无论异常发生与否,都要执行的语句块
}
4.while语句//先计算条件表达式,再执行循环体
while(条件表达式)
{
循环体
}
5.do...while语句//先执行循环体,再计算条件表达式
do
{
循环体
}
while(条件表达式)
6.for语句)
for(表达式1;表达式2;表达式3)//表达式1为循环变量置初值,表达式2为执行循环条件判断,表达式3为更新循环变量值
{
语句块
}
7.package语句
package 包名;//package语句必须出现在源程序文件的起始行,表示出现在该文件中的所有类都属于这个程序包。
8.import语句
import 包名.类名;//该语名用来引来所需要的类。若要从一个包中引入多个类,可用“*”
9.java应用程序的基本结构
[package 包名;]
import 包名.类名;
......
[public] class 类名
{
intval=...//变量定义语句
publicstatic void main(String args[])//方法定义
{
...//变量定义和控制语句构成的方法体
}
}
第三章面向对象编程基础
1.面向对象程序设计引入了许多概念和机制,包括
抽象:是有效控制程序复杂性的重要手段,类是目前支持抽象的最好工具。
对象:对象的名称用于程序引用对象,对象的成员变量用于存储对象的状态信息,对象的方法用于描述对象的行为。
消息:在程序系统中,对象之间的交互通过相互发送消息实现。
类:声明对象共有属性和行为的机制称为类。
继承:就是在已有类的基础上,扩充属性或扩充与改写其某些方法,生成新的类。(即通过扩展原有的类,声明新类来实现的。
多态性:是指类型适应性多态性,这来自继承,不同继承层次的对象对同样的方法有不同的实现。
2.类:是一种类型,类封装对象的属性和方法,是同一类对象的模板。
3.方法重载:是指在一个类中定义多个有相同名字的方法,但这些方法或者参数个数不同或按顺序参数的类型不同。在编译时就能确定被调用的方法,这种多态性不需要动态联编技术的支持。)
4.构造方法:是一种特殊的方法,这种方法的名与它的类名相同,并且不返回结果,也不写上void关键字。构造方法的作用是创建类的对象,并给对象初始化。构造方法是公共方法,但程序不能显式调用,而是当程序运行时,当有对象要创建时,由系统自动调用构造方法。
5.实例变量和类变量的区别
(1)用关键字static修饰的是类变量,未用关键字static修饰的是实例变量。
(2)不同对象的实例变量将被分配不同的内存空间,改变类的某一个对象的实例变量值不会影响其他对象的实例变量。
(3)类变量的内存只有一处,让类的所有对象共享。从类的任一对象改变类变量,类的其他对象都能发现这个改变。
5.5实例方法和类方法的区别
(1)冠以修饰字static的方法称为类方法,没有冠以修饰字static的方法称为实例方法。
(2)实例方法可以互相调用,并可调用类方法。类方法可以互相调用,但不能直接调用实例方法。
(3)实例方法可引用实例变量及类变量,类方法能直接引用类变量,但不能引用实例变量。
6.访问权限
private:设置最强的访问,其他类的方法都不能访问。
protected:只限子类或者同一个包中的类的方法能访问。
public:设置没有限制的访问权限,其他类的方法都能访问。
友好的<default>:只允许同一个包中的类的方法访问。
7.final类:是不能被再继承的类,即它不能再有子类;final方法:声明该方法不能被子类的方法覆盖;final变量:声明该变量的值不能被改变。
8.关键字super:利用super,子类方法可以引用超类的成员变量和被覆盖的方法。使用super的3种情况:(1)调用超类的构造方法;(2)调用超类被子类覆盖的方法;(3)访问超类被子类隐藏的成员变量。
9.关键this:用来指对象自己。
10.is-a关系:类A是继承扩展类B,则子类A和超类B之间是is-a关系。
11.has-a关系:类A的某个成员变量的类型是B,则类A和类B之间是has-a关系。
12.接口有常量定义和方法定义,但没有方法的实现代码,可以将接口想象为一个“纯”抽象类。
13.基本类:即将基本类型的关键字的第一字母改为大写,其中只有int的基本类为Integer。
14.如果小应用程序已用importjava.applet.Applet导入系统的Applet类,小应用程序的主类必须按以下形式声明:public class主类名 extends Applet。如果用形式导入系统Applet类,则主类的声明应写成:public class类名 extends java.applet.Applet。
15.Applet类的基本方法(63)
(1)init()方法:创建所需要的对象、设置初始状态、装载图像、设置参数等。
(2)start()方法:初始化方法后,紧接着调用start()方法,启动小应用程序主线程。
(3)stop()方法:当浏览器离开小应用程序所在页面转到其他页面时,调用stop()方法,挂起小应用程序的执行。
(4)destroy()方法:关闭浏览器时,系统调用destroy()方法,结束小应用程序的生命,关闭线程释放对象资源。
(5)paint(Graphics g)方法:用于在屏幕窗口上显示某些信息。
(6)repaint()方法:先清除paint()方法以前所画的内容,然后再调用paint()方法。
(7)update()方法:调用repaint()方法时,系统会自动调用update()方法。也是清除paint()方法以前所画的内容,然后再调用paint()方法。
16.小应用程序的生命周期
(1)下载并实例化小应用程序,系统调用init()方法;
(2)启动,系统调用start()方法;
(3)小应用程序调用stop()方法暂停或执行paint()方法完成;
(4)重新启动;
(5)终止,或退出浏览器,或执行destroy()方法消亡方法。
二、语法点:
1.类的声明
class 类名
{
类体//给出类的成员变量和方法定义,类体中不能有独立的执行代码,所有执行代码只能出现在方法中。
}
2.成员变量
[修饰字]类型变量名;//修饰字可为:private、protected、public、友好的;成员变量对类内定义的方法都有效。类的方法也可以定义变量,称为局部变量。局部变量只在定义它的方法中有效。
3.方法
返回值类型方法名(类型参数名,....,类型参数名)
{
方法体
}
//返回值类型声明方法返回值的数据类型。如方法无返回值,就用void关键定。
4.对象
声明对象:
类名对象名;//Point p1,p2;
创建对象:
new 构造方法([参数表])//p1=newPoint();p2=new Point(30,40)
5.继承
class 子类名 extends超类名
{
类体
}
//如果缺省extends语句,未指定超类,则该类的超类是系统声明的类java.lang.Object
6.接口
[public] interface 接口名 [extends超接口表]
{
接口体
}
7.小应用程序主类的程序结构:
public class AppletName extendsjava.applet.Applet
{
publicvoid init(){......}
publicvoid start(){......}
publicvoid stop(){......}
publicvoid destroy(){......}
publicvoid paint(Graphics g){......}
}
第四章数据和字符串
一、出题点
1.String类用于处理不可改变的字符串,StringBuffer类用于处理可改变的字符串。(P73)
2.Object类有方法String toString(),一个对象通过调用该方法可以获得对象的字符串表示。(P79)
如:Date d1=newDate();//声明并创建一个Date对象
String s=d1.toString();//将Date对象d1处理转变为String类型,存放在s中。
二、语法点
1.数组(以二维数组为例)
(1)数组先声明
类型数组名 [][](其它形式的声明:类型 [][]数组名、类型 [] 数组名[])
(2)数组创建
类型数组名[][]=new 类型[长度1][长度2];
2.字符串声明和创建
(1)字符串先声明
String s;
(2)字符串创建
s=new String();//创建一个空字符串对象
s=new String(String str);//创建一个str字符串对象,如s=newString("i am")
s=new String(char a[]);//如charc[4]={'g','o','o','d'};String s=new String(c);
s=new String(char a[],intstartIndex,int charNum);//如char c[4]={'g','o','o','d'};String s=newString(c,2,4),即从下标为2的字母开始,后面共4个字母赋值给s对象;
3.字体串基本操作
(1)字符串连接,concat(s)方法:s1=s1.concat(s2);//将s2连接在s1之后,得到一个新的字符串。
(2)获取字符串的长度:s.length();
(3)字符串前缀比较:boolean startsWith(s)判断一个字符串的前缀是否为s。
字符串后缀比较:booleanendsWith(s)判断一个字符串的后缀是否为s。
(4)比较两个字符串是否相同:boolean equals(s)方法。//s1.equals(s2)比较s1与s2字符串相同否,同为true。
(5)字符串检索:int indexOf(s),即从字符串头开始检索s,返回s首次出现的位置;或int indexOf(String s,int startpoint),即从指定的startpoint位置开始检索s,返回s首次出现的位置。
(6)取字符串的子串:String substring(int startpoint)或String substring(intstartpoint,int end),其中startpoint是字符串的开始下标,end是截止下标。
4.StringTokenizer类操作
(1)使用StringTokenizer类构造对象作为字符串分析器
如:StringTokenizer st=new StringTokenizer("I am tom,I amman.");
或 StringTokenizer st=newStringTokenizer("I am tom",",");//以“,”为分隔符
(2)利用取一个单词的方法nextToken()
如:st.nextToken()
(3)利用hasMoreTokens()方法控制循环,只要字符串中还有语言符号,返回 true。
(4)调用countTokens()方法能得到字符串分析器中一共有多少个单词。
如:st.countTokens()
第五章图形界面设计(一)
1.AWT与Swing在区别
(1)AWT依赖于主平台绘制用户界面组件,而Swing有自己的机制,在主平台提供的窗口中绘制和管理界面组件。
(2)AWT在不同平台上运行相同的程序,界面的外观和风格可能会有一些差异,而一个基于Swing的应用程序可能在任何平台上都会有相同的外观和风格。
2.使用Swing设计图形界面,主要引入两个包:javax.swing包含Swing的基本类;java.awt.event包含与处理事件相关的接口和类。
3.组件(Component)是图形界面的基本元素,容器(Container)是图形界面的复合元素,容器可以包含组件。为了统一管理组件和容器,为所有组件类定义超类Component类,把组件的共有操作都定义在Component类中;为所有容器类定义超类Container类,把容器共有的操作都定义在Container类中。
4.Swing类的层次结构
顶层容器:JFrame,JApplet,JDialog,JWindow。
中间容器:JPanel,JScrollPane,JSplitPane,JToolBar等。
基本组件:JButton,JComboBox,JList,JMenu,JTextField。
可编辑组件:JColorChooser,JFileChooser,JTextArea。
5.图形界面设计的大致步骤:(1)创建容器(2)创建组件(3)往容器里添加组件(4)根据操作注册监视器,并用响应事件的方法完成处理。(自行整理)
6.事件:是指在某个组件上发生用户操作;对事件作监视的对象称为监视器;为了让监视器与事件对象关联起来,需要对事件对象作监视器注册,告诉系统事件对象的监视器。
7.以程序响应按钮事件为例:(1)程序要创建按钮对象,把它添加到界面中;(2)要为按钮作监视器注册,程序要有响应按钮事件的方法;(3)当“单击按钮”事件发生时,系统就调用已为这个按钮注册的事件处理方法,完成处理按钮事件的工作。
8.JAVA编写事件处理程序的两种方案:(1)程序重设方法handleEvent(Eventevt);(2)程序实现一些系统设定的接口。
9.java.awt.event包中用来检测并对事件做出反应的模型包包括以下三个组成元素:
(1)源对象:事件“发生”在这个组件上,它与一组“侦听”该事件的对象保持联系。
(2)监视器对象:是一个实现预定义的接口的类的一个对象,该对象的类要提供对发生的事件作处理的方法。
(3)事件对象:包含描述当事件发生时从源传递给监视器的特定事件的信息。
10.窗口是GUI编程的基础,小应用程序或图形界面的应用程序的可视组件都放在窗口中。在GUI中,有三种窗口:
(1)Applet窗口;(2)框架窗口(JFrame);(3)一种无边框窗口(JWindow)。
11.Swing里的容器都可以添加组件,除了JPanel及其子类之外,其他的Swing窗口不允许把组件直接加入。而要采用以下两种方法添加:(P89)
(1)用getContentPane()方法获得该容器的内容面板,再将组件加入。如,mw.getContentPane().add(button)。或Container cP=getContentPane();
cP.add(button);
(2)建立一个JPanel对象的中间容器,把组件添加到这个容器中,再用setContentPane()把容器置为内容面板。如,JPanel cP= new JPanel();
cP.add(button);
......
mw.setContentPane(cP);
12.用Swing编写GUI程序时,通常不直接用JFrame创建窗口对象,而用JFrame派生的子类创建窗口对象,在子类中可以加入窗口的特定要求和特别的内容等。(P90例5.2)
13.标签(JLabel)是最简单的Swing组件。标签对象的作用是对位于其后的界面组件作说明。
14.按钮(JButton)在界面设计中用于激发动作事件。
15.面板(JPanel)是一种通用容器,其作用是实现界面的层次结构。默认布局为FlowLayout。
16.JScrollPane是带有滚动条的面板,是Container类的子类,也是一种容器,但是只能添加一个组件。其用法是先将一些组件添加到一个JPanel中,然后再把这个JPanel添加到JScrollPane中。
17.FlowLayout布局:是将其中的组件按照加入的先后顺序从左到右排列,一行排满之后就另起一行继续从左到右,每行中的组件都居中排列。FlowLayout是小应用程序的默认布局。可用超类Container的方法setLayout()加容器设定布局。如,setLayout(new FlowLayout())。
18.BorderLayout布局:是把容器内的空间简单的划分为东“East”、西“West”、南“South”、北“North”、中“Center”五个区域。BorderLayout是JWindow、JFrame、JDialog的默认布局
19.GridLayout布局:是把容器划分成若干行和列的网格状,行数和列数由程序控制,组件放在网格的小格子中。其布局特点是组件定位比较精确。
20.CardLayout布局:其容器可容纳多个组件,但是多个组件拥有同一个显示空间,某一时刻只能显示一个组件。
21.null空布局是把一个容器的布局设置为null布局。空布局采用setBounds()方法设置组件本身的大小和在容器中的位置。(P101)
二、语法点
1.创建JFrame窗口
2.按钮处理程序的基本内容为 处理按钮事件实例
3.面板处理程序的基本内容为
4.BorderLayout布局
5.GridLayout布局
6.文本框(JTextField)
7.文本区(JTextArea)
第六章图形界面设计(二)
1.Java为处理鼠标事件提供两个接口:MouseListener和MouseMotionListener接口。
2.MouseListener接口能处理5种鼠标事件:按下、释放、点击鼠标、鼠标进入、退出。
3.MouseMotionListener接口能处理2种鼠标事件:拖动鼠标、鼠标移动
4.键盘事件的接口是KeyListener,注册键盘事件监视器的方法是addKeyListener。实现KeyListener接口的方法有3个:keyPressed(KeyEvent e),键盘上某个键被按下;keyReleased(KeyEvente),键盘上某个键被按下,又释放;keyTyped(KeyEvent e),keyPressed和keyReleased两种方法的组合;
1.选择框(JCheckbox)及单选框
2.单选按钮(JRadioButton)
3.列表(JList)
4.组合框(JComboBox)
5.菜单条(JMenuBar)、菜单(JMenu)、菜单项(JMenuItem)
6.对话框(JDialog)
7.滚动条(JScrollBar)
8.鼠标事件
9.键盘事件
第七章图形、图像与多媒体
1.在java.awt包中,类Graphics提供的功能有:建立字体、设定显示颜色、显示图像和文本,绘制和填充几何图形。
2.在某个组件中绘图,一般应该为这个组件所属的子类重写paint()方法,在该重写的方法中进行绘图。
3.绘图模式分为:正常模式,其方法为setPaintMode()和异或模式,其方法为setXORMode(Colore)。
4.Graphics类的绘图方法
(1)画线段:drawLine(int x1,int y1,int x2,int y2) //在x1,y1的坐标点至x2,y2的坐标点之间画一条线。
(2)画矩形:drawRect(int x,int y,int width,int height)//在x,y该点上画一个宽width,高height的矩形。
(3)画三维矩形:draw3DRect(int x,int y,int width,int height,booleanraised)//在x,y该点上画一个宽width,高height的矩形。参数raised是突出与否。
(4)画椭圆形:drawOval(int x,int y,int width,int height)//在x,y该点上画一个横轴width,纵轴height的椭圆。或用fillOval(intx,int y,int width,int height)进行颜色填充。
(5)画圆弧(6)画多边形(7)擦除矩形块(8)限定图显示区域(9)复制图形
5.在java程序中,图像也是对象,所以载入图像时,先要声明Image对象,然后利用getImage()方法把Image对象与图像文件联系起来。方法有两个:(1)Image getImage(URL url);(2)ImagegetImage(URL url,String name)。
6.程序要创建缓冲区图像,需要引入java.awt.image包中的BufferedImage类。要创建一个缓冲区图像,可以调用creatImage()方法,该方法返回一个Image对象,然后再将它转换成一个BufferedImage对象。
第八章多线程
1.进程与线程的异同(P159)
(1)进行是程序的一次执行过程,从代码加载、执行,直至完成的一个完整过程。线程是一个控制流,也是一个执行过程,但执行单位比进程小。
(2)两者的不同点是进程是一个实体,有自己的状态、专用数据段;而创建线程时不必建立新的数据段。其不是能够独立运行的程序,而只是某个进程内的一个执行流。
2.线程的生命周期:新建、就绪、运行、阻塞和死亡五种状态。(P159)
3.Java提供一个线程调度器来监视和控制就绪状态的线程,线程的调度策略采用抢占式,优先级高比低的先执行。在优先级相同的情况下按“先到先服务”的原则。线程优先级为1到10,数值越大优先级越高。(P160)
4.Java程序实现多线程应用有两种途径:(1)继承Thread类声明Thread子类,用Thread子类创建线程对象(2)在类中实现Runnable接口,在类中提供Runnable接口的run()方法。(P161)
5.在Java语言中,使用关键字synchronized定义临界段,能对共享对象的操作上锁。(P167)
6.为了实现同步,Java语言提供wait()、notify()、notifyAll()三个方法供线程在临界段中使用。用wait()方法使执行该方法的线程等待,并允许其他线程使用这个临界段。用notify()方法通知由于想使用这个临界段而处于等待的线程结束等待。若要使用其他早先等待的线程都可结束等待,重新竞争CPU,则使用notifyAll()方法。(P168)
第九章输入和输出流
1.Java语言采用流(stream)的机制实现输入和输出。实现输入/输出操作的类库在java.io包中(P175)
2.建立输入/输出流对象之前可以先建立一个File对象,File对象对应一个目录或文件,对象的属性包括文件路径、名字、文件长度、可否读写等。File对象只用来命名文件、查询文件属性和处理目录,不提供读写文件操作。(P175)
3.文件读写的主要操作包括:建立流对象、读数据、写数据和关闭流。
4.根据输入输出的类型是字节还是字符,java.io提供两种基本抽象类:一种用于读写字节,一种用于读写字符。
5.字节流用于读写二进制数据,比如图像和声音文件等。由InputStream类和OutputStream类为字节流提供API和部分实现。字节流读和写操作由FileInputStream类和FileOutputStream类提供支持。
6.字符流处理Unicode字符集中的任何字符,由Reader类和Writer类为字符流提供API和部分实现。读和写操作由FileReader类和FileWriter类提供支持。(P175)
7.程序要采用缓冲式输入,只要先创建FileReader对象,再利用FileReader对象创建BufferedReader对象。(P178)如:
file=new FileReader("abc.txt");
in=new BufferedReader(file);
8.BufferedWriter类是提供缓冲式输出的类,只要先创建FileWriter对象,再利用FileWriter对象创建BufferedWriter对象。(P179)
9.文件随机访问可利用RandomAccessFile类实现,该类创建的流既可以随机输出,也可以随机输入。(P180)
10.JFileChooser实现打开和保存文件对话框。(P182)
第十章网络与数据库编程基础
1.InetAddress类的对象用于存储IP地址和域名。(P190)
2.要接收和发送信息还需用URLConnection类,程序获得一个URLConnection对象,相当于完成对指定URL的一个HTTP连接。
3.JAVA语言在实现C/S模式中,套接字分为两类:在Server端,ServerSocket类支持底层的网络通信;在Client端,Socket类支持网络的底层通信。(P193)
4.双方实现通信有流式socket和数据报式socket两种可选方式。
5.流式socket是有连接的通信,即TCP;数据报式socket是无连接的通信,即UDP。
6.JAVA程序与数据库连接方法有两种:(1)使用JDBC-ODBC桥接器与数据库连接(2)用纯JAVA的JDBC驱动程序实现与数据库连接。(P198)
7.编写访问数据库的JAVA程序还需要几个重要的类和接口(P201):
(1)DriverManager类:处理驱动程序的加载和建立新数据库连接。
(2)Connection类:处理与特定数据库连接的类。
(3)Statement类:用于在指定的连接中处理SQL语句的类。数据库编程的要点是在程序中嵌入SQL命令。
(4)ResultSet类:执行SQL语句查询,并将查询结果存放在一个用ResultSet类声明的对象中。
8.数据库更新,利用Statement对象的executeUpdate()方法,执行SQL的update语句,实现数据表的修改;执行insert语句,实现记录的添加。
----------------------<a href="http://edu.csdn.net/heima"target="blank">android培训</a>、<a href="http://edu.csdn.net/heima"target="blank">java培训</a>、期待与您交流! ----------------------