J2SE基础教程.docx

上传人:b****5 文档编号:12303796 上传时间:2023-04-18 格式:DOCX 页数:122 大小:545.83KB
下载 相关 举报
J2SE基础教程.docx_第1页
第1页 / 共122页
J2SE基础教程.docx_第2页
第2页 / 共122页
J2SE基础教程.docx_第3页
第3页 / 共122页
J2SE基础教程.docx_第4页
第4页 / 共122页
J2SE基础教程.docx_第5页
第5页 / 共122页
点击查看更多>>
下载资源
资源描述

J2SE基础教程.docx

《J2SE基础教程.docx》由会员分享,可在线阅读,更多相关《J2SE基础教程.docx(122页珍藏版)》请在冰豆网上搜索。

J2SE基础教程.docx

J2SE基础教程

序言

当前的软件开发环境

开发语言

数据库

C#

SQLServer

Java

Oracle

Php

MySql

C/C++

?

XML简介

XML,英语全称是ExtendedMarkupLanguage,弥补了HTML的不足。

HTML例子:

Thisisatestpage.

Q:

如果标签丢失或出错,HTML会运行吗?

简单XML例子:

ZS

查看XML文件,双击即可。

Q:

如果标签丢失或出错,XML会运行吗?

XML数据库例子:

350303001zs

350303002ls

查看XML两种方式:

(1)双击

(2)选择EXCEL程序

Q:

上面的写法是否支持中文?

第一行增加:

xmlversion="1.0"encoding="GB2312"?

>

软件开发流程简介-Lecture

第1章Java开发前奏

Java是从1995年正式问世,完全面向对象,平台无关性,安全可靠,主要面向Internet的开发工具(B/S)。

其特点:

自动回收垃圾功能,对象和变量的强制类型检查,取消了指针。

Java分成三种版本:

Java标准版(J2SE)、Java微缩版(J2ME)和Java企业版(J2EE),关系图如下:

Java对Internet的影响如同C对系统编程的影响。

||2节

1.1Java虚拟机及Java的跨平台原理

第一个C语言例子

//C:

\turboc2\Hello.c

#include

main()

{

printf("Helloworld\n");

}

执行步骤:

(I)cmd>c:

\turboc2

(II)打开编辑界面:

tcHello.c

(III)编译运行:

Ctrl+F9

(IV)查看结果Alt+F5

练习:

把turboc2.rar解压到C:

\turboc2,然后运行上面的Hello.c

第一个Java例子

前提:

Java开发环境的搭建

(1)安装JDK1.5

(2)配置环境变量

右击我的电脑à属性à高级à环境变量

(A)修改环境变量名path,最前面添加:

C:

\ProgramFiles\Java\jdk1.5.0_04\bin;

备注:

路径前后顺序的重要性:

C:

\WINDOWS\system32\java.exe,

(B)新建环境变量名:

classpath变量值:

C:

\ProgramFiles\Java\jdk1.5.0_04\jre\lib\rt.jar;.;

(C)新建环境变量名:

java_home变量值:

C:

\ProgramFiles\Java\jdk1.5.0_04\

至此,环境配置完毕,现在运行第一个Java程序。

//C:

\Hello.java

classHello

{

publicstaticvoidmain(String[]args)

{

System.out.print("Helloworld\n");

}

}

执行步骤:

(I)cmd>C:

\

(II)javacHello.java

(III)javaHello//其中java就是一个JVM

Q:

下面的配置会产生什么样的后果?

(Q1)(A)步骤中把C:

\ProgramFiles\Java\jdk1.5.0_04\bin;放在路径的最后面

(Q2)(B)步骤中classpath的值后面缺少;.;

练习:

用记事本新建一个Hello.java,内容同上,然后在cmd界面运行。

练习:

用记事本新建一个Sum.java,打印出1+…+100的和,然后在cmd界面运行。

体验:

C、Java命令行开发工具与可视化开发工具

||2节

1.2体验Java的编程过程

初级开发工具:

记事本,EditPlus,UltraEdit等,没有函数联想功能。

//Hello.java

classHello

{

publicstaticvoidmain(String[]args)

{

System.out.print("Helloworld\n");

//System.out.println("Helloworld");

}

}

练习:

Myeclipse的HelloWorld程序和求和程序。

练习:

输出如下图的效果:

1.3有效利用java的文档帮助

两种版本:

HTML,CHM(见压缩包jdk150.chm)

classHello

{

publicstaticvoidmain(String[]args)

{

Stringtest="Helloworld.";

System.out.println(test.substring(2,5));

}

}

练习:

查找String变量test中关于o出现的第一次位置。

1.4JVM(虚拟机)的运行过程

C:

为特定平台编译,产生固定内存偏移量

Java:

可以跨平台,不确定内存布局,由JVM运行时创立è可移植和安全性

1.5垃圾回收器

Java内存中的栈与堆:

一般变量在栈中,如inti=0;

类的实例对象和数组所需要的存储空间在堆上分配,如Hellohello=newHello();

没有引用的对象就是垃圾.用System.gc()回收,如下代码所示:

classHello

{

privateinti=10;

publicstaticvoidmain(String[]args)

{

Hellohello=newHello();

System.out.println(hello.i);

}

}

//运行完后,hello对象就成为垃圾了。

后面章节会详细说明它的内存分布。

垃圾回收不由程序员控制,无规律可循,àjava占内存

||2节

1.6反编译工具介绍JAD

jad–sjavaHello.class

练习:

自己编写一个类,然后通过.class反编译出源代码

第2章Java编程基础

本章案例见MyMath工程:

2.1Java基本语法格式

2.1.1Java基本语法格式概述

Java中的所有程序代码都必须存在于一个类中,(注意全局变量的写法也是在一个类中,与C不同)。

严格区别大小写。

(优点:

类Hello与对象hello的关系)

自由格式:

一条语句写成若干行,一行写若干语句。

练习:

根据现成案例改写成自由格式(不推荐)

2.1.2Java程序的注释

单行注释

多行注释

文档注释

总结:

可读性第一,效率第二。

注释一般占代码总量的20%-50%(见案例)

2.1.3Java中的标识符与关键字

不能以数字开头,不能是Java中的关键字(public,for等),可由任意顺序的大小写字母、数字、下划线和美元符号。

(见案例)

2.1.4Java中的常量

Java中的单个字符占两个字节,Unicode

备注:

转义字符

\n换行

\t制表符

\\斜杠

练习输出软件标题:

福建省东方锐智\2009版'通用进销存'系统(见案例)

练习:

eclipse-SDK-3.2.2-win32.zip运行上面的例子

||2节

2.2变量及变量的作用域

2.2.1Java的变量类型

练习:

定义以上所有类型的变量

2.2.2注意变量的有效取值范围

类型名

大小/位

取值范围

byte

8

-128~127

short

16

-32768~32767

int

32

-2147483648~2147483647

long

64

-9223372036854775808~9223372036854775807

float

32

1.4E-45~3.4E+38,-1.4E-45~-3.4E+38

double

64

4.9E-324~1.7E+308,-4.9E-324~-1.7E+308

2.2.3基本数据类型之间的转换

1自动类型转换(隐式类型转换)

两种不同的数据相操作,会自动往上面一级转换

(见案例的publicstaticfloatsquare(inti,intj)、或”sum=”+sum)

2强制类型转换(显示类型转换)-数据丢失,不推荐

byteb=(byte)257

2.3函数

2.3.1函数

没有用函数的代码:

publicclassFunc1{

publicstaticvoidmain(String[]args){

for(inti=0;i<3;i++)

{

for(intj=0;j<5;j++)

{

System.out.print("*");

}

System.out.println();

}

System.out.println();

for(inti=0;i<2;i++)

{

for(intj=0;j<4;j++)

{

System.out.print("*");

}

System.out.println();

}

System.out.println();

for(inti=0;i<6;i++)

{

for(intj=0;j<10;j++)

{

System.out.print("*");

}

System.out.println();

}

}

}

有用函数的代码:

publicclassFunc1{

publicstaticvoidmain(String[]args){

//inti=3,j=5;

drawRectangle(i,j);//System.out.println(i+”:

”+j);形参传递

drawRectangle(2,4);

drawRectangle(6,10);

}

publicstaticvoiddrawRectangle(intx,inty)

{

for(inti=0;i

{

for(intj=0;j

{

System.out.print("*");

}

System.out.println();

}

System.out.println();

}

}

练习上面的例子提高代码的复用性

2.3.2函数的参数传递过程

2.4Java中的运算符

2.4.1算术运算符

练习修改案例:

publicstaticintroom(inti,intj)//共i个人,每个房间有j个床位,需要多少房间

||2节

练习:

产生随机小数(0,1),(参见JDK帮助索引Random)

练习:

产生随机整数[0,5]

练习:

产生随机整数[1,60]

练习:

产生随机整数[61,120]

练习:

产生随机整数函数genearteRnd(inti,intj),并调用之

练习修改案例:

publicstaticintrandom(inti,intj)//产生i到j之间的随机数

2.4.2赋值运算符

见案例

2.4.3比较运算符

见案例

2.4.4逻辑运算符

见案例

||2节

2.4.5位运算符

见案例

2.4.6运算符的优先级

见案例

2.5程序的流程控制

2.5.1顺序结构

见案例

2.5.2if条件结构

见案例

2.5.3switch选择结构

练习:

改写案例为switch结构

2.5.4循环结构

练习改写案例:

publicstaticintmultiple(inti,intj),要求效果如下:

return(i*(i+1)*(i+2)…*j)

2.5.5break与continue语句

练习改写案例:

publicstaticintmultiple(inti,intj),其中i<0andj>0要求效果如下:

(1)当i遇到0时,跳过,继续

(2)当i遇到0时,跳出循环

2.6数组

2.6.1数组的基本概念

intx[]=newint[100];

以下是数组在内存的分布结构,与对象是一样的。

练习改写案例:

publicstaticvoidprintArr(inti,intj)要求把i,j放在一个整型数组,并把它输出

||2节

2.6.2数组的静态初始化

练习改写案例:

publicstaticvoidprintArr(inti,intj)

要求把i,j替换x数组的后面两个,并倒序输出

2.6.3多维数组

不常用

2.6.4数组排序

练习改写案例:

publicstaticvoidprintArr(inti,intj)

要求把i,j替换x数组的后面两个,并从低到高排序

以下是参考答案:

方法1:

采用数据结构与算法的排序法:

publicclassTest{

publicstaticvoidmain(String[]args){

inta[]=newint[]{6,4,1,2,3,5};

inttemp;

intindexSeq;

inti,j;

for(i=0;i<=a.length-2;i++)

{

for(indexSeq=i,j=i+1;j<=a.length-1;j++)

{

if(a[j]

{indexSeq=j;

}

}

temp=a[indexSeq];

a[indexSeq]=a[i];

a[i]=temp;

}//外部for结束

for(intk=0;k

System.out.print(a[k]);

}

}

方法2:

Java自带的排序方法:

importjava.util.*;

publicclassTest{

publicstaticvoidmain(String[]args){

intia[]=newint[]{1,2,4,8,3};

Arrays.sort(ia);

for(inti=0;i

{

System.out.println(ia[i]);

}

}

}

第3章面向对象技术(上)

以下各章节内容见项目C/S版JXC:

需求分析图:

数据库设计-MySQL:

练习:

安装并配置MySQL,密码设置为123

usetest;

droptableaccounts;

droptablebooks;

Createtableaccounts(usernamevarchar(20)primarykey,userpasswordvarchar(20),dttimestamp);

Createtablebooks(bookisbnvarchar(20)primarykey,bookcountint,discountfloat(3,1));

insertintoaccountsvalues('zbc','123',sysdate());

commit;

select*fromaccounts;

select*frombooks;

数据库设计-Oracle:

练习:

安装并配置Oracle,帐号密码设置为Scott/tiger

droptableaccounts;

droptablebooks;

Createtableaccounts(usernamevarchar(20)primarykey,userpasswordvarchar(20),dttimestamp);

Createtablebooks(bookisbnvarchar(20)primarykey,bookcountint,discountnumber(3,1));

insertintoaccountsvalues('zbc','123',sysdate);

commit;

select*fromaccounts;

select*frombooks;

练习:

运行C/S进销存并互相访问。

3.1面向对象的概念

见案例(属性、方法、封装、继承、函数重载)

||2节

3.2类与对象

14个文件之间的关系图。

Hello.javaàA.java(publicvoidfunc1())

è

ProcessCenter.javaàAccounts.java(四个方法)//增删改查与四个方法的关系。

è

函数内的变量与属性的区别(初值)

è

数据库的字段与属性的关系(可选类属性,直接用方法传递)

成员变量类型的初始值

成员变量类型/属性

初始值

byte

0

short

0

int

0

long

0L

float

0.0F

double

0.0D

char

‘\u0000’

boolean

False

Allreferencetype

Null

成员函数==方法

||2节

3.2.1对象的比较

(1)intivsintj

(2)StringusernamevsStringspecialuser

(3)同上(newString)

见案例

3.2.2匿名对象

newA().func1vsAa=newA();a.func1();//a.fun2();a.func3();

见案例

3.3构造函数

newA()VSAa=newA();

ènewLogin()

见案例

练习:

3.4this引用句柄

this:

顾名思义,它在函数内部就是这个函数所属的对象的引用变量。

见案例

3.5与垃圾回收有关的知识

自动与手动(增加系统负担)

3.6函数的参数传递

3.6.1基本数据类型的参数传递(P7)

基本类型的变量作为实参传递,并不能改变这个变量的值。

见2.3节的形参传递

3.6.2引用数据类型的参数传递

对象的引用变量并不是对象本身,它们只是对象的句柄。

能改变其传递的值

Client传递MessageàProcessCenterà打印

见案例

练习:

||2节

3.7Static关键字

可直接调用,或实例对象后再用。

简述Static的内存结构。

与非Static的一般对象的区别。

严格来说static的使用破坏了类的封装,但是用在工具类里面还是比较方便的,一般用做库函数,如System、Math等。

常见应用:

统计在线人数

常见的数据库操作,如books.add等,一般不用Static,会引发并发问题。

//Statistics.java

publicclassStatistics{

staticintpeopleOnLine=0;

}

//Client.java

publicclassClient{

publicstaticvoidmain(String[]args){

//while(true)

System.out.println(Statistics.peopleOnLine++);

}

}

3.8内部类

在一个类内部定义,这就是嵌套类。

也叫内部类、内置类。

publicclassOut{

//内部类对外不可访问,通过它的父类才可以调用

classIn{

floatPAI=3.14f;

}

publicvoidprintPai(){

System.out.println(newIn().PAI);

}

publicstaticvoidmain(Stringargs[]){

Outout=newOut();

out.printPai();

}

}

3.9使用Java的文档注释

javadocàHTML文档

javadocAccounts.java自动在当前目录生成相关的HTML

见案例

第4章面向对象技术(下)

4.1类的继承

继承的使用

//Person.java

publicclassPerson{

Stringname;

Stringsex;

publicvoidaddBonus(){

//插入数据库

System.out.println("每人加一千");

}

}

//Cashier.java

publicclassCashierextendsPerson{

StringaccountCertificateID;

publicstaticvoidmain(Stringargs[]){

newCashier().addBonus();

}

}

//QualityChecker.java(StringqualityCertificateID)

//Login.java中的extendsJFrame

覆盖父类的方法-override

覆盖方法必须和被覆盖方法具有相同的方法名称、参数列表和返回值类型。

注意与函数重载的区别--3.1

见案例

练习:

重写类

final关键字

在JAVA中声明类、属性和方法时,可使用关键字final来修饰。

final标记的类不能被继承

final标记的方法不能被覆盖

final标记的变量,即成为常量,只能赋值一次。

注意区别:

finally是用来抛出异常的关键字。

4.2抽象类与接口

4.2.1抽象类

Java中可以定义一不含方法体的方法,它的方法体的实现交给子类根据自己的情况去实现。

这样的方法就是抽象方法。

包含抽象方法的类就叫抽象类。

抽象方法必须用abstract修饰符来定义。

任何带有抽象方法的类都必须声明为抽象类。

1、抽象类不能被实例化,即不能用new

2、抽象类的子类必须覆盖所有的抽象方法后才能被实例化。

否则这个子类还是抽象类。

含有抽象方法的类肯定是抽象类,抽象类中的某个方法不一定是抽象的。

练习:

创建一个抽象类,并继承

4.2.2接口

如果一个抽象类中的所有方法都是抽象的,就可以将这个类用另外一种方式来定义。

即接口。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 韩语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1