Java程序设计基础教程_第1页
Java程序设计基础教程_第2页
Java程序设计基础教程_第3页
Java程序设计基础教程_第4页
Java程序设计基础教程_第5页
已阅读5页,还剩180页未读 继续免费阅读

下载本文档

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

文档简介

Java程序设计基础教程

(讲稿)

主讲人:靳宗信

黄河科技学院信息工程学院计算机科学系

2011-1-2

Java程序设计基础教程............................................................1

第1章java入门..................................................................1

一、Java的历史...............................................................1

二、编程语言排行榜..........................................................1

三、Java技术的分类..........................................................1

四、Java程序的分类(J2SE)...................................................................................................1

五、Java开发工具............................................................2

六、JDK的安装、配置........................................................3

七、Java程序的开发过程......................................................3

八、参考书籍................................................................4

作业:.......................................................................4

第二章Java语言基础.............................................................6

一、标识符和关键词..........................................................6

二、Java的数据类型..........................................................6

三、运算符...................................................................7

四、Java中的注释............................................................10

五、字符界面常见类型数据的输入.............................................10

六、流程控制语句...........................................................12

七、方法....................................................................17

八、Java数组................................................................19

九、Java命令行参数.........................................................24

作业:编写程序用foreach语法输出命令行所有参数。.........................24

十、java语言的一些说明.....................................................24

第三章类与对象................................................................26

一、编程语言发展的几个阶段.................................................26

二、面向对象编程取代面向过程编程有哪些原因................................26

三、面向对象编程的3个特性.................................................26

四、类......................................................................28

五、对象的创建和引用.......................................................30

六、变量的作用域...........................................................33

七、类变量和静态方法.......................................................34

八、使用包组织类...........................................................37

第四章继承、多态和接口........................................................40

一、访问控制符.............................................................40

二、继承....................................................................40

三、多态性..................................................................42

四、this和super.......................................................................................................................44

五、final修饰符............................................................47

六、抽象类和抽象方法.......................................................48

七、接口....................................................................48

八、内嵌类..................................................................50

九、对象引用转换...........................................................54

第五章常用系统类..............................................................57

一、语言基础类.............................................................57

二、字符串..................................................................58

三、Vector类...............................................................62

四、CollectionAPI简介....................................................64

五、日期和时间.............................................................67

第六章JavaApplet..............................................................................................................................70

一、Applet简介.............................................................70

二、Applet方法介绍.........................................................70

三、Applet的AWT绘制......................................................71

四、Applet参数传递.........................................................74

五、Applet多媒体支持......................................................75

六、Java存档文件...........................................................78

第七章图形用户界面编辑........................................................80

一、图形用户界面的核心概念.................................................80

二、容器与布局管理.........................................................83

三、常用GUI标准组件.......................................................88

四、鼠标和键盘事件.........................................................96

五、菜单的使用.............................................................102

六、对话框(Dialog)的使用................................................105

第八章异常处理................................................................109

一、异常的概念.............................................................109

二、异常的处理.............................................................111

三、自定义异常.............................................................112

第九章流式输入/输出与文件处理.................................................114

一、输入/输出的基本概念...................................................114

二、面向字节的输入/输出流.................................................115

三、面向字符的输入/输出流.................................................120

四、转换流.................................................................122

五、文件处理(File类)......................................................123

六、对象串行化.............................................................128

第十章多线程..................................................................133

一、Java多线程的概念......................................................133

二、Java多线程编程方法....................................................136

三、线程的控制.............................................................138

四、线程资源的同步处理....................................................140

第I-一章JDBC技术和数据库应用...............................................148

一、关系数据库概述........................................................148

二、JDBC......................................................................................................................................148

三、JDBC基本应用..........................................................150

四、数据库应用举例........................................................155

第十二章Java的网络编程.......................................................156

一、网络编程基础..........................................................156

二、InetAddress类.........................................................156

三、URL类.................................................................158

四、URLConnection类.......................................................161

五、Socket络通信..........................................................162

六、无连接的数据报........................................................171

作业:.....................................................................179

第十三章Swing编程............................................................181

一、Swing包简介...........................................................181

二、Swing包典型部件的使用................................................181

200220032004200520062007200820062010

-Java-PHP-(Visual)BasicPythonDelphi

—C-C++C*Perl-JavaScript

三、Java技术的分类

(1)J2SE:Java2StandardEdition

支持所有JAVA标准规范中所定义的核心类函数库和所有的JAVA基本

类别。J2SE定位在客户端程序的应用上。

(2)J2EE:Java2EnterpriseEdition

在J2SE的基础上增加了企业内部扩展类函数库的支持,比如支持

Servlet/JSP的javax.servletr.*和EJB的javax.ejb.*的类函数库。J2EE定位

在服务器端程序的应用上。

(3)J2ME:Java2MicroEdition

只支持JAVA标准规范中所定义的核心类函数库的子集。定位于嵌入式

系统的应用上。

四、Java程序的分类(J2SE)

(1)JavaApplication

例:

classHelloWorld{

publicstaticvoidmain(String[]args){

System.out.printIn("HelloWorld!");

}

(2)JavaApplet

例:

importjava.applet.Applet;

importjava.awt.*;

publicclassTestAppletextendsApplet{

publicvoidpaint(Graphicsg){

g.drawString(nHelloWorldM,10,100);

<HTML>

<HEAD>

<TITLE>NewDocument</TITLE>

</HEAD>

<BODY>

<appletcode=f*TestAppletclass**height=400width=400>

</applet>

</BODY>

</HTML>

五、Java开发工具

(1)JDK:JavaSoftwareDevelopKit

可以从下面的网站下载:

/technetwork/java/index.html

()

(2)EditPlus:源程序的编辑器

(3)Java的集成开发环境

Eclipse(MyEclipse)

Netbeans

JBuilder

Jcreator

2

六、JDK的安装、配置

(1)下载JDK

(2)安装JDK

(3)配置环境变量

PATH

CLASSPATH

(4)安装EditPlus

七、Java程序的开发过程

(1)Java应用程序的开发过程

编辑源程序(EditPlus)

保存源程序(.java)

编译源程序(javac.exe)

调试源程序

运行

例子:

classHelloWorld{

publicstaticvoidmain(String[]args){

System.out.println(nHelloWorld!**);

}

)

(2)JavaApplet的开发过程

编辑源程序(EditPlus)

保存源程序(.java)

编译源程序(javac.exe)

调试源程序

运行(浏览器运行)

例子:

importjava.applet.Applet;

importjava.awt.*;

publicclassTestAppletextendsApplet{

3

publicvoidpaint(Graphicsg){

g.drawString("HelloWorld",10,100);

<HTML>

<HEAD>

<TITLE>NewDocument</TITLE>

</HEAD>

<BODY>

oppletcode="TestApplet.class"height=400width=400>

</applet>

</BODY>

</HTML>

八、参考书籍

(1)《ThinkinginJava》FourthEdition

1999年Java世界最具有影响力的书籍

作者:BruceEckel

《ThinkinginC++》

《ThinkinginPatterns》

《C++Inside&Out》

WsingC++》

(2)最重要的资料:JavaAPIDocumentation

可以从以下网站下载:

/technetwork/java/index.html

()

作业:

(1)配置Java的开发环境

(2)编写一个Java应用程序,并运行…

(3)编写一个JavaApplet,并运行…

4

(4)叙述Java为什么是跨平台的?

5

第二章Java语言基础

一、标识符和关键词

(1)标识符:用来表示类名、变量名、方法名、类型名、数组名、文件名

的有效字符序列

Java语言规定:标识符有字母、下划线、美元符号和数字组成,并且第一

个字符不能是数字。

Java语言中的字母不仅是指常用的拉丁字母a、b、c等,还包括汉字、日

文、朝鲜文、俄文、希腊字母以及其他许多语言中的文字。

(2)关键词:java语言中被赋予特定意义的一些单词。

不能把这些单词作为名字来使用。

常见的关键词如下:

abstracbooleabreakbytecasecatchcharclass

tn

continudodoublelseenumextendsfalseHnal

ee

finallyfloatforimplemenimportinstanceofintinterfac

tse

longnativenewnullpackagprivateprotectepublic

ed

returnshortstaticsuperswitchsychronizethisthrow

d

throwstruetryvoidwhile

二、Java的数据类型

(-)基本数据类型

基本类型大小最小值最大值对应包装类

boolean———Boolean

char16bitUnicode0Unicode216-1Character

byte8bit-128+127Byte

6

short16bit-215-215-1Short

int32bit-231-231-1Integer

long64bit-263-263-1Long

float32bitIEEE754IEEE754Float

double64bitIEEE754IEEE754Double

基本数据类型的转换:(按精度从高到底的顺序)

bytefshortTirt—long—float—double

(1)自动类型转换

(2)强制类型转换

(二)复合数据类型

类型性、接口类型、数组类型等。

三、运算符

(1)+—*/%

例题1:

publicclassTestOne{

publicstaticvoidmain(String[]args){

System.out.println(7/2);

System.out.println(7.0/2);

System.out.println(7.0/2.0);

System.out.println(7.0/2.0);

)

)

例题2:

publicclassTestTwo{

publicstaticvoidmain(String[]args){

System.out.print(7%-2+n\tn);

System.outprint(7%2+M\tH);

System.out.print(-7%2+n\tn);

System.out.println(-7%-2+H\tH);

System.out.println(n7.2%2.8=H+7.2%2.8);

)

7

(2)++——

例题3:

publicclassTestThree{

publicstaticvoidmain(String[]args){

inta=2;

a++;

System.out.println(Ha=n+a);

intm=a++;

System.out.println(na=n+a+n,m=H+m);

intn=++a;

System.out.println(na=n+a+n,n=n+n);

}

}

算术混合运算的精度:

byteshortintlongfloatdouble

★char类型和整数类型运算的结果?

例题4:

publicclassTestFour{

publicstaticvoidmain(String[]args){

bytex=7;

//那么,B,+x的结果是什么类型?

}

}

(3)关系运算符:v===!=

(4)逻辑运算符(短路运算):&&II!

oplop2opl&&op2oplllopl!opl

truetruetruetruefalse

truefalsefalsetruefalse

falsetruefalsetruetrue

falsefalsefalsefalsetrue

8

例题5:(短路运算)

publicclassTestFive{

publicstaticvoidmain(String[]args){

intx=l,y=l;

booleanb=(((y=l)==0)&&((x=6)==6));

System.out.println(nx=n+x);

System.out.println(Hy=n+y);

}

)

(5)位运算:

按位逻辑运算:&I~八

例题6:

publicclassTestSix{

publicstaticvoidmain(String[]args){

inta=3;

intb=5;

System.out.println(na&b=n+(a&b));

System.out.println(nalb=H+(alb));

System.out.println(naAb=H+(aAb));

System.out.println(n-a=H+(-a));

)

}

移位运算:>>>>>«

例题7:

publicclassTestSeven{

publicstaticvoidmain(String[]args){

inta=5;

System.out.println(na»2=n+(a»2));

System.out.println(na>»2=u+(a>»2));

System.out.println(Ha«2=u+(a«2));

}

)

(6)其它运算符:

9

运算符描述

?:所用相当于if-else

[]用于声明数组、创建数组及访问数组元素

•用于访问对象实例或者类的成员

(type)强制类型转换

new创建对象或数组

instanceof判断对象是否为类的实例

四、Java中的注释

(1)单行注释

〃此行为单行注释

(2)多行注释

/*

此处为多行注释

*/

(3)文档注释

/**

此处为文档注释

*/

五、字符界面常见类型数据的输入

(1)字符的输入

例题:

importjava.io.*;

publicclassInputChar{

publicstaticvoidmain(String[]args){

charc='';

System.out.println(HEnteracharacterplease:0);

try{

c=(char)System.in.read();

}

catch(IOExceptione){

System.out.println(e);

io

System.out.println(nYou,veenteredacharacter:H+c);

)

★上例中如果输入英文准确无误,那么输入汉字呢?

例题:

importjava.io.*;

publicclassInputChar{

publicstaticvoidmain(String[]args){

charc=**;

System.out.println(MEnteracharacterplease:0);

try(

InputStreamReaderln=newInputStreamReader(System.in);

c=(char)ln.read();

)

catch(IOExceptione){

System.out.println(e);

)

System.out.println(nYou,veenteredacharacterise);

}

}

(2)字符串的输入

importjava.io.*;

publicclassInputString{

publicstaticvoidmain(String[]args){

Strings=HH;

System.out.println(nEnteraStringplease:");

try{

InputStreamReaderln=newInputStreamReader(System.in);

BufferedReaderin=newBufferedReader(ln);

s=in.readLine();

}

catch(IOExceptione){

System.out.println(e);

11

System.out.println(nYou,veenteredaString:H+s);

)

(3)基本数据类型的输入

importjava.io.*;

publicclassInputlnteger{

publicstaticvoidmain(String[]args){

inta=0;

System.out.println(nEnteraIntegerplease:”);

try(

InputStreamReaderln=newInputStreamReader(System.in);

BufferedReaderin=newBufferedReader(ln);

Strings=in.readLine();

a=lnteger.parselnt(s);

}

catch(IOExceptione){

System.out.println(e);

)

System.out.println(nYou,veenteredaInteger:M+a);

)

}

★其它输入方式

importjava.util.*;

publicclassOtherlnput{

publicstaticvoidmain(String[]args){

Scannerscan=newScanner(System.in);

inta=scan.nextlnt();

System.out.println(a);

}

)

六、流程控制语句

(1)条件控制语句

12

if语句

例题:2-6从键盘上输入3个数,输出其中的最大者。

importjava.io.*;

publicclassMax{

publicstaticvoidmain(String[]args){

inta9b9c9max;

Strings;

try{

System.out.print("输入第一个整型数:”);

BufferedReaderbr=newBufferedReader(new

InputStreamReader(System.in));

s=br.readLine();

a=lnteger.parselnt(s);

System.out.print("输入第二个整数:");

s=br.readLine();

b=lnteger.parselnt(s);

System.out.print("输入第三个整数:”);

s=bnreadLine();

c=lnteger.parselnt(s);

max=a;

if(b>max)max=b;

if(c>max)max=c;

System.out.println(M三个数种最大的数是:n+max);

)

catch(lOExceptione){}

}

)

switch语句

例题2-8从键盘输入一行字符,分别统计其中数字字符、空格以及其它字

符的数量。

importjava.io.*;

classSwitchTest{

publicstaticvoidmain(String[]args)throwsIOException{

13

intnumberOfDigits=0,numberOfSpaces=0,numberOfOthers=0;

charc;

while((c=(char)System.in.read())!=,\n,){

switch(c){

case'O':

caseT:

case'2':

case3:

case'4':

case'5':

case'6':

case7:

case8:

case9:numberOfDigits++;break;

case'numberOfSpaces++;break;

default:numberOfOthers++;break;

}

}

System.out.println(nnumberOfDigits=11+numberOfDigits+Hn);

System.out.println(nnumberOfspaces=n+numberOfSpaces+MH);

System.out.println(nnumberOfothers=n+numberOfOthers+nn);

)

}

★Enter键:,\r\n'

(2)循环语句

while循环:

例题2・9:在三位数中找出所有水仙花数,水仙花数的条件是该数等于其各

位数字的立方和。

publicclassNarcissus{

publicstaticvoidmain(String[]args){

intij,k,n=100,m=l;

while(n<1000){

i=n/100;〃获取最高位

j=(n-i*100)/10;〃获取第2位

14

k=n%10;〃获取最低位

if(Math.pow(i,3)+Math.pow(j,3)+Math.pow(k,3)==n)

5丫§1©111.0111甲日111:111("找至!]第”+111+++”个水仙花数:"+n);

n++;

)

)

)

do-while循环

例题2-11:求1+2+3+4+...+100的值。

publicclassAdd{

publicstaticvoidmain(String[]args){

longsum=0;

intk=l;

do{

sum=sum+k;

k++;

)

while(k<=100);

System.out.println(nl+2+3+...+100=H+sum);

}

)

for语句

例题2-13:求Fibonacci(斐波那契)数列的前10个数。

publicclassFibonacci(

publicstaticvoidmain(String[]args){

intn0=0,nl=l,n2;

System.out.print(nO+nn+nl+nn);

for(inti=0;i<8;i++){

n2=nl+n0;

System.out.print(n2+nH);

n0=nl;

nl=n2;

)

System.out.println();

15

(3)跳转语句

break语句:

例题2・16:Break语句使用实例。

publicclassUsingBreak{

publicstaticvoidmain(String[]args){

inti=0;

while(true){

i++;

System.out.print(i+nn);

if(i>=9)break;

}

)

}

带标号的break

例题2-17:证明3-100之间的数是否符合角谷猜想。

角谷猜想:任何正整数n,如果是偶数,则除2,如果是奇数,则乘3加1,

得到一个新数,继续这样的处理,最后得到的数一定是1。

publicclassJGuess{

publicstaticvoidmain(String[]args){

intk;

outer:

for(k=3;k<=100;k++){

intn=k;

do{

if(n%2==0)

n=n/2;

else

n=n*3+l;

if(n==0){

System.out.print(k+”不满足角谷猜想”);

breakouter;

16

while(n!=l);

)

if(k==101)

System.out.print(“数3-100之间的数满足角谷猜想”);

}

)

continue语句(带标号的continue)

七、方法

Java中的函数称为方法。

①实例方法:对象所拥有的方法。

②静态方法(类方法):类所拥有的方法。

publicclassTestStaticMethod{

publicstaticvoidf(){

System.outprintln(**iamastaticfun");

)

publicstaticvoidmain(String[]args){

f();

)

)

参数传递:

①基本类型的参数传递:传递的是值。

例题2-21:基本数据类型参数传递演示。

publicclassSwapTest{

staticvoidswap(intx,inty){

inttemp;

temp=x;

x=y;

y=temp;

System,out.print加(''x=''+x+",y=''+y);

)

publicstaticvoidmain(String[]args){

intn=7,m=5;

17

swap(n,m);

System.out.println(Hn=n+n+u,m=n+m);

}

}

②引用类型的参数传递:传递的是地址。

publicclassRefSwap{

intvalue=O;

staticvoidswap(RefSwapx,RefSwapy){

inttemp;

temp=x.value;

x.value=y.value;

y.value=temp;

System.out.println(Hincallingmethod:0);

System.out.println(nx.value=n+x.value+n,y.value=n+y.value);

)

publicstaticvoidmain(String[]args){

RefSwapn=newRefSwapO;

RefSwapm=newRefSwapO;

n.value=4;

m.value=5;

System.out.println(nbeforecalling:'');

System.out.println(nn.value=n+n.value+n,m.value=n+m.value);

swap(n9m);

System.out.println(naftercalled:**);

System.out.println(Hn.value=n+n.value+n,m.value=n+m.value);

}

}

递归:在方法内又调用方法自己。

例题2-23:求1+1/2!+1/3!+........+1/10!。

publicclassFactorial(

staticintfac(intn){

if(n==l)

return1;

18

else

returnn*fac(n-l);

}

publicstaticvoidmain(String[]args){

doubles=l;

for(intk=2;k<=10;k++){

s=s+1.0/fac(k);

)

System.out.println("1+1/2!+1/3!++l/10!="+s);

八、Java数组

一维数组:

(1)声明数组

inta[];

int[]a;

(2)数组初始化

①int[]a={l,2,3,4,5,6,7,8,9);

②int口a=newint[9];

for(inti=0;i<9;i++){

a[i]=i+l;

)

③int[]a=newint[]{1,2,3,4,5,6,7,8,9};

演变,可变参数

例题:

classTestArg{

staticvoidf(int[]a){

for(intx:a){

System.out.print(x+"");

)

}

publicstaticvoidmain(String[]args){

int[]b=newint口{1,2,3,4,5,6,7};

19

f(b);

)

可以演变为:

classTestArg{

staticvoidf(int[]a){

for(intx:a){

System.out.print(x+Mn);

}

)

publicstaticvoidmain(String[]args){

f(newint[]{1,2,3,4,5,6,71);

}

)

继而演变为:

classTestArg{

staticvoidf(int...a){

for(intx:a){

System.out.print(x+Hn);

)

)

publicstaticvoidmain(String[]args){

f(l,2,3,4,5,6,7);

)

)

(3)一维数组的长度

a.lenth

例题:

classTestArray{

publicstaticvoidmain(String[]args){

int[]a=newint口{1,2,3,4,5,6,7,8,9};

for(inti=O;i<a.length;i++){

System.out.print(a[i]+nM);

20

二维数组:

(1)声明数组

inta[][];

int[][]a;

(2)数组初始化

①int[][]a={{l,2,3},{4,5,6},{7,8,9}};

classTestArray{

publicstaticvoidmain(String[]args){

int[][]a={{l,23},{4,5,6},{7,8,9}};

for(inti=O;i<a.length;i++){

for(intj=O;j<a[i].length;j++){

System.out.print(a[i][j]+nM);

)

System.out.println();

)

}

)

②int[][]a=newint[3][];

a[0]=newint[3];

a[l]=newint[3];

a[2]=newint[3];

for(inti=O;i<a.length;i++){

for(intj=O;j<a[i].length;j++){

a[i]U]=k;

k++;

)

)

例题:

classTestArray{

publicstaticvoidmain(String[]args){

intk=l;

21

int[][]a=newint[3][];

a[O]=newint[3];

a[l]=newint[3];

a[2]=newint[3];

for(inti=O;i<a.length;i++){

for(intj=O;j<a[i].length;j++){

a[i]U]=k;

k++;

)

}

for(inti=O;i<a.length;i++){

for(intj=O;j<a[i].length;j++){

System.out.print(a[i][j]+nn);

)

System.out.println();

★java中的二维数组可以看做是数组的数组。(每行可以有不同的列数)

例题:二维数组动态创建。

publicclassArrayOfArrayDemo2{

publicstaticvoidmain(String[]args){

int[][]aMatrix=newint[4][];

for(inti=O;i<aMatrix.length;i++){

aMatrix[i]=newint[i+l];

for(intj=O;j<aMatrix[i].l

温馨提示

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

评论

0/150

提交评论