Java基础教程.docx
- 文档编号:5608633
- 上传时间:2022-12-29
- 格式:DOCX
- 页数:28
- 大小:165.01KB
Java基础教程.docx
《Java基础教程.docx》由会员分享,可在线阅读,更多相关《Java基础教程.docx(28页珍藏版)》请在冰豆网上搜索。
Java基础教程
D1:
Java介绍
1.1Java起源、发展历程和版本划分:
1982年SUN公司成立,1991年出现,”Oak”——Java的早期称呼,用于嵌入家电;
1998年发布JDK1.2,并使用“Java2”;目前我们大部分用JDK1.6的版本;
Java根据应用方向,分为三个版本及对应的类库:
J2ME移动版
J2SE标准版
J2EE企业版
1.2Java语言特点
易于学习;
高效率的执行方式,即先编译后执行;
与平台无关,即跨平台,可运行于主流操作系统如UNIXLINUXWindows上;
分布式;
安全性;
丰富的API文档和类库;
多线程;
1.3、关于JDK和JVM?
要进行Java开发,必须得安装JDK。
JDK(JavaDevelopmentToolkit)是Java开发工具包的简称,包含运行Java程序的类库和命令;
JDK包含JRE,它包含比JRE更多的命令。
JRE只是运行时环境,所包含的类库比JDK小;一般来讲,开发人员都应采用对应的JDK,目前用JDK6版本;
JRE=JVM+RuntimeInterpreter;
Java运行环境的三项主要功能:
●加载代码:
由classloader完成;
●校验代码:
由bytecodeverifier完成;
●执行代码:
由runtimeinterpreter完成。
关于Java虚拟机(JVM)
●在一台计算机上由软件或硬件模拟的计算机。
Java虚拟机(JVM)读取并处理经编译过的平台无关的字节码class文件。
●Java编译器针对Java虚拟机产生class文件,因此是独立于平台的。
●Java解释器负责将Java虚拟机的代码在特定的平台上运行。
●Java语言是先编译源文件,后执行class文件!
1.4Java程序分类
●JavaApplication
以main()方法作为程序入口,由Java解释器加载执行。
●JavaApple
没有main()方法作为程序入口,由浏览器或appletviewer加载执行。
●Jsp,Servlet
Web上的应用程序,即主流J2EE服务程序
1.5JDK安装和配置
上级演示
1.6第一个Java程序
Java应用程序举例HelloWorld.java:
源文件:
HelloWorld.java
/*
*例名称:
"HelloWorld"程序
*/
publicclassHelloWorld{
publicstaticvoidmain(Stringargs[]){
System.out.println("HelloWorld!
");
}
}
先编译javac类名.java,(编译完会形成一个二进制的class文件,该文件与平台无关,即可以跨平台运行)后运行java类名
1.7小结
命名
如果.java文件包含一个public类,它必需按该类名命名。
Java语言中单词拼写严格区分大小写;
类个数
一个源文件中最多只能有一个public类。
其它类的个数不限。
1.8、Java学习路线;
初级部分:
Java核心技术(CoreJava);
中级部分:
JSPJavaBeanServlet等;
高级部分:
SSH框架EJB数据库(OracleSQLServerMySQL)各种商用应用服务器配置;
项目部分:
UML建模需求分析等;
D2:
Java基础
2.1标示符和关键字
标示符:
标示符:
Java程序中的类、属性、方法、对象、变量等元素都应有自己的名称,各元素的名称通称为标识符。
Java标识符定义规则:
由字母、数字、_和$组成;开头字符必须是字母、下画线或$。
关键字:
●Java中一些赋以特定的含义、并用做专门用途的单词称为关键字(keyword)
●所有Java关键字都是小写的,TURE、FALSE、NULL等都不是Java关键字;
●goto和const虽然从未使用,但也作被为Java关键字保留;
●true,false,null虽被用做专门用途,但也不是Java关键字,它们只是显式常量值;
2.2Java的基本数据类型
Java数据类型划分
数据类型
基本数据类型
引用数据类型
数值型
字符型(char)
布尔型(boolean)
整数类型(byte,short,int,long)
浮点类型(float,double)
类(class)
接口(interface)
数组
boolean布尔类型:
只有true和false两种值;
char字符型:
字符常量是用单引号括起来的单个字符
charc='A';
Java字符采用Unicode编码,每个字符占两个字节,因而可用十六进制编码形式表示
charc1='\u0061';//\u0061表示a(因为Java字符采用Unicode编码,每个字符占两个字节,故可用16进制编码表示)
Java语言中还允许使用转义字符'\'来将其后的字符转变为其它的含义
charc2='\n';
如\n代表换行,\r代表回车,\\代表反斜杠
整型:
类型
占用存储空间
表数围
byte
1字节
-128~127
short
2字节
-2的15次方~2的15次方-1
int
4字节
-2的31次方~2的31次方-1
long
8字节
-2的63次方~2的63次方-1
Java语言整数常量的三种表示形式:
十进制整数,如12,-314,0。
八进制整数,要求以0开头,如012
十六进制数,要求0x或0X开头,如0x12
Java语言的整型常量默认为int型,如:
inti=3;
声明long型常量可以后加‘l’或‘L’,如:
longl=3L;
浮点型:
Java浮点类型常量有两种表示形式
十进制数形式,必须含有小数点,例如:
3.14314.0.314
科学记数法形式,如
3.14e23.14E2314E2
Java浮点型常量默认为double型,如要声明一个常量为float型,则需在数字后面加f或F,如:
doubled=3.14;
floatf=3.14f;
float占4个字节,double占8个字节
例代码VariableTest.java:
Java中变量的定义
classVariableTest{
publicstaticvoidmain(Stringargs[]){
booleanb=true;//声明boolean型变量并赋值
intx,y=8;//声明int型变量
floatf=4.5f;//声明float型变量并赋值
doubled=3.1415;//声明double型变量并赋值
charc;//声明char型变量
c='\u0031';//为char型变量赋值
x=010;//为int型变量赋值
System.out.println("b="+b);
System.out.println("x="+x);
System.out.println("y="+y);
System.out.println("f="+f);
System.out.println("d="+d);
System.out.println("c="+c);
}
}
2.3基本数据类型转换
除了布尔型数据外,字符型整型的数据和浮点类型的数据可以混合在一起进行运算,不同类型数据运算的结果是何种类型的呢?
数据可由一种类型转换成另一种类型吗?
在这一讲里这些疑问都将得到解决。
1整型和浮点类型都可看作是数值型数据,当不同的数值型数据运算时,有一个在的规则:
先统一为同一类型,再进行运算。
结果就为运算前统一的类型。
这里的“统一”就是自动类型转换。
自动类型数据转换总是从低级到高级进行,byte、char、short的级别最低,double的级别最高;
例:
定义如下几个变量:
intx,bytey,longz,floata,doubleb,charc;
分析:
x+y的结果应为int型,x+y+z的结果为long型,a+b的结果为double型,a-x-y的结果为float型,x+c的结果为int型。
2欲让高级数据转换成低级数据,需用到强制类型转换,其形式如 int x = (int)3.5;
classTypeConvertTest{
publicstaticvoidmain(Stringargs[]){
charc1='a';
System.out.println("c1="+c1+1);//输出c1=a1
System.out.println(c1+1);//输出a的ASC码值97+1=98
}
}
2.4运算符
算术运算符:
+,―,*,/,%,++,――
关系运算符:
>,<,>=,<=,==,!
=
布尔逻辑运算符:
!
,&,|,^,&&,||
赋值运算符:
=扩展赋值运算符:
+=,―=,*=,/=
字符串连接运算符:
+
逻辑运算符
逻辑运算符功能
!
--逻辑非&--逻辑与|--逻辑或
^--逻辑异或&&--短路与||--短路或
逻辑运算符功能说明:
a
b
!
a
a&b
a|b
a^b
a&&b
a||b
true
true
false
true
true
false
true
true
true
false
false
false
true
true
false
true
false
true
true
false
true
true
false
true
false
false
true
false
false
false
false
false
短路逻辑运算符应用
&&--第一个操作数为假则不判断第二个操作数
||--第一个操作数为真则不判断第二个操作数
字符串连接符:
"+"运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接
inti=300+5;
Strings="hello,"+i+"号";
System.out.println(s);//输出:
hello,305号
条件运算符:
三目条件运算符,语法格式:
x?
y:
z
其中x为boolean类型表达式,先计算x的值,若为true,则整个三目运算的结果为表达式y的值,否则整个运算结果为表达式z的值。
举例:
intscore=50;
intresult=x<60?
60:
x;
Stringtype=score<60?
"不及格":
"及格";
2.5分支结构之if
if(条件表达式){
}elseif(条件表达式){
}elseif(条件表达式){
}else{
}
练习:
写一方法,在调用时通过参数输入年号,判断是否为闰年。
算法:
根据闰年的判断条件
当年号能被4整除但不能被100整除时,为闰年。
当年号能被400整除时,为闰年。
2.6分支结构之switchcase
switch(变量){
case常量1:
表达式;
break;
case常量2:
表达式;
break;
default:
表达式;
注意:
case后面的常量必须是整数或字符型;
通常在每一个case中都应使用break语句提供一个出口,使流程跳出开关语句。
switch中的表达式结果必须是一个整型值,该值用来与后续的值1、值2、……、值n比较,如果值是相同的,则执行case后的语句组。
之后不再判断,连续地执行下去,直到遇到break语句或switch运行完毕
练习:
输入一百分制成绩,输出对应的等级。
90~100分的等级为A?
0~89分的等级为B?
0~79分的等级为C?
0~69分的等级为D?
60分以下的等级为E
2.7循环结构
●循环语句功能
在循环条件满足的情况下,反复执行特定代码
●循环语句的四个组成部分
初始化部分(init_statement)
循环条件部分(test_exp)
循环体部分(body_statement)
迭代部分(alter_statement)
●循环语句分类
for循环
while循环
do/while循环
2.8循环结构之for循环
publicclassHelloWorld
{
publicstaticvoidmain(String[]args)
{
inti,sum=0;
for(i=1;i<=100;i++){
sum+=i;
}
System.out.println(sum);
}
}
2.9循环结构之while循环
publicclassHelloWorld
{
publicstaticvoidmain(String[]args)
{
inti=1,sum=0;
while(i<=100)
{
sum+=i;
i++;
}
System.out.println("sum="+sum);
}
}
2.10循环结构之do{}while()
先执行循环体,再判断条件
publicclassHelloWorld
{
publicstaticvoidmain(String[]args)
{
inti=1,sum=0;
do
{
sum+=i;
i++;
}
while(i<=100);//分号不能少
System.out.println(sum);
}
}
2.11循环控制:
break和continue的区别
break是立即终止循环,即便后面还有循环没有被执行;
continue只是中断满足条件的本次循环;
嵌套循环,代码测试
2.12return语句
return语句:
用于退出一个方法或程序体。
return之后不能有其他语句.
用法举例:
publicvoidget(Stringname){
if(name==null)
return;
}
D3:
Java面向对象(上)
3.1OOP(ObjectOritentedProgram)面向对象概述
面向对象的编程思想力图使对计算机语言中对事物的的描述与现实世界中该事物的本来面目尽可能的一致。
类(class)和对象(object)是面向对象方法的核心概念。
类是对一类事物描述,是抽象的、概念上的定义;对象是实际存在的该类事物的
每个个体,因而也称实例(instance)。
3.2OOP类和对象
万物皆对象;
对象一般都有两个特征:
状态和行为;
在软件开发中,对象定义为相关数据和方法的集合;对象是现实世界对象的抽象模型;
类是抽象的,对象是具体的;
Java中,每段源代码就是一个类文件,类包括成员变量和成员方法两部分.对象是类的实例;
3.3声明类
类只包括两个部分,成员属性和成员方法;
例如我们要创建人类,可以归纳出人类共有的特性,把它定义为属性,比如年龄等;
比如,以创建人类为目标,我们来看如何定义Java中的类Person.java:
publicclassPerson{
intage;
intgetAge(){
returnage;
}
voidsetAge(inti){
age=i;
}
}
成员变量的定义格式为:
[修饰符]数据类型变量名[=默认值];
成员方法的定义格式为:
[修饰符]返回类型方法名(形参列表){
方法体
}
3.4对象的创建
●使用new类名的形式创建一个新的对象;标准格式如下类名对象名=new类名();
●使用“对象名。
对象成员”的方式访问成员变量或者方法;
●创建对象也可写成两行代码的形式:
Personp1;//声明一个对象p1
//p1=newPerson();//此时创建对象,在存中分配地址给p1
EX时间:
练习如何创建人类,加入其它成员变量和方法。
巩固类和对象的概念:
创建一个生日类BirthDate,包括年月日属性及各属性的setXXX和getXXX方法;创建一个方法,在控制台输出年月日;
3.5成员变量和局部变量
成员变量:
●类的部、方法的外部定义的变量;
●作用域:
依附于对象存在,具有与对象相同的生存期和作用域;
●创建后由系统自动对其进行初始化;
局部变量:
●方法或语句块中定义的变量;
●作用域:
所在的方法;在程序调用方法时才被创建,随方法的退出而销毁;
●使用前必须初始化值;
3.6构造方法(ConstructorMethod)
构造方法:
提供创建对象的不同方式;
●构造方法的名称须与类名一致;
●没有返回类型,也不能定义为void;
●主要作用是完成对象的初始化工作,为成员变量赋值;
●一个类中可以定义多个构造方法,如果没有显示定义构造方法,系统默认提供一个无参的构造方法;
●构造方法的可以重载overload,满足重载的条件:
方法名相同,参数列表要不同(以参数的个数、顺序或类型划分);
3.7static关键字
●在Java类中声明变量、方法和部类时,可使用关键字static做为修饰符。
●static标记的变量或方法由整个类(所有实例)共享,可不必创建该类对象而直接用类名加‘.’调用。
●static成员也称类成员或静态成员,如:
类属性、类方法、静态方法等。
●静态方法直接访问静态成员,静态方法需创建对象才能访问非静态成员;
●非静态方法可以直接访问静态成员;
3.8String和StringBuffer
String为不可变字符串,而StringBuffer为缓冲字符串类,又称为可变字符串,它的效率比String更高;
StringBuffer只能这样创建:
StringBuffersb=newStringBuffer(newString(“hello”));
错误的代码:
StringBuffersb=“hi”;
3.9数组
数组属于引用类型,数组中的元素可以是任何数据类型,包括基本类型和引用类型;
一维数组的声明:
inta[];int[]a;int[]a;MyDatedate[];
声明数组的时候不能指定其长度(数组元素的个数)例如:
inta[5]是非法的
数组初始化三种方式:
●静态初始化:
定义数组即赋值
inta[]={1,2,3};
●动态初始化:
数组定义和赋值分开进行
inta[]=newint[3];a[0]=1;a[1]=2;a[2]=3;
●默认初始化:
数组的元素相当于类的成员变量,因此数组一旦分配空间,其中的每个元素也按照成员变量的方式被隐式初始化;
定义并用new运算符给数组分配空间后才能引用数组元素;
每个数组都有一个length属性指明它的长度;
3.10Java中的参数传递
值传递:
基本数据类型和String作为参数传递时,是传递值的拷贝,无论你怎么改变这个拷贝,原值是不会变的!
参考MethodParamTest.java
/*
*在Java中基本数据类型和字符串作为参数传递时,是把值拷贝了一份传给了参数,称为值传递
*/
publicclassMethodParamTest{
publicstaticvoidmain(String[]args){
inti=9;
Strings="中国";
modifyInt(i);
modifyString(s);
System.out.println(i);//9
System.out.println(s);//中国
}
staticvoidmodifyInt(inti){
i=90;
}
staticvoidmodifyString(Stringstr){
str="美国";
}
}
引用传递:
引用类型作为参数传递时,是传递对象的引用(即该对象在存中的地址);
参考MethodParamTest1.java和MethodParamTest2.java
3.11Java三大特性之—封装
Java面向对象三大特性:
封装;
继承;
多态;
何为封装?
为何需要封装?
封装:
即将客户端不应看到的信息包裹起来。
具体做法:
将数据声明为私有的private,再提供一个或多个public修饰的方法对其进行操作;
●隐藏一个类的实现细节;
●使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作;
●便于修改,增强代码的可维护性;
EX时间:
上机理解为何需要封装及它的好处;理解private关键字的作用。
D4:
Java面向对象(下)
4.1Java三大特性之二—继承
何谓继承:
利用extends关键字使类具有父子层次关系,子类默认拥有父类所有属性和方法;
当子类拥有和父类相同的变量,这时父类的变量将被隐藏;
继承需要注意的地方:
●Java只支持单一继承,也就是只有一个父类,利用extends关键字继承;
●父类的私有方法不能被子类覆盖;
●父类的静态方法不能被子类覆盖为非静态方法;
●父类的非静态方法不能被子类覆盖为静态方法;
●子类中定义的成员变量和父类中定义的成员变量相同时,则父类中的成员变量被隐藏;见ExtendsTest1.java
●当子类拥有和父类相同的方法定义(即方法名参数列表完全相同时,不能以返回类型不同为依据,仅方法体不一样),我们称之为方法重写(OverRide);
隐藏和覆盖:
父类的静态变量和实例变量能被子类同名变量隐藏;
父类的静态方法被被子类的静态方法隐藏;
父类的非静态方法被子类的非静态方法覆盖;
见ExtendsTest2.java
继承关系中构造方法注意事项:
*1子类不继承父类的构造方法
*2子类的构造方法必须调用父类的构造方法
*2.1如果子类的构造方法中没有
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 基础教程
![提示](https://static.bdocx.com/images/bang_tan.gif)