1、J2SE基础教程序言当前的软件开发环境开发语言数据库C#SQL ServerJavaOraclePhpMySqlC/C+?XML简介XML,英语全称是Extended Markup Language,弥补了HTML的不足。HTML例子:This is a test page.Q:如果标签丢失或出错,HTML会运行吗?简单XML例子:ZS查看XML文件,双击即可。Q:如果标签丢失或出错,XML会运行吗?XML数据库例子:350303001zs350303002ls查看XML两种方式:(1)双击(2)选择EXCEL程序Q:上面的写法是否支持中文?第一行增加:软件开发流程简介-Lecture第1章
2、Java开发前奏Java是从1995年正式问世,完全面向对象,平台无关性,安全可靠,主要面向Internet的开发工具(B/S)。其特点:自动回收垃圾功能,对象和变量的强制类型检查,取消了指针。Java 分成三种版本: Java 标准版(J2SE)、Java 微缩版(J2ME) 和 Java 企业版(J2EE),关系图如下:Java对Internet的影响如同C对系统编程的影响。|2节1.1 Java虚拟机及Java的跨平台原理第一个C语言例子/C:turboc2Hello.c#include main() printf(Hello worldn);执行步骤:(I) cmdc:turboc2
3、(II) 打开编辑界面:tc Hello.c(III) 编译运行:Ctrl+F9 (IV) 查看结果Alt+F5练习:把turboc2.rar解压到C:turboc2,然后运行上面的Hello.c第一个Java例子前提:Java开发环境的搭建(1) 安装JDK1.5(2) 配置环境变量右击我的电脑属性高级环境变量(A) 修改环境变量名path,最前面添加:C:Program FilesJavajdk1.5.0_04bin;备注:路径前后顺序的重要性:C:WINDOWSsystem32java.exe,(B) 新建环境变量名:classpath 变量值:C:Program FilesJavajd
4、k1.5.0_04jrelibrt.jar;.;(C) 新建环境变量名:java_home 变量值:C:Program FilesJavajdk1.5.0_04至此,环境配置完毕,现在运行第一个Java程序。/C:Hello.javaclass Hello public static void main(String args) System.out.print(Hello worldn); 执行步骤:(I) cmdC:(II) javac Hello.java(III) java Hello /其中java就是一个JVMQ:下面的配置会产生什么样的后果?(Q1) (A)步骤中把C:Progr
5、am FilesJavajdk1.5.0_04bin;放在路径的最后面 (Q2) (B)步骤中classpath的值后面缺少;.;练习:用记事本新建一个Hello.java ,内容同上,然后在cmd界面运行。练习:用记事本新建一个Sum.java ,打印出1+100的和,然后在cmd界面运行。体验:C、Java命令行开发工具与可视化开发工具|2节1.2 体验Java的编程过程初级开发工具:记事本,EditPlus,UltraEdit等,没有函数联想功能。/Hello.javaclass Hello public static void main(String args) System.out.
6、print(Hello worldn);/ System.out.println(Hello world); 练习: Myeclipse的Hello World程序和求和程序。练习:输出如下图的效果:1.3 有效利用java的文档帮助两种版本:HTML , CHM(见压缩包jdk150.chm)class Hello public static void main(String args) String test=Hello world.; System.out.println(test.substring(2, 5); 练习:查找String 变量test中关于o出现的第一次位置。1.4 J
7、VM(虚拟机)的运行过程C:为特定平台编译,产生固定内存偏移量Java:可以跨平台,不确定内存布局,由JVM运行时创立可移植和安全性1.5 垃圾回收器Java内存中的栈与堆:一般变量在栈中,如int i=0;类的实例对象和数组所需要的存储空间在堆上分配,如Hello hello=new Hello();没有引用的对象就是垃圾.用System.gc()回收,如下代码所示:class Hello private int i=10; public static void main(String args) Hello hello=new Hello(); System.out.println(hel
8、lo.i); /运行完后,hello对象就成为垃圾了。后面章节会详细说明它的内存分布。垃圾回收不由程序员控制,无规律可循,java占内存|2节1.6 反编译工具介绍JADjad s java Hello.class练习:自己编写一个类,然后通过.class反编译出源代码第2章 Java编程基础本章案例见MyMath工程:2.1 Java基本语法格式2.1.1 Java基本语法格式概述Java中的所有程序代码都必须存在于一个类中,(注意全局变量的写法也是在一个类中,与C不同)。严格区别大小写。(优点:类Hello 与对象hello的关系)自由格式:一条语句写成若干行,一行写若干语句。练习:根据现
9、成案例改写成自由格式(不推荐)2.1.2 Java程序的注释单行注释多行注释文档注释总结:可读性第一,效率第二。注释一般占代码总量的20%-50% (见案例)2.1.3 Java中的标识符与关键字不能以数字开头,不能是Java中的关键字(public ,for 等),可由任意顺序的大小写字母、数字、下划线和美元符号。(见案例)2.1.4 Java中的常量Java中的单个字符占两个字节,Unicode备注:转义字符n 换行t 制表符 斜杠练习输出软件标题:福建省东方锐智2009版通用进销存系统 (见案例)练习:eclipse-SDK-3.2.2-win32.zip运行上面的例子|2节2.2 变量
10、及变量的作用域2.2.1 Java的变量类型练习:定义以上所有类型的变量2.2.2 注意变量的有效取值范围类型名大小/位取值范围byte8-128127short16-3276832767int32-21474836482147483647long64-92233720368547758089223372036854775807float321.4E-453.4E+38 , -1.4E-45-3.4E+38double644.9E-3241.7E+308, -4.9E-324-1.7E+3082.2.3 基本数据类型之间的转换1自动类型转换(隐式类型转换)两种不同的数据相操作,会自动往上面一级
11、转换 (见案例的public static float square(int i, int j)、或”sum=”+sum)2强制类型转换(显示类型转换)-数据丢失,不推荐byte b = (byte)2572.3 函数2.3.1 函数没有用函数的代码:public class Func1 public static void main(String args) for(int i=0;i3;i+) for(int j=0;j5;j+) System.out.print( * ); System.out.println(); System.out.println(); for(int i=0;i
12、2;i+) for(int j=0;j4;j+) System.out.print( * ); System.out.println(); System.out.println(); for(int i=0;i6;i+) for(int j=0;j10;j+) System.out.print( * ); System.out.println(); 有用函数的代码:public class Func1 public static void main(String args) / int i=3,j=5; drawRectangle(i,j); /System.out.println(i+”:”
13、+j); 形参传递 drawRectangle(2,4); drawRectangle(6,10); public static void drawRectangle(int x,int y) for(int i=0;ix;i+) for(int j=0;jy;j+) System.out.print( * ); System.out.println(); System.out.println(); 练习上面的例子 提高代码的复用性2.3.2 函数的参数传递过程2.4 Java中的运算符2.4.1 算术运算符练习修改案例:public static int room(int i, int j)
14、 /共i个人,每个房间有j个床位,需要多少房间|2节练习:产生随机小数(0,1),(参见JDK帮助 索引Random)练习:产生随机整数0,5练习:产生随机整数1,60练习:产生随机整数61,120练习:产生随机整数函数genearteRnd(int i, int j),并调用之练习修改案例:public static int random(int i, int j) /产生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.
15、2 if条件结构见案例2.5.3 switch 选择结构练习:改写案例为switch结构2.5.4 循环结构练习改写案例:public static int multiple(int i, int j) , 要求效果如下:return (i * (i+1) * (i+2) * j)2.5.5 break与continue语句练习改写案例:public static int multiple(int i, int j) , 其中i0要求效果如下:(1)当i遇到0时,跳过,继续(2)当i遇到0时,跳出循环2.6 数组2.6.1 数组的基本概念int x=new int100;以下是数组在内存的分布
16、结构,与对象是一样的。练习改写案例:public static void printArr(int i, int j) 要求把i,j放在一个整型数组,并把它输出|2节2.6.2 数组的静态初始化练习改写案例:public static void printArr(int i, int j) 要求把i,j替换x数组的后面两个,并倒序输出2.6.3 多维数组不常用2.6.4数组排序练习改写案例:public static void printArr(int i, int j) 要求把i,j替换x数组的后面两个,并从低到高排序以下是参考答案:方法1:采用数据结构与算法的排序法:public clas
17、s Test public static void main(String args) int a=new int6,4,1,2,3,5; int temp; int indexSeq; int i,j; for( i=0;i=a.length-2;i+) for(indexSeq=i,j=i+1;j=a.length-1;j+) if(ajaindexSeq) indexSeq=j; temp=aindexSeq; aindexSeq=ai; ai=temp; /外部for结束 for(int k=0;ka.length;k+) System.out.print(ak); 方法2:Java自
18、带的排序方法:import java.util.*;public class Test public static void main(String args) int ia=new int1,2,4,8,3; Arrays.sort(ia); for(int i=0;iia.length;i+) System.out.println(iai); 第3章 面向对象技术(上)以下各章节内容见项目C/S版JXC:需求分析图:数据库设计-MySQL:练习:安装并配置MySQL,密码设置为123use test;drop table accounts;drop table books;Create t
19、able accounts ( username varchar(20) primary key, userpassword varchar(20) ,dt timestamp);Create table books ( bookisbn varchar(20) primary key, bookcount int,discount float(3,1);insert into accounts values(zbc,123,sysdate();commit;select * from accounts;select * from books;数据库设计-Oracle:练习:安装并配置Orac
20、le,帐号密码设置为Scott/tigerdrop table accounts;drop table books;Create table accounts ( username varchar(20) primary key, userpassword varchar(20) ,dt timestamp);Create table books ( bookisbn varchar(20) primary key, bookcount int,discount number(3,1);insert into accounts values(zbc,123,sysdate);commit;se
21、lect * from accounts;select * from books;练习:运行C/S进销存并互相访问。3.1 面向对象的概念见案例 ( 属性、方法 、封装、继承、函数重载)|2节3.2 类与对象14个文件之间的关系图。Hello.java A.java (public void func1()ProcessCenter.java Accounts.java (四个方法) /增删改查与四个方法的关系。函数内的变量与属性的区别 (初值)数据库的字段与属性的关系(可选类属性,直接用方法传递)成员变量类型的初始值成员变量类型/属性初始值byte0short0int0long 0Lfloa
22、t0.0Fdouble0.0Dcharu0000booleanFalseAll reference typeNull成员函数=方法|2节3.2.1 对象的比较(1) int i vs int j(2) String username vs String specialuser(3) 同上(new String)见案例3.2.2 匿名对象new A().func1 vs A a =new A(); a.func1(); /a.fun2();a.func3();见案例3.3 构造函数new A() VS A a =new A();new Login()见案例练习:3.4 this引用句柄this:
23、顾名思义,它在函数内部就是这个函数所属的对象的引用变量。见案例3.5 与垃圾回收有关的知识自动与手动 (增加系统负担)3.6 函数的参数传递3.6.1 基本数据类型的参数传递 (P7)基本类型的变量作为实参传递,并不能改变这个变量的值。见2.3节的形参传递3.6.2 引用数据类型的参数传递对象的引用变量并不是对象本身,它们只是对象的句柄。能改变其传递的值Client 传递Message ProcessCenter 打印见案例练习:|2节 3.7 Static关键字可直接调用,或实例对象后再用。简述Static的内存结构。与非Static的一般对象的区别。严格来说static的使用破坏了类的封装
24、,但是用在工具类里面还是比较方便的, 一般用做库函数,如System、Math等。常见应用:统计在线人数常见的数据库操作,如books.add等,一般不用Static,会引发并发问题。/Statistics.javapublic class Statistics static int peopleOnLine = 0;/Client.javapublic class Client public static void main(String args) /while (true) System.out.println(Statistics.peopleOnLine+); 3.8 内部类在一个类
25、内部定义,这就是嵌套类。也叫内部类、内置类。public class Out / 内部类 对外不可访问,通过它的父类才可以调用 class In float PAI = 3.14f; public void printPai() System.out.println(new In().PAI); public static void main(String args) Out out = new Out(); out.printPai(); 3.9 使用Java的文档注释javadoc HTML文档javadoc Accounts.java 自动在当前目录生成相关的HTML见案例第4章 面向对
26、象技术(下)4.1 类的继承继承的使用/Person.javapublic class Person String name;String sex; public void addBonus() /插入数据库 System.out.println(每人加一千); /Cashier.javapublic class Cashier extends Person String accountCertificateID; public static void main(String args) new Cashier().addBonus(); /QualityChecker.java (Strin
27、g qualityCertificateID)/Login.java 中的extends JFrame覆盖父类的方法-override覆盖方法必须和被覆盖方法具有相同的方法名称、参数列表和返回值类型。注意与函数重载的区别-3.1见案例练习:重写类final关键字在JAVA中声明类、属性和方法时,可使用关键字final来修饰。final标记的类不能被继承final标记的方法不能被覆盖final标记的变量,即成为常量,只能赋值一次。注意区别:finally是用来抛出异常的关键字。4.2 抽象类与接口4.2.1 抽象类Java中可以定义一不含方法体的方法,它的方法体的实现交给子类根据自己的情况去实现。这样的方法就是抽象方法。包含抽象方法的类就叫抽象类。抽象方法必须用abstract修饰符来定义。任何带有抽象方法的类都必须声明为抽象类。1、抽象类不能被实例化,即不能用new2、抽象类的子类必须覆盖所有的抽象方法后才能被实例化。否则这个子类还是抽象类。含有抽象方法的类肯定是抽象类,抽象类中的某个方法不一定是抽象的。练习:创建一个抽象类,并继承4.2.2 接口如果一个抽象类中的所有方法都是抽象的,就可以将这个类用另外一种方式来定义。即接口。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1