Java课件Word文档下载推荐.docx
- 文档编号:812106
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:85
- 大小:102.47KB
Java课件Word文档下载推荐.docx
《Java课件Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《Java课件Word文档下载推荐.docx(85页珍藏版)》请在冰点文库上搜索。
}
1、我们要求类名必须和文件名一致,只不过文件名多了个.java的后坠。
2、main函数是我们整个程序的执行入口所以必须是静态公开的。
编译:
javacMyFirstJava.java
编译后我们可以看到目录下多了一个MyFirstJava.class文件。
这就是Java编译原文件后生成的字节码文件。
执行:
javaMyFirstJava
将字节码文件交给JVM去解释执行。
思考:
1、为什么编译后不生成可执行文件(注:
所有的可执行文件都是机器代码)
2、Java的跨平台特性(SUM口号
:
一次编译到处运行);
六、包结构
为了根据需要将不同的原文件放在不同的目录下我们引入了包。
包我们可以看作就是一个存放java原文件的目录。
在源码的基础上声明一个包名:
packagesd0604
加包后我们用“javac–d.MyFirstJava.java”编译后生成的字节码文件就会放在我们指定的包(目录)结构下.
如果我们想指定多级目录那么在目录名之间我们可以用.作为分隔符。
例如:
packagesd0604.najing.xuanwu
七、CoreJava中的注释
1、//单行注释
2、/**/多行注释
3、/***/文档注释
文档注释可以由javadoc命令单独提取出来生成注释文档。
例:
javadocMyFirstJava.java
我们在生成的注释文件中可以打开index入口页面来查看我们刚刚生成的注释文档。
文档注释一般写在类、方法、属性定义之前
前两种注释和C++相同。
注意:
1、我们可以用javadoc–help命令来查看该命令的其他用法。
2、同样我们可以用“javadoc–d路径名*.java”来指定生成文档注释的位置。
3、可以在文档注释中加入HTML标签来控制生成注释文档的显示格式。
八、jar命令的用法
我们可以用“jar–cvfmn”命令来将文件打包成jar压缩包。
m:
要生成jar包的名字
n:
要压缩文件的文件名(可以是多个文件或一个目录)
生成的jar文件实际上就是一个普通的zip压缩文件
顺便说一下解包的命令:
unzip*.jar
九、计算机运行一个java程序的过程
1、启动JVM
2、通过JAVA_HOME\jre\lib目录下找到对应的类
3、如果的2不找不到则在环境变量中配置的CLASSPATH配置的路径中找类,这就是为什么我们要在CLASSPATH中配上当前路径的原因。
十、import声明的作用
当我们要用一个JDK定义好的类时我们需要在Java程序中配上该类对应的jar包。
(类似于C++中了#include预处理指令)
例:
importjava.util.*;
这里大家注意一点:
由于java.lang.*包中的类是我们编程中经常要使用的,所以这个包下的类我们不用特别用import在程序中声明。
但当我们要用到其他包中的类似我们就必须用import声明了。
awt:
抽象窗口工具.
如果大家想了解什么包做什么用的话大家课以看看我给大家的API
文档,上面有对所有这些包用法的解释。
十一、java中的垃圾回收器
因为有了垃圾回收器,我们可以不用顾虑对象创建后占用系统资源的问题。
我们只用负责对象的创建,而对象销毁和资源释放的问题就可以留给垃圾回收器做了。
这里我们需要注意的是垃圾回收器一般只会在内存空间不够的情况下进行资源回收。
十二、java中标识符的命名规则
1、只能以字母、下划线或”$”开头,严格区分大小写,且长度不限。
2、类名的每个单词的首字母大写
3、方法名属性名的第一个单词小写,以后的每个单词首字母大写
4、所有的包结构名字都是小写
5、常量名所有字母大写
第一点是必须遵守的,2~5点不遵守也不会出错,但建议大家严格遵守以上命名规范。
十三、java中的关键字和保留字
查书
十四、java中的八中基本数据类型
1.boolean:
占1个字节
2.byte:
3.char:
占2个字节(可以用来保存汉字)
4.short:
占2个字节
5.int:
占4个字节
6.long:
占8个字节
7.float:
占4个字节
8.double:
十五、正负数在内存空间中的存放
正数在内存空间中存发的是源码。
负数在内存空间中存发的是正数源码对应的补码。
补码:
在源码的基础上取反后末位加1。
十六、基本数据类型之间的转换
1、正向过程:
从低字节到高字节可以自动转换。
byte->
short->
int->
long->
float->
double
boolean不能转。
2、逆向过程:
从高字节到低字节用强制类型转换
inta=(int)3.12
逆向转换将丢失精度。
十七、java中的转义字符
1.表示格式控制的转义字符(如:
\n\t)与C++相同。
2.Java中用“\u四位十六进制的数字”表是将字符转换成对应的unicode编码。
十八、表达式和流程控制
instanceof():
用户判断某一个对象是否属于某一个类的实例。
运算符:
单目运算符、双目运算符、位运算符
1、>
>
是corejava中的位移运算符,表示右移,左边空出的位以0添充。
右移
2、将一个数右移n位相当于将该数除以2的n次方;
3、将一个数左移n位相当于将该数乘以2的n次方;
4、&
&
、||是短路运算符(左边条件不符合时不会执行右边的判断)
Day02
一、流程控制语句
1、两路分支选择
Ifelse配对原则:
else一定会和离他最近的且没有与别的else配对的if配对;
2、多路分支选择
switch(byte,short,int,char){
casexxx:
break;
default:
3、循环结构
3.1for(初始化;
条件;
调整){语句块}该结构在知道循环次数的时候使用
初始化语句只执行一次;
判断条件执行语句块执行调整判断条件
for(;
;
)表示为无限循环
for循环中两个分号是不能省略的。
3.2While(条件){语句块}改结构在不知道循环次数的时候使用
先判断后执行,调整语句在代码块中体现。
while
(1)表示为无限循化。
3.3Do{语句块}while(条件);
同3.2;
唯一的区别是该循环语句代码块至少要被执行一次;
先执行后判断
continue:
提前终止本次循环直接进入下一次循环;
3.4java中的循环标号
labe:
for(inti=0;
i<
10;
i++){
for(inta=0;
a<
a++){
breaklabe;
}
}
breaklabe:
直接跳出同标号循环层
4、条件运算符的自动类型提升问题。
二、java中的数组
1.数组的定义
分为两部分:
数组引用(声明)int[]a;
inta[];
数组空间(初始化)a=newint[5];
2.数组在分配存储空间后,系统会自动为数组的每个元素初始化为0;
3.定义数组,分配存储空间和初始化数组可以放在一个语句中,如:
int[]a={10,20,30}
对比:
int[]a=newint[3];
a[0]=10;
a[1]=20;
a[2]=30;
4.在java中一个数组就是一个对象,只要是对象就是在堆空间存放。
在java中只有堆空间,栈空间,代码空间。
5.数组长度可以用数组名.length来取得.
二维数组用.length取得的长度是其一维数组的长度。
6.两个数组之间的拷贝:
System.arraycopy(a,0,b,0,length)
表示将a数组从0号位置开始的length个元素依次拷贝到b数组中(从0号位置开始)。
7.在java中二维数组本质上就是一维数组的数组。
所以java中的二维数组可以是不对称的。
Java中只有一维数组的内存地址空间是连续的而二维数组的空间可以不连续。
(1)、二维数组声明和初始化
int[][]a;
//声明一个二维数组
a=newint[3][];
//该二维数组包含三个一维数组对象
而每个一维数组对象长度可以不同所以第二个【】中的长度可以不填
a[0]=newint[5];
//第一列数组长度为5
a[1]=newint[3];
//第二列数组长度为3
a[0][0]=1;
//将第一个数组的第一个元素初始化1;
8.介绍一个关于数组的小技巧
在我们使用数组时,我们可以用一个index辅助变量来配合数组使用,表示其有效数据的个数,同时用来表示数组下一个可插入位置的下标。
三、java中的对象
声明:
Students;
这时我们只是说明s是一个能够指向Student类型的引用(相当与C++中的针),并没有创建一个对象。
所以我们不能对s做任何操作。
初始化:
s=newStudent();
向系统申请一块存储空间(地址空间),该地址空间保存的是一个Student类型的数据。
而s中保存的就是该地址空间的首地址。
这里大家可能还是不太好理解,那么我们给变量来下一个定义
什么叫变量:
变量就是内存空间中一块具有固定长度的,用来保存数据的地址空间。
(s也是一个变量)
一个对象可以有多个引用指向。
Student[]s=newStudent[3]只是相当于声明一个长度为3的Student类型的数组。
四、实例变量和局部变量
实例变量:
1、在一个类中,任何方法之外定义的变量;
2、从面向对象的思想来说我们又把实例变量成为一个类的属性。
3、实例变量在没有符初值时系统会自动帮我们做初始化:
整型数据初始化为0,布尔型数据初始化为false,对象类型初始化为null。
局部变量:
1、在方法内定义的变量叫局部变量。
2、局部变量使用前必须初始化,系统不会自动给局部变量做初始化。
3、局部变量的生命范围在他所在的代码块,在重合的作用域范围内不允许两个局部变量命名冲突。
局部变量与实例变量允许同名,在局部变量的作用域内,其优先级高于实例变量。
我们可以用this.实例变量名以区分局部变量。
Day03
一、java中的自动类型提升问题。
publicclasstest1{
publicstaticvoidmain(String[]args){
bytea=1;
byteb=2;
bytec=(byte)(a+b);
System.out.println(c);
}
二进制是无法精确的表示0.1的。
进行高精度运算可以用java.math包中BigDecimal类中的方法。
自动类型提升又称作隐式类型转换。
二、在java中对面向对象(OO)的要求
1.对象是客观存在的,万物皆对象。
.(注:
看不见的对象并不表示该对象不存在,比如说事件);
2.简单性:
采用面向对象方法可以使系统各部分各司其职各尽所能。
3.复用性:
对象的功能越简单其可重用性越高。
4.弱耦合性:
各司其职各尽所能。
5.高内聚性:
一个对象独立完成一个功能的能力
6.类是一类事务的共性,是人类主观认识的一种抽象,是对象的模板。
三、面向过程与面向对象的对比
面向过程:
先有算法,后有数据结构。
先考虑怎么做。
面向对象:
先有数据结构,后有算法。
先考虑用什么做。
四、java中方法的声明(分为五个部分)
1.方法的修饰符(可以有多个,且顺序无关)
2.方法的返回值类型
3.方法名
4.方法的参数表
5.方法允许抛出的列外(异常)
编译器只能做语法上的检查,而不能进行逻辑上的检查。
Java中不允许有废话。
五、java中的重载(Overload)
1、相同方法名,不同参数表。
2、方法重载时,对于参数的匹配有个向上就近原则。
(这样可以节省栈空间资源);
3、为什么面向对象中要有方法重载?
方法的重载使同一类方法由于参数造成的差异对于对象的使用者是透明的。
对象的使用者只负责把参数交给对象,而具体怎么实现由对象内部决定。
4、Java中的运算符重载
java中唯一重载的运算符是String类型的“+”号,任何类型+String类型结果都为Stirng类型。
5、注意点:
重载不仅出现在同一个类中,也可以出现在父子类中。
六.Java中创建对象的步骤
1、分配空间
2、初始化属性
3、调用构造方法
构造方法不能手工调用,在对象的生命周期内构造方法只调用一次。
七、java中的构造方法
1、特点:
没有返回值,方法名与类名相同。
2、在不写构造方法时,系统会自动生成一个无参的构造方法。
3、请养成在每个类中自己加上无参构造方法的习惯。
八、对象和对象引用的区别
对象好比一台电视机,对象引用好比电视机遥控。
对象引用中存的是对象的地址。
多个对象引用中存放的是同一个地址,表示该对象被多个对象引用所引用。
九、this表示当前对象
谁调用该方法,在这一时刻谁就是该方法的当前对象
用this来区分实例变量和局部变量。
this()表示调用本类的其他构造方法,且只能放在一个方法中的第一行第一句。
一十、参数传递
在java方法传参过程中简单类型是按值传递,对象类型是按引用传递。
按值传递传递的是数据的副本。
按引用传递传递的是保存该数据的地址
十一、封装
1.定义:
封装指的是一个对象的内部状态对外界是透明的,对象与对象之间只关心对方有什么方法,而不关心属性。
封装使实现的改变对架构的影响最小化。
2.原则:
装使对象的属性尽可能的私有,根据需要配上相应的get/set方法,对象的方法尽可能的公开。
该隐藏的一定要隐藏,该公开的一定要公开。
3.方法公开的使声明而不是实现。
使方法实现的改变对架构的影响最小化。
4.访问控制从严到宽
private:
仅本类成员可见
default:
本类+同包类可见(默认)
protected:
本类+同包+不同包的子类
public:
公开
这里的同包指的是跟父类所在的包相同。
5、完全封装:
属性全部私有,并提供相应的get/set方法。
Day04
一、继承
1.定义:
基于一个已存在的类构造一个新类。
继承已存在的类就是复用这些类的方法合属性,在此基础上,还可以在新类中添加一些新的方法和属性。
2.父类到子类是从一般到特殊的关系。
3.继承用关键字extends
dogextendsAnimal:
表示狗类继承了动物类
4.Java中只允许单继承(java简单性的体现)
父子类之间的关系是树状关系。
(而多继承是网状关系)
5.父类中的私有属性可以继承但是不能访问。
也可以说父类中的私有属性子类不能继承。
6.原则:
父类放共性,子类放个性。
7.构造方法不能被子类继承。
二、带继承关系的对象创建的过程
1.递归的构造父类对象
2.分配空间
3.初始化属性
4.调用本类的构造方法
三、super关键字
1.Super()表示调用父类的构造方法
2.Super()也和this一样必须放在方法的第一行第一句。
3.Super.表示调用父类的方法或属性。
super.m();
4.Super可以屏蔽子类属性和父类属性重名时带来的冲突
5.在子类的构造函数中如果没有指定调用父类的哪一个构造方法,那么就会调用父类的无参构造方法,即super()。
四、白箱复用和黑箱复用
1.白箱复用:
又叫继承复用,子类会继承父类所有的东西,
从某种程度上说白箱复用破坏了封装。
是一种isa的关系。
classLiucy{
publicvoidteachCpp(){
System.out.println("
TeachCpp"
);
}
publicvoidchimogu(){
classHuxyextendsLiucy{
2、黑箱复用:
又叫组合复用,是一种hasa的关系。
classHuxy{
privateLiucyliucy=newLiucy();
publicvoidteachCpp(){
liucy.teachCpp();
原则:
组合复用取代继承复用原则。
使我们可以有机会选择该复用的功能。
五、多态
所谓多态是指一个对象可以有多种形态,换句话说多态使我们可以把一个子类对象看作是一个父类对象类型(例:
fatherA=newchild())。
多态指的是编译时的类型变化,而运行时类型不变。
2.多态分为两种:
编译时多态和运行时多态。
编译时类型:
定义时类型(主观概念)把它看作什么。
运行时类型:
真实类型(客观概念)实际上他是什么。
重载又叫编译时多态,覆盖又称运行时多态。
在方法重载的情况下,参数类型决定于编译时类型。
3.多态的作用:
在我们需要一类对象的共性时,我们可以很容易的抽取。
并且可以屏蔽不同子类对象之间我们所不关心的差异。
多态使我们有机会写出更通用的代码,以适应需求的不断变化
4.多态常见的用法:
(1)、多态用在方法的参数上
(2)、多态用在方法的返回类型上
5.运行时多态的三原则:
(1)、对象不变(改变的是主观认识)
(2)、对于对象的调用只能限于编译时类型的方法。
(3)、在程序的运行时,动态类型判定。
运行时调用运行时类型,即他调用覆盖后的方法。
六、java中的覆盖(Override)
1、参数表、方法名必须完全相同,访问修饰符要求子类宽于父类。
返回值类型在JDK5.0以前要求完全相同,
5.0以后可以父类返回一个对象a,子类返回一个该对象a的子类也是覆盖。
子类方法覆盖父类方法时要求子类方法的访问修饰符宽于或等于父类的访问修饰符。
2、为什么面向对象中要有方法覆盖?
覆盖允许子类用自己特色的方法去替换调父类已有的方法。
3、父类中的私有方法与子类中任何方法不够成覆盖关系,
也就是说只有父类被子类继承过来的方法,才有可能与子类自己的方法构成覆盖关系。
4、少覆盖原则:
如果子类覆盖了父类过多的方法,那么我们要重
新思考一下这两个类之间到底是不是继承关系。
注:
子类的属性和父类的属性同名时叫遮盖(区覆盖)
属性的遮盖是没有多态的。
七、关系运算符:
instanceof
1.booleanc=ainstanceofb;
a:
对象变量;
b:
类名;
c:
逻辑型返回值。
如果可以把a对象看作是b类型,那么返回真。
否则返回假。
2.instanceof一般用于在强制类型转换之前判断对象变量是否可以强制转换为指定类型。
String[]args命令行参数在用java命令运行程序时输入:
如:
javaTestOverLoad参数1参数2参数3。
。
Day05
一、static修饰符
1.可以修饰属性、方法、初始代码块,成为类变量、静态方法、静态初始化代码块。
初始代码块是在类中而不再任何方法之内的代码块。
2.类变量、静态方法、静态初始化代码块与具体的某个对象无关,只与类相关,是全类公有的。
在类加载时初始化。
3.类加载:
虚拟机通过CLASSPATH从磁盘上找到字节码文件,并将字节码文件中的内容通过I/O流读到虚拟机并保存的过程。
在虚拟机的生命周期中一个类只被加载一次。
Java命令的作用是启动JVM。
4.Static定义的时一块为整个类共有的一块存储区域,其发生变化时访问到的数据都是经过变化的。
5.为什么主方法必须是静态的?
主方法是整个应用程序的入口,JVM只能通过类名去调用主方法。
6.类变量和静态方法可以在没有对象的情况下用:
类名.方法名(或属性名)来访问。
7.静态方法不可被覆盖(允许在子类中定义同名的静态方法,但是没有多态);
父类如果是静态方法,子类不能覆盖为非静态方法。
父类如果是非静态方法,子类不能覆盖为静态方法。
争论:
静态方法可以覆盖但是没有多态。
思考:
没有多态的覆盖叫覆盖吗?
在静态方法中不允许调用本类中的非静态成员。
8.静态初始化代码块只在
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 课件
![提示](https://static.bingdoc.com/images/bang_tan.gif)