201Java课件.docx
- 文档编号:29092721
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:43
- 大小:1.35MB
201Java课件.docx
《201Java课件.docx》由会员分享,可在线阅读,更多相关《201Java课件.docx(43页珍藏版)》请在冰豆网上搜索。
201Java课件
1.Java程序设计语言
1.1.Java程序设计语言简介
Java是由Sun公司开发,是一种“面向对象程序设计语言”。
Java的几个重要特点:
1、Java是一种解释型语言;
解释型语言是相对编译型程序设计语言而言的。
C语言就是编译型;BASIC是解释型。
所谓的编译型是将源代码程序编译生成二进制可执行文件,例如C源程序编译形成*.exe文件。
解释型是这样工作的:
编写源代码后,需要先执行“解释系统”软件,而这类软件往往非常占用内存空间,然后由这个解释软件对于源代码程序,逐行翻译成机器代码,再执行。
(无论该源程序被执行多少次!
)
用VC所编写的hello.c源程序文件,通过编译得到hello.exe文件,而这个文件才是最终被执行的文件!
这个可执行文件的最大特点是:
它只能在IBMPC兼容机上执行,不能在苹果计算机上运行。
上述结论实质上说明一个问题:
C语言所形成的最终的可执行代码是不能在万维网上任意执行的!
而Java是解释型语言,这里涉及一个重要软件,JVM(Java虚拟机)。
只要安装了JVM的计算机或类计算机系统,都可以执行Java程序。
Java源代码文件的扩展名:
*.java,进过Java编译程序,编译成*.class的文件,而这个文件实质上是“中间代码”文件,JVM能够解释这个中间代码。
这意味着:
只要安装了JVM环境的计算机系统,都可以执行*.class文件。
在编辑Java源代码时,要特别注意扩展名的问题。
将编写好的Java源程序Hello.java编译成Hello.class:
hello.exe与Hello.class的执行情况:
2.Java虚拟机的安装
在安装Java运行环境时要注意:
1)需要安装JRE和JDK两套系统;
2)可以在网上直接下载
;
3)要注意别下载非window系统的JVM,同时要注意32位和64位的区别;
4)应该安装到C盘,按默认方式安装即可。
安装完成后,可见:
在Java目录下应存在如下两个目录:
其中Jre是JavaRuntimeEnvironment,Java运行环境;
JDK是JavaDevelopmentKit,Java开发工具。
Java运行环境设置:
Path环境变量的设置:
1)找到Java安装目录(Java系统目录);
2)得到这个目录的Jdk目录下的bin目录的绝对路径,如下图:
如:
C:
\ProgramFiles\Java\jdk1.7.0_67\bin
3)复制上述路径;
4)对“计算机”单击右键,选择“属性”,得到:
5)选择“高级”、“环境变量”:
6)编辑系统变量中的Path值:
7)将刚才复制的路径,添加到Path值的末尾,并在最后增加英文”;”分号;
特别注意:
在完成路径设置后,应重新打开一个命令行窗口!
如果不开一个新的命令行窗口,则,上述设置无效!
8)在命令行中执行如下命令:
3.Java分类
Java本身分成三类:
1)JavaSE标准Java环境,也是本课程的重点;
2)JavaEE主要用于网站开发;分成前端、后台两大部分技术;
3)JavaME主要用于手机等APP开发。
上一节所下载并安装及设置的环境,就是JavaSE环境。
4.关于目录和路径
目录俗称“文件夹”;
一台计算机(包括笔记本计算机)通常有一块(或多块)物理硬盘;在计算机销售商那里,通过运维人员已经将其分成若干个“逻辑分区”(对应逻辑硬盘,即,盘符),例如:
C盘、D盘等等。
每个逻辑盘都有且仅有一个“根目录”,用“\”表示:
C:
\或者d:
\表示C盘根目录和D盘根目录;
目录是用来存放、管理众多文件和其它目录的;
一个目录下(里面)可以存放多个文件和其它目录(任何一个目录可以拥有多个孩子目录,即,子目录);
任何一个目录,有且仅有一个“父目录”;
有上述可知,目录构成“树形结构”;
DOS命令:
tree可以形象的显示这个树形结构:
4.1.绝对路径:
从根目录出发,将中间所经过的所有目录用“\”加以分隔,直到目标目录,所形成的目录链;
下图中的DOS提示符所表示的就是绝对路径;
若打算将当前目录转换到“zho的练习”目录下,则:
1)应该使用cd命令;
2)路径有两种表达形式:
绝对路径和相对路径;
cde:
\zho\15秋各科目\各科目课件\J2EE\前端\课堂练习\zho的练习
上述使用的就是绝对路径。
4.2.相对路径
相对路径是从“当前目录出发”的!
之后有两种方向:
向根目录方向(出)和向子目录方向(入);
“出”时,每出一层目录,需要一个“..”,多出几层,就多给几个“..”,中间用”\”分隔;
“入”时,每“进”一层子目录,就将该目录名称写出,并与其它目录名称或”..”用“\”分隔。
示例:
cd..\..\..\..\Java\课堂例题
5.编译和执行Java程序的过程:
1)先用“记事本”完成Java源代码的编写,形成如Hello.java的文件;
2)启动DOS命令行,并将盘符和路径转换到Java源程序文件所在目录下;
3)编译Hello.java:
课后作业:
1)安装并配置Java环境;
2)在F盘建立Java目录,在Java目录下建立自己名字的目录,在自己的目录下建立Exer目录,在Exer目录下抄写Hello.java文件;
3)编译该文件并执行,将文件内容及执行结果的截屏图,在一起打印,并在10月11日上课前上交。
不上交者,停课!
MEC15秋Java-真实姓名
6.Java程序基本特点
6.1.Java的基础类型(基本数据类型)
1、byte1B
2、char
3、short
4、int4B补码
5、long8B补码
6、float
7、double
8、boolean逻辑型,取值:
true、false
6.2.关系运算的结果只能是boolean类型
if(x>3)=>if(true)或者if(false)
在C语言中正确的书写方式:
if(14>x>3)
但是,上述表达式在Java中,是非法的!
因为,逻辑型数据不能与非逻辑型数据进行比较!
true>3为非法!
错误例子:
publicclassDemoComp{
publicstaticvoidmain(String[]arg){
System.out.println(14>3);
if(14>3>1)
;
}
}
对于Java源程序,在编译时,应特别关注编译所给出的错误信息和警告信息!
6.3.Java在某种程度上符合C99原则
在C语言中,变量必须事先定义方可使用!
在Java中,可以随时定义,随时使用。
例如:
for(intk=0;k<5;k++){//变量k的生命域仅限于for()的{}之内!
System.out.print(k);
System.out.print("");
}//这里释放了{}的局部变量k
System.out.println();
k++;//变量k已经被释放!
Java是低错误容忍度的程序设计语言,因此,对于下面的问题,将按照错误处理!
intindex;//对于C语言,这顶多是个警告,但对于Java,这是一个不可容忍的错误!
System.out.println(index);
6.4.精彩的类型转换
输出九九乘法表:
publicstaticvoidshowNineNineTable(){
for(intj=1;j<10;j++){
for(inti=1;i<=j;i++){
//输出i*j=res
System.out.print(i+"*"+j+"="+(i*j)+"");
//当int与字符串相"+"时,Java会自动的将int转换为“字面值”相等的字符串。
}
System.out.println();
}
}
需要特别说明的是:
i+“*”+j+“=”…这一段代码的工作过程:
i是int类型变量,”*”是字符串常量,两者相加,先由Java将int类型数值转换成字符串类型;
Java中的字符串与字符串相加,实际上是:
两个字符串相连接。
7.关于eclipse集成环境
eclipse是开源软件,也是绿色软件(加载、解压即可用,无需安装)
从官方网站下载eclipse软件或者包括其汉化包(建议不要安装汉化包);在下载时,应注意版本:
windows与MAC和Linux是不一样的。
请特别注意32位与64位版本的识别。
下面讲述eclipse的简单使用:
关于Workspace,就是工作空间;其实,eclipse不仅仅是一个编程环境,它更是一个“工程管理”工具。
为了方便大型软件开发工程的管理,eclipse给出了很多有关工程管理的方法和概念,其中Workspace就是其一。
直白地说,Workspace就是一个目录!
在这个目录下,存放和管理所有的有关这个工程所涉及的所有文件和目录(包)!
eclipse能够进行程序的编辑、编译、运行、跟踪调试、工程管理等等功能,因此,称之为:
集成环境。
建立一个Java程序的过程:
1、建立一个工程;
2、选择建立Java工程:
3、填写工程名称、选择JDK环境
4、eclipse将建立该工程文件夹(目录);由eclipse在工程目录下创建若干个文件和目录,其中:
5、创建类文件:
6、确定类名称,并选择其它选项:
7、大功告成:
4Java的“包”概念
Java工程的根目录:
是名称为“工程名称的目录”下的src子目录;
包其实就是目录,是为了方便管理工程中众多Java源程序文件,为方便类、变量等命名,防止命名冲突而引入的概念。
包的建立:
包的根从“工程”目录下的src目录开始算起!
2015年10月11日,Java第二次作业:
1)下载及安装eclipse;
2)将课堂例题完成一遍;将在eclipse所编写的源代码及运行结果截屏;
3)建立自己的包,并尝试编写一个由*组成的等腰三角形的输出,且行数固定为7行,如下是5行的等腰三角形:
*
***
*****
*******
*********
第二次作业必须交,否则,停课!
交作业时间:
2015年10月15日
8.面向对象
面向对象思想的特点:
1、降低软件开发成本;减少开发量(代码量);公司的(代码)积累;
关键问题是:
代码复用!
2、使开发者能跟贴切所开发的事务本身,而不仅仅是处理一堆逻辑;
3、经过长时间的软件开发工作,计算机软件学家们发现,应该将数据及数据上的操作看成一体,而不应该分别处理,从而提出“对象”和“类”的概念;
4、……(更多其它特性)
从C语言结构体出发,理解对象和类的概念。
structABC{
introw;
intcol;
};
上述结构体是由“纯粹”的数据构成,即,只有数据成员。
“类”是由包括数据和操作在内的两部分成员构成,
数据成员称为:
成员(属性);
操作成员称为:
方法(动作、行为、对属性的更改、函数)。
“类”实际上是“数据类型”!
对象和类的关系:
具有相同属性和操作的实体,称为同类对象,简称对象。
下面看一个类的简单例子:
关于键盘中常用的几个编辑键:
Home、End、Delete、Tab
如图:
对于MyFirstClass类不正确的使用方法:
MyFirstClass.java文件内容如下:
publicclassMyFirstClass{
introw;
intcol;
}
DemoMyFirstClass.java文件内容如下:
publicclassDemoMyFirstClass{
publicstaticvoidmain(String[]args){
MyFirstClassone=null;
System.out.println("one:
"+one);
}
}
上述操作结果为null,而不是任何有意义的结果的原因可以从C语言中的结构体中得到提示:
structABC{
introw;
intcol;
};
structABCa;
printf(“%d\n”,a);//a是不能直接使用的!
因此,上述Java例题中的one也不能直接使用,必须“实例化”!
one=newMyFirstClass();
这里的new关键字的意思:
起到了C语言中的malloc()函数的作用。
new的作用是“申请”这种类型的数据空间,并将申请得到的空间的首地址赋值给one,这个one叫做对象(其本质是首地址,是指针!
)。
上述程序段的输出结果是:
one:
com.mec.lesson03.MyFirstClass@1f06dc3
这说明,所有的“对象”都是指针,都是首地址;null是空指针。
one.row=10;
System.out.println("one.row:
"+one.row);
上述操作的输出结果是:
one.row:
10
前面所讲述的仅仅是类概念的一个开始。
面向对象思想完全支持“软件工程“的各个方面的规则要求:
“模块独立性”是软件工程思想中最重要的思想之一;实现模块独立的方法是:
“封装”;
所谓的封装就是说,把类的数据和方法想方设法地“保护”起来,不让外界随意“触碰”!
所谓的先人创建了很多为后人使用的代码,其实相当于为后人创造了很多“工具”;这些工具都应该拥有一个共同的特点:
应该尽量封装工具内部信息,不允许工具使用者轻易触碰内部信息!
所以,Java提供了public、private修饰符
public:
公共的,对外使用者的接口;
private:
私有的,被封装的!
对于private修饰的成员或方法,在类外部不能直接访问!
public修饰的方法或成员可以在类外部加以访问。
对一个类进行实例化,其所有的基本类型成员的初始值为0或者flase;
基本类型有8种:
byte、char、short、int、long、float、double的初值都是0;
boolean的初值为false;
其它类类型成员初值为:
null.
2015年10月15日课后练习:
1、将课堂上的所有例题重新编写实现一遍;
2、要求预习:
构造方法、方法的重载,并用最简单的例子加以实现!
publicclasshello
{
privateintx;
privteinty;
publichello();//定义了一个抽象方法,这里不是C的函数申明。
}
8.1.关于构造方法
再次强调:
用Java的类,编写一个Java的类,本质上是为了给其他程序员使用这个类的所有成员和方法!
是为他人提供工具!
!
!
关于publicstaticvoidmain(String[]ar){…}
强烈不建议在其它类中调用某个类的main()方法,其实main()称为主函数。
任何一个类都可以拥有自己的main()函数。
构造方法主要是为了能在对象进行实例化时,实现对类成员的初始化操作。
创建构造方法的几个基本要求:
1)构造方法名称必须与类名称完全一致;
2)构造方法不能有返回值类型描述;
3)构造方法必须有public修饰;
4)构造方法只能/只被对象在实例化的时候(new的时候),调用一次,以后再也不能显式调用构造方法;
关于构造方法的补充:
1、一个类可以不定义它的构造方法,此时,Java会“自动”“产生”一个无参构造方法;
2、若对一个类显式定义一个非无参构造方法,此时在对该对象进行实例化时,不能显式调用无参构造方法。
8.2.关于方法的重载
1、方法重载的意义:
辛苦我一个,方便千万人;我不入地狱,谁入地狱!
2、方法重载的注意事项(基本要求):
2.1、重载的方法,其名称必须与被重载方法名称相同;
2.2、重载的方法其参数必须不一样:
2.2.1、个数不一样;
2.2.2、类型不一样。
2.3、重载的方法,返回值不能起到区分的作用。
3、重载了的方法,对于Java解释器是通过在方法名里掺入表示参数类型的信息,以区分不同的方法;
intfun(inta){…}
intfun(inta,intb){…}
那么,JVM有可能分别产生下面两个实际的方法:
intfun(inta){…}该方法可能被编译成:
int_I_fun();
intfun(inta,intb){…}该方法可能被编译成:
int_I_I_fun();
上述解决方案未必是JVM真实的处理方法,但是,原则上就是如此。
关于课堂提问的小结:
1、学习Java所使用的心情应该不同于C;C是尽量追究其内部原理,而Java秉承“拿来主义”;对于没有“意义”(实用价值的内容),往往忽略,在以后更加熟悉Java后,再自行查阅资料解决之。
2、只要是方法,就可以重载。
3、方法其实又叫做:
类的函数成员,与类的数据成员地位等同。
8.3.关于this()
this不同于this();前者代表的是对象,后者代表的是构造方法的调用。
如果在一个构造方法中,调用了其它重载的构造方法,则,this()必须是第一条语句!
8.4.上述问题的例题及进一步解释
类的普通方法,必须通过一个实例化了的对象进行引用(调用);
类中的方法,由于其本质是类的函数成员,属于类的成员的组成部分,和数据成员同档次;意味着,类中的方法,可以直接引用类的数据成员;
上述说法意味着,类的方法隐含着所有成员作为其可以引用的变量。
第一个类的例子:
Complex
packageplex;
/**
*classComplex复数类
*由实部doublereal和虚部doublevir组成
*复数类包括:
*复数的加法Add();
*复数的减法Sub();
*复数的乘法Mul();
*复数的除法Div();
*复数的显示show()等。
*@versionJDK1.7
*@author朱洪
*
*/
publicclassComplex{
privatedoublereal;
privatedoublevir;
publicComplex(doublereal,doublevir){
this.real=real;
this.vir=vir;
}
publicComplex(doublereal){
this(real,0.0);
}
publicComplex(){
this(0.0);
}
publicComplex(Complexone){
this(one.real,one.vir);
}
publicdoublegetReal(){
returnreal;
}
publicvoidsetReal(doublereal){
this.real=real;
}
publicdoublegetVir(){
returnvir;
}
publicvoidsetVir(doublevir){
this.vir=vir;
}
publicvoidshow(){
System.out.println("显示一个复数");
System.out.println("("+real+","+vir+")");
}
/**
*这个复数加法其实是c=this+another
*@paramanother
*@paramtype这个参数没有任何实际意义,可以为任意值,但不能没有。
*@return
*/
publicComplexAdd(Complexanother,inttype){
//上下两段代码的功能都是一样的。
//上面的代码段显得高大上而已。
returnnewComplex(real+another.real,
vir+another.vir);
/*
Complexres=newComplex();
res.setReal(this.real+another.real);
//res.vir=this.vir+another.vir;这种方式不符合面向对象精神
res.setVir(this.vir+another.vir);
returnres;
*/
}
/**
*这个复数加法其实是this+=b;
*@paramanother
*/
publicvoidAdd(Complexanother){
real+=another.real;
vir+=another.vir;
}
}
对这个类的使用:
packageplex;
publicclassDemoComplex{
publicstaticvoidshow(){
System.out.println("这是DemoComplex类的show()方法");
}
publicstaticvoidmain(String[]args){
Complexc1=newComplex();
Complexc2=newComplex(2.6);
Complexc3=newComplex(-4.6,-2.3);
Complexc4=newComplex(c2);
Complexc5;
System.out.println(c1);
c1.show();//类的普通方法必须通过实例化了的对象进行引用
//c5.show();c5没有实例化,不能引用普通方法
show();
c3.Add(c2);
c3.show();
c5=c2.Add(c4,0);
//使得c5指向了一个实例,这个实例是由Add(Complex,int)方法申请的。
c5.show();
}
}
8.5.关于final修饰符
fina
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 201 Java 课件
![提示](https://static.bdocx.com/images/bang_tan.gif)