版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1.1Java语言的诞生
计算机语言是计算机可以识别的语言,用于描述解决问题的方法,供计算机理解和执行。
IE计算机语言的发展
・机器语言:由计算机硬件系统可以识别的二进制指令组成的语言。
♦执行效率非常高,但与人的自然语言间鸿沟巨大,难懂、难记,软件开发难度大。
・汇编语言:将机器指令映射为一些可以被人读懂的助记符。
♦与人的自然语言间的鸿沟略有缩小,但仍然不太好懂,要考虑大量机器细节,制约软件开
发。
・高级语言:屏蔽了机器的细节,提高了语言的抽象层次,程序中可以采用具有一定含义的数
据命名和容易理解的执行语句。
♦与人的自然语言较为接近,便于联系到程序所描述的具体事物,便于理解和记忆,大大丰
富了软件开发。
♦高级语言有严格的语法规则
♦常见的高级语言:Java;C/C++;Basic;Pascal;Fortran
♦“高级”是相对的
回Java语言的起源及发展
・1991年由JamesGosling负责开发的一个分布式代码系统(Oak),最初是为家用消费电子
产品(电冰箱、电视机等)进行编程控制。
・1993年Sun公司将目标市场转向Interneto
•1994年将Oak语言更名为Java.
•1995年Java做的浏览器Hotjava被正式发布。
・1996年初,javal.O正式发布。
・从Javal.2开始叫Java2,目前是1.5版本(又叫Java5)。
Java目前的主要应用
・面向对象的应用开发
・面向网络的软件开发,特别是客户端和服务器资源间通信的中间件开发
・动态画面的设计,包括图形图像的调用
・嵌入式系统开发
・企业解决方案
•Java不是万能的
1.2Java的特点
平台无关性
•将源程序编译成一种结构中立的中间文件格式,只要有Java运行系统的机器都能执行这种
中间代码。
•高级语言程序的执行
♦使用高级语言编写的程序文件称为源文件,这些源文件是不能被机器直接执行的。
♦翻译程序把源文件翻译成机器指令,然后计算机才能理解并执行程序。
♦两种翻译方式
★编译方式:翻译完全部源程序再执行
★解释方式:翻译一句,执行一句
•Java语言有其特殊的执行方式
♦半编译,半解释。
♦Java语言不针对具体的处理器进行编译。
♦Java编译器把源文件编译成中间代码文件,称为字节码文件。
♦字节码可以被任何提供Java运行环境的平计算机系统解释执行。
★Java运行环境会根据不同的计算机系统,把字节码解释成相应的处理器的机器指令。
区面向对象
•完全是面向对象的,其面向对象能力本质上与C++一样。
・面向对象编程是一种先进的编程思想,更加容易解决复杂的问题。
回多线程
•内置多线程功能,使得在一个程序里可同时执行多个小任务。
•带来的好处是更好的交互性和实时控制性。
叵1安全性
•Java代码的执行会比其他语言代码更安全。
•Java语言提供的安全,比如Applet。
I一I动态性
•允许程序动态地装入运行过程中所需要的类,这是C++等语言进行面向对象程序设计所无法实
现的。
1.3Java的工作机制
ava的工作机制
丽寸
.java
.class|JITfim
平台无关硬件
的保
图1.1Java的工作机制
Java虚拟机(JVM)
♦JW是“一台真正的机器上用软件方式实现的一台假想机”,是实现平台无关性的基础
・虚拟机包含:类加载器、字节码校验器、以及JIT实时编译器
•类加载器:用来取得从网络或本地的类文件
•字节码校验器:确认类文件是否有正确的格式
•JIT:使虚拟机能提高到编译式的运行效率
♦解释执行编译后的字节码,对字节码进行安全检查是JVM的两大功能
1.4Java平台
•J2SE:称为Java标准版或Java标准平台
♦针对桌面开发以及低端商务计算
♦体现Java的主要技术,基础,适合教学
•J2EE:称为Java企业版或Java企业平台
♦利用Java平台来简化企业解决方案的开发、部署和管理相关的体系结构
•J2ME:称为Java微型版或Java小型平台□Ojdkl.5
♦针对消费产品和嵌入设备软件的开发b1•n
口安装J2SE平台
®O
・目前Sun公司已发布了SDK的1.5版本®
•Java2SDK简介s•
Jr6
11♦b
s
图1.2SDK目录结构
♦J2SDK提供了调试及运行一个Java程序所必需工具的和库
♦J2SDK版本与Java版本一致,最新版本为J2SDKL5
•安装Java2SDK
♦双击下载的安装文件即可
♦官方下载地址:http://java.sun.com/j2se/l.5.0/download.jsp
♦如果安装SDK选择安装到E:\jdkl.5目录下,则会生成如图1.2所示的目录结构
♦设置环境变量
Path="javac和java命令所在的目录"
Classpath="存放字节码文件的目录”
・仅安装JRE
♦如果只需要运行Java程序可以只安装Java运行环境JRE
♦官方下载地址:http://java.sun.com/j2se/l.5.O/download.jsp
图1.3设置系统环境变量path和classpath
1.5Java程序开发
[——jjava程序结构
・至多有一个public类,程序文件名必须与该类的类名相同
・程序可以有一个或多个其它类
・当需要从某个类继承或使用某个类及其方法时,使用import引入该类的定义
□开发工具
•文本编辑器,如:“记事本”,适合初学者
・集成开发工具,如:NetBeans>JCreator>JBuilder
□java应用程序的开发
・应用程序的特点
♦应用程序必须有一个主类:含有publicstaticvoidmain(Stringargs[])方法的类
•开发一个Java应用程序需经过三个步骤:编写源文件、编译源文件生成字节码、加载运行
字节码
・编写源文件
♦在编辑器中书写,然后保存为Java文件
♦良好的变成习惯:一行最好只写一条语句,并有明显的缩进,适当的注释
♦注释(Comments)
单行谢,以换
▲单行:II...一行符为结束
人多行:r多行曲,注
释内容较多
人自动文档注释:/*工具从源
鬻徽Ii注释中将
*/7
・Javaa用程序举例
//这是文件名为“H珊M预翅4照”的应用程序
importjavado?;〃引入包
publicclassHelloWorld~~"定义类类名
publicstaticvoidmain(Stiingargs[])IImainsy^
System.out.printin("欢迎来胤Java世界!");
〃输出数据
)
)
・保存并运行
♦编译使用javac命令
♦运行实用java命令
目至定,tew*
文*a)*«<x)格式@
K9Q|)Ctrl”liter但存在a)|OJ«v«C»4«
打开©)CtrPO
保存0)CtrlfS
另存力(A)
N而通量0)
打fPQ)CtrHP
文用名B)"3I例-0I
19存081(X)|MU(文宣
W(X)
iQljavaApplet程序的开发
•开发一个JavaApplet程序需经过三个步骤:编写源文件、编译源文件生成字节码、通过浏
览器加载运行字节码
•Applet程序的特点
♦主类不再包含main。方法,而是扩展了Applet类,即它是Applet类的子类的类
♦只有一个主类
•Java小应用程序举例
publicclassHelloToJavaextendsApplet{
publicStringsHello;
publicvoidinit(){
sHello="R迎来到Java世界!n;
}
publicvoidpaint(Graphicsg){
g.drawstring(sHello,50,50);
}
}
・保存并运行
♦将上页文件保存为HelloToJava.java(必须)
♦首先将HeiloToJava.java文件进行编译(javac命令):javacHelloToJava.java
♦编译成功后,文件夹下会生成一个HelloToJava.class文件;如果源文件有多个类,将生
成多个class文件
♦JavaApplet由浏览器来运行
★使用命令:appletviewerHelloToJava.html查看运行结果
★或者直接双击打开HelloToJava.html查看
在运行之前需要编写如下HTML代码:
<HTML>
<APPLETCODE二〃HelloToJava.class"
WIDTH=200HEIGHT=100>
</APPLET>
</HTML>
将文件保存为HTML文件:HelloToJava.html
1.6SDK1.5编译器的新规定
SDK1.5不再向下兼容:用SDK1.5的编译器生成的字节码只能在安装了SDK1.5或JRE1.5的Java平台环
境中运行。
SDK1.5中增加了一些类,比如Scaner等。
SDK1.5的编译器javac.exe和以前版本的编译器有了一个很大的不同,不再向下兼容。也就是说,如果
在编译源文件时没有特别约定的话,用SDK1.5的编译器生成的字节码只能在安装了SDK1.5或JRE1.5
的Java平台环境中运行。
可以使用"-source”参数约定字节码适合的Java平台。如果程序中并没有用到SDK1.5的新功能,在编
译源文件时可以使用“-source”参数,如javac-source1.4文件名.Java这样编译生成的字节码可以在
1.4版本以上的Java平台运行。如果源文件使用的系统类库没有超出JDK1.1版本,在编译源文件应当使
用一source参数,取值1.1,使得字节码有更好可移植性。
-source参数可取的值有1.5,1.4,1.3,1.2和1.1。
如果没有明显地使用“-source”参数,javac默认使用该参数,并取值为1.5。
2.1标识符和关键字
・用来标识类名、变量名、方法名、类型名、数组名、文件名的有效字符序列称为标识符,定义的规则
如下:
♦由字母、数字、下划线和美元符组成
♦必须以字母、下划线或美元符号打头
♦严格区分大小写,没有长度限制
♦应该具有特定的意义
・标识符是Java语言的基本组成部分
♦合法的标示符,如:
SPrograme
_java
$Programe_Javal
Programe21
日历a
♦非法的标示符,如:
12Programe
&_java
Program-Javal
%Programe21
$sum¥number
后关键字
・关键字就是Java语言中已经被赋予特定意义的一些单词,它们在程序上有着不同的用途,不可以把关
键词作为类名、变量名、方法名、类型名、数组名、文件名等名字来用。
・关键字如下表所示:
abstractbreakbytebooleancatch
L<1beVlidIC1dSbUUIlI1nueUC141U1I
dodoubleelseextendsfalse
—
iiriHiii<ii<>iiiii\
importimplementsintinterfaceInstanceof
longlengthlidI1\cllCnI1U11
packageprivateprotectedpublic1rpvtluUr1nII
trvtruethisthrouthrows
Cl'Ka1z>
1111C<iUo<l1utransientvoidvolatileWill1C
[Unicode字符集介绍
每个字符在计算机中通常都是使用一个编码来表示,而这个字符的编码是什么,则要取决于使用哪个字
符集(charset)。
・几个常见的字符集
♦最早只有一种字符集一ANSII(American?Standards?Committee?for?Information?Interchange)
字符集,它使用7bits来表示一个字符,总共表示128个字符。
♦扩展的ANSII字符集,使用8bits表示一个字符,可以表示256个字符,主要在原来的7bits字符
集的基础上加入了一些特殊符号例如制表符、画线符等,又叫IBM字符集。
♦MBCS(Multi-ByteChactacterSystem,多字节字符系统),也是在ASCI:[字符集上进行的犷展,以适
应不同国家的需要,比如我国的GB-2312o
♦Unicode是-一个涵盖了目前全世界使用的所有已知字符的单一编码方案,也就是说Unicode为每一个
字符提供唯一的编码。
★标准的Unicode字符集使用定长编码,即使用16位编码,称为UTF-16;
★Unicode还有一种变长编码,即8位编码方式,这种编码可以用1-3个字节表示一个unicode字符,
称为UTF-8。
2.2基本数据类型
,字节型(byte)
字符型(char)短整型(short)
r整数类型
整型(期)
、长整型(long)
(基本数据类型数值类型《
「单精度浮点型(而叫
I实数类型一
I布尔类型®0磁网)I双精度浮点型(double)
Java数据类型空类型(niill)
r类(class)
复合数据类型«接口(interface)
、数组
图21Java数据类型表
二j整数类型
•Java整型数都为有符号数,整型多为十进制数形式,也可为八进制或十六进制形式
•整型的范围与Java代码所运行的机器无关
・整形按所占内存空间的大小分为四种类型
♦byte、shortint>long
•int类型:32位(4个字节),最常用,变量的取值范围是:-23C231-1
♦int型变量使用关键字int来定义,如:
♦inta,sum,Number,整数;
intn=55;
・long类型:64位(8个字节),用于很大的整数,长整形数字都有一个后缀L,变量的取值范围是
-263~263T
♦long型变量使用关键字long来定义,如:
longnumber,数学,$sum;
longn=500000L;//L的大小写均可
•short类型:16位(2个字节),变量的取值范围是-215~215T
♦short型变量使用关键字short来定义,如:
shortnumber,数学,$sum;
shortmynum=500;
・byte类型:8位(1个字节),变量的取值范围是-27^27-1
♦byte型变量使用关键字long来定义,如:
bytenumber,数学,$sum;
bytenum=50;
・浮点型数据有两种表示方式
♦用十进制数形式表示,由数字和小数点组成,如:3.25
♦用科学计数法形式表示,如:123E-3
・浮点型按所占内存空间的大小分为两种类型:float型(4字节)和double型(8字节)
♦浮点型数据不适合在不允许舍入误差的金融计算领域使用,
如:
2.Of-1.If=0.89999999999999990
・数后加f或F为float型,加d或D为double型(默认为double类型)
・实例
publicclassFloatandDouble
(
publicstaticvoidmain(String[]args)
(
floatc=4.2f;
floatd=12E-3f;
doublea=5.0;
doubleb=13E-2;
System.out.printin("a=",a);
System.out.println(ab=",b);
System,out.printin("c=",c);
System.out.println(,d);
・字符常量是用单引号括起来的一个字符,如:」‘、'*'
•char型变量,内存分配给2个字节,占16位,最高位不是符号位,没有负数的char
♦char变量的定义如下:
charch='5';
•Java中有以反斜杠’\,开头的字符,反斜杠将其后面的字符转变为另外的含义,称为转义字符如:
\rf,\b,、,
•Java中的字符型数据是16位的Unicode字符,汉字和英文字母占的内存空间相同
例:“JAVA你好”共12个字节
・要观察一个字符在unicode表中的顺序位置,必须使用int类型显示转换,如:(int)'a'
♦不可使用short型(2字节)转换,因为char的最高位不是符号位
•如果要得到一个0~65536之间的数所代表的unicode表中相应位置上的字符必须使用char向显示转
换,如:(char)69
•例:显示字符在unicode中的位置
publicclassexa
(
publicstaticvoidmain(String[]args)
(
charWord='你':
intp=20329;
System.out.printIn("汉字、'你\'在unicode表中的顺序位置:”+(int)Word);
System.out.printin("unicode表中第20329位置上的字符是:"+(char)p);
)
•又称为逻辑类型
•布尔型常量值只有:true和false
•布尔型变量为boolean类型,取值为true或false,定义时可以赋予初值
・例如:booleanb=true;
2.3基本数据类型的转换
・基本数据类型的转换就是把一种基木数据类型变量转变成另一种基本类型变量。
・精度由低到高排列为:
低高
byteshortcharintlongfloatdouble
•当把级别低的变量的值赋给级别高的变量时,系统自动完成数据类型的转换。
•当把级别高的变量的值赋给级别低的变量时,必须使用显示类型转换运算。
・高精度向低精度转换容易造成精度损失。
・实例
inta=9,c;intc;intc;
shortb=4;floatb=4.2f;dooubleb=4.2;
c=a+bc=(int)bc=(int)b
结果:c=13结果:c=4结果:c=4
2.4数据的输入与输出
Java提供的数据输入与输出很多都是在命令行窗口(例如,MS-DOS窗口)中进行。
^数据输出System,out对象
•printlnO:输出文本并换行
•print():输出文本不换行
•printfO:带格式的输出(新增方法)
printf(格式控制部分,表达式1,表达式2,…表达式n);
•例
publicclassPrintOut
(
publicstaticvoidmain(String[]args)
(
longx=56781;
floatf=123.456789f;
doubled=123456.12345678;
charc='a';
System.out.print(f);
System,out.printin(f);
System.out.printf(,z%c\n%10.3f%n%f,%12d%n%d,z,c,f,d,x=x+2,x);
System,out.printf(z,%c\n%10.3f%n%f,%3d%n%d/z,c,f,d,x=x+2,x);
)
)
jj数据的输入:Scanner
•Scanner是SDK1.5新增的。•个类
・首先创建•个该类的对象:
Scannerreader=newScanner(System,in);
・然后reader对象调用下列方法,读取用户在命令行输入的各种数据类型。
♦nextByte(),nextDouble(),nextFloat(),nextLine(),nextlnt(),nextIJne(),nextLong(),
nextShort()
・上述方法执行时系统都会暂时停下来,等待在命令行输入数据后回车确认。
•例:用户在键盘依次输入若干个数字,每输入一个数字都需要按回车键确认,最后在键盘输入一个非
数字字符仕匕如回车)结束整个的输入操作过程,程序将计算出这些数的和及平均值。
♦等待输入的方法:hasNextXXXO
♦读取输入数据的方法:nextXXXO
importjava.util.*;
publicclassExample
(
publicstaticvoidmain(Stringargs[])
(
Scannerreader=newScanner(System,in);
doublesum=0;
intm=0;
whiIe(reader.hasNextDouble())
(
doublex=reader.nextDoubleO;
m=m+1;
sum=sum+x;
)
System.out.printf(,z%d个数的和为%f\n〃,m,sum);
System.out.printf(^%(1个数的平均值是%£\。〃,m,sum/m);
reader,close();
)
)
3.1算术运算符和算术表达式
・算术运算符包括:+,*,/>%,++,—0
・加减运算符
♦加减运算的结合性是从左到右。
♦加减运算的操作元是整型或浮点型数据。
♦加减运算符的优先级是4级。
•乘、除和求余运算符
♦乘、除和求余运算的运算符号为*、/、%,都是双目运算符。
♦*、/、%运算符的结合性是从左到右,例如:2*3/8,先计算2*3,然后再将得到的结果除以8。
♦乘、除和求余运算的操作元是整型或浮点型数据。
♦*、/、%运算符的优先级是3级。
・自增、自减运算符
♦自增、自减运算的运算符号为:++、-»
♦都是单目运算符。
♦运算符可以放在操作元之前,也可以放在操作元之后,但操作元必须是一个整型或浮点型变量(不能
是常量或表达式)。
♦运算符的作用是使变量的值增1或减1。
♦注意
★前缀++:变量先自增1,后引用。
例如:inta=2;intb=++a;(a=3,b=3)
★后缀++:变量先引用,后自增1。
例如:inta=2;intb=a++;(a=3,b=2)
♦自减一的用法同上。
・用算术符号和操作元连接起来的符合Java语法规则的式子,称为算术表达式。
例如:(a+b)*(c-d)
•算术混合运算的精度
精度由低到高排列为:
低>高
byteshortcharintfloatlongdouble
•Java将按运算符两边的操作元的最高精度保留结果的精度。
•例
5/2=2;
5-3=2;
5/2.0=2.5;
5.0-3.Of=2.0
•char型数据和整型数据运算结果的精度是int如:
'H'+18=90
3.2关系运算符与关系表达式
・关系运算符用来比较两个值的关系,关系运算符的运算结果是boolean型数据。
♦当运算符对应的关系成立时,运算结果是true,否则是false。
・关系运算符包括:二二,!二,〈=,>,>=
•,,二:,,和"!二”都是由2个字符组成的一个完整的符号,书写时中间不要含有空格。
・关系运算符优先级低于算术运算符,执行顺序自左向右。
•例
♦10<9的结果是false,5>1的结果是true
♦‘a'<'b'的结果是false,'a'>'A'的结果是true
♦10>20-17相当于10>(20T7),结果为true
♦inta=10;a==8;结果为false
・结果为数值型的变量或表达式可以通过关系运算符形成关系表达式。
intb=8;a>b+3;
a!=b;
3.3逻辑运算符与逻辑表达式
•逻辑运算用来实现boolean型数据的逻辑“与”、“或”和“非”运算,运算结果是boolean
型数据。
・逻辑运算符包括:&,||
♦&,,&&,I是双目运算,!是单目运算。
•“&&”的运算法则是:当2个操作元的值都是true时,运算结果是true,否则是false。
・“II”的运算法则是:当2个操作元的值都是flase时,运算结果是false,否则是true。
・注意区别简洁“与“&&(“或”11)和非简洁”与"&(“或“I)
♦例如,inta=6,b=8,c=10,d=12;
booleanx=++a>b++&&c++>d—;(结果:a=7,b=9,c=10,d=12,x二false)
booleanx=++a>b++&c++>d一;(结果:a=7,b=9,c=ll,d=ll,x=false)
♦例如,inta=6,b=8,c=10,d=12;
booleanx=++a<b++||c++>d一;(结果:a=7,b=9,c=10,d=12,x=true)
booleanx=++a〈b++|c++>d-;(结果:a=7,b=9,c=ll,d=ll,x=true)
3.4移位运算符
位运算符用来对二进制位进行操作,分为左移位操作和右移位操作。
・左移位运算的符号为。,左移位运算符左面的操作元称作被移位数,右面的操作数称作移位量。
•特点
♦是双目运算符。
♦操作元必须是整型类型的数据。
・左位移的过程
♦假设a是一个被移位的整型数据,n是位移量。
♦a〈〈n运算的过程是通过将a的所有位都左移n位,每左移一个位,左边的最高位(即左边的第1位)
上的0或1被移出丢弃,并用0填充右边的低位。
♦比如:对整形数8«1的计算
8的二进制表示:0000,0000,0000,0000,0000,0000,0000,1000
左移一位的结果:0000,0000,0000,0000,0000,0000,0001,0000
・注意
♦左位移操作是对整型数的操作,操作符两边必须是整型。
♦比整型更小的数据类型数据将被转换成整型进行运算,比整型更大的数据类型数据是不能进行移位运
算的。
♦比整型更小的数据类型数据将被转换成整型时:对于正数将高位用0填充:负数将高位用1填充。
♦例:
bytea=-8;
System,out.printin(a<<2);
结果:-32
mi,mi,mi,mi,mi,mi,mi,1000
mi,mi,mi,mi,mi,mi,mo,oooo
♦在进行a«n运算时
★如果a是byte、short或int型数据,系统总是先计算出n%32的结果m,然后进行运算。
★对于long型数据,系统总是先计算出n%64的结果m,然后进行水<m运算。
★比如:
对于int数5<<1与5«33的结果相等;
对于long数5«1与5«65的结果相等。
右移位运算的符号为〉,右移位运算符左面的操作元称作被移位数,右面的操作数称作移位量。
•特点
♦是双目运算符。
♦操作元必须是整型类型的数据。
・右位移的过程
♦假设a是一个被移位的整型数据,n是位移量。
♦a〉n运算的过程是通过将a的所有位都右移n位,每右移一个位,右边的最低位(即右边的第1位)
上的0或1被移出丢弃,并用0或1填充左边的高位(a是正数时用0填充,负数时用1填充)。
♦比如:对整形数8»1的计算
8的二进制表示:0000,0000,0000,0000,0000,0000,0000,1000
右移-位的结果:0000,0000,0000,0000,0000,0000,0000,0100
・注意
♦右位移操作是对整型数的操作,操作符两边必须是整型。
♦比整型更小的数据类型数据将被转换成整型进行运算,比整型更大的数据类型数据是不能进行移位运
算的。
♦比整型更小的数据类型数据将被转换成整型时:对于正数将高位用0填充;负数将高位用1填充。
♦例:
bytea=-8;
System.out.println(a»2);
结果:-2
mi,mi,mi,mi,1111,1111,1111,1000
mi,mi,mi,mi,mi,ini,mi,mo
♦在进行a»n运算时
★如果a是byte、short或ini型数据,系统总是先计算出n%32的结果m,然后进行a>〉m运算。
★对于long型数据,系统总是先计算出n%64的结果m,然后进行a〉〉m运算。
★比如:
对于int数5»1与5»33的结果相等;
对于long数5»1与5»65的结果相等。
3.5位运算符
“按位与”运算符&
•“&”是双目运算符,对两个整型数据a、b按位进行运算,运算结果是一个整型数据c。
♦运算法则是:如果a、b两个操作数对应位都是1,则c的该位是1,否则是0。
■结果的精度和两个操作数中精度高的相同。
・例:
inta=3,b=4;
System,out.printIn(a&b);
结果:0
a:0000,0000,0000,0000,0000,0000,0000,0011
b:0000,0000,0000,0000,0000,0000,0000,0100
c:0000,0000,0000,0000,0000,0000,0000,0000
J“按位或”运算符I
•“I”是双目运算符,对两个整型数据a、b按位进行运算,运算结果是一个整型数据c。
・运算法则是:如果a、b两个数据对应位都是0,则c的该位是0,否则是1。
■结果的精度和两个操作数中精度高的相同。
・例:
inta=3,b=4:
System,out.printIn(a&b);
结果:7
a:0000,0000,0000,0000,0000,0000,0000,0011
b:0000,0000,0000,0000,0000,0000,0000,0100
c:0000,0000,0000,0000,0000,0000,0000,0111
二I“按位非”运算符~
・”是单目运算符,对•个整型数据a按位进行运算,运算结果是一个整型数据c。
・运算法则是:如果a对应位是0,则c的该位是1,否则是0。
・例:
inta=3;
System,out.println(~a);
结果:-4
a:0000,0000,0000,0000,0000,0000,0000,0011
c:ini,mi,mi,mi,mi,mi,mi,noo
“按位异或”运算符
・是双目运算符,对两个整型数据a、b按位进行运算,运算结果是一个整型数据c。
・运算法则是:如果a、b两个数据对应位相同,则c的该位是0,否则是1。
■结果的精度和两个操作数中精度高的相同。
・例:
inta=3,b=4;
System,out.printIn(ab);
结果:7
a:0000,0000,0000,0000,0000,0000,0000,0011
b:0000,0000,0000,0000,0000,0000,0000,0100
c:0000,0000,0000,0000,0000,0000,0000,0111
3.6条件运算符
•条件运算符是一个3目运算符。
・符号是:“?:”,需要连接3个操作元。
♦用法:opl?op2:op3
♦opl的值必须是boolean型数据
・运算法则
♦当opl的值是true时,opl?op2:op3运算的结果是op2的值;
♦当。pl的值是false时,opl?op2:op3运算的结果是op3的值。
3.7控制语句
•Java的语句分为5类。
・方法调用语句:对象名.方法();
・表达式语句:表达式末尾加上一个分号
・复合语句:使用”{“和“}”把多个语句括起来构成复合语句
•package语句和import语句:包和类的使用
♦package包名;
♦import包或者类在JDK中所在的位置。
・控制语句:顺序语句、分支语句、循环语句和跳转语句。
・if-else条件分支语句
♦由一个“if”、“else”和两个复合语句按一定格式构成,是一个语句。
♦格式:
if(表达式)
若干语句
)
else
若干语句
}
♦规则:if后面()内的表达式的值必须是boolean型的。
★如果表达式的值为true,则执行紧跟着的复合语句;
★如果表达式的值为false,则执行else后面的复合语句。
•if-elseif-else多条件语句
♦使用多条件语句根据多条件来选择某一操作
♦if-elseif-else语句是Java中的一条语句
if(表达式1)
若干语句
}
elseif(表达式2)
若干语句
)
elseif(表达式n)
若干语句
)
else
若干语句
)
♦例:
if(a+b>c&&a+c>b&&b+c>a)
if(a*a==b*b+c*cIIb*b==a*a+c*c||c*c==a*a+b*b)
System.out.printf("构成直角三角形〃);
)
elseif(a*a<b*b+c*c&&b*b<a*a+c*c&&c*c<a*a+b*b)
(
System.out.printf(〃构成锐角三角形〃);
}
else
(
System.out.printf("构成钝角三角形”);
)
)
else
(
System.out.printf("不能构成三角形”);
)
•switch开关语句
♦switch语句是多分支的开关语句,用于多分支单选择
♦格式
switch(表达式)
(
case常量值1:
若干个语句
break;
case常量值n:
若干个语句
break;
default:
while循环语句流程图dcrwhile循环语句流程图
□循环语句
•while循环
♦一般格式:
while(表达式)
(若干语句
}
•do-while循环
♦一般格式:
do{
若干语句
)
while(表达式);
♦do-while循环和while循环又称为不确定循环。
•while循环与do-while的区别是:
♦do-while的循环体至少被执行一次。
♦例:分别用while和do-while循环计算常数e的近似值:e=l+l/l+l/2!+l/3!+
doublesum=03item=l;doub1eitem=1;
inti=l;inti=l;
while(i<=1000){do{
sum=sum+item;sum=sum+itejn;
ifif
item=item*(l.0/i);item=item*(l.0/i);
)}while(i<=1000);
sum=sum+l;sum=sum+l;
System,out.printIn(*e=^+sum);System,out.println(^e=^+sum)
・for循环
♦一般格式:
for(表达式1;表达式2;表达式3)
(
若干语句
}
♦for语句的执行规则是:
(1)计算“表达式1”,完成必要的初始化工作;
(2)判断“表达式2”的值,若“表达式2”的值为true,则进行(3),否则进行(4);
(3)执行循环体,然后计算“表达式3”,以便改变循环条件,进行(2):
(4)结束for语句的执行。
♦例:使用f。「循环计算出1000内的全部完数(一个数如果恰好等于它的因子之和,则称为
“完数”)。
intsum,i,j;
for(i=l;i<=1000;i++)
for(j=l,sum=O;j<=i/2;j++)
if(i%j==O)
(
sum=sum+j;
}
)
if(suni==i)
{
System.out.printf("%8d是一个完数%n",i);
)
跳转语句
・跳转语句是指用关键break或continue加上分号构成的语句。
•如果在某次循环体的执行中执行了break语句,那么整个循环语句就结束。
•如果在某次循环体的执行中执行了continue语句,那么本次循环就结束,即不再执行本次
循环中循环体中continue语句后面的语句,而转入进行下一次循环。
•在结构化程序设计中,应该尽量少地使用跳转语句。
4.1类声明和类体
・类是组成Java程序的基本要素。封装的实体=数据+方法
♦类是具有共同属性和行为的对象的抽象,类
可以定义为数据和方法的集合。
•类由两部分构成:类声明和类体。
•基本格式为:类
class类名
{
类体的内容...
抽实
}
象例
・给类命名时,需要良好命名习惯化
♦类的名字不能是Java中的关键字,要符合
标识符规定。
♦如果类名使用拉丁字母,那么名字的首字对象
母使用大写字母,如Hello,Time,People等。
♦类名最好容易识别、见名知意,当类名由儿个“单词”复合而成时,每个单词的首写字母使用大写,
如BeijingTime,AmericanGame,HelloChina等。
类体的构成
・成员变量:通过变量声明定义的变量,用来刻画类创建的对象的属性。
・成员方法
・构造方法:类创建对象时使用,用来给出类所创建的对象的初始状态。
・普通方法:供对象调用,体现对象具有的某种功能。
•例:一个梯形类的定义
classEchelon
(
floatup,down,hight,laderArea;〃成员变量
〃area()与changeup。是成员方法
f1oatAreaO
(
laderArea=(up+down)*hight/2;
return1aderArea;
)
voidchangeup(floath)
(
hight=h;
}
)
4.2构造方法与对象的创建
•类创建对象时需使用构造方法,以便给类所创建的对象一个合理的初始状态。
・构造方法的特点
♦名字必须与它所在的类的名字完全相同
♦没有任何返回值
♦一个类中可以有若干个构造方法,但这些构造方法的参数必须不同(即或者是参数的个数不同,或者
是参数的类型不同)
・例如:
classPeop
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学三年级上册数学期末测试卷加答案下载
- 人教版数学四年级下册期末测试试卷加解析答案
- 人教版数学四年级下册期末测试卷(模拟题)
- 人教版小学四年级下册数学期末测试卷带答案(巩固)
- 人教版小学四年级下册数学期末测试卷【a卷】
- 小学三年级上册数学期末测试卷及答案(考点梳理)
- 二年级上册数学期末测试卷及下载答案
- 小学三年级上册数学期末测试卷(精练)
- 小学数学二年级上册期末测试卷(夺分金卷)
- 小学数学二年级上册期末测试卷(基础题)
- 网络安全运营体系建设方案
- 电机公司创业计划书
- 脊柱病症推拿治疗 腰椎间盘突出症 腰椎间盘突出症的推拿治疗
- 教育系统安全工作培训测试题(含答案)
- 初中音乐人音八年级下册第四单元亚洲弦歌亚洲弦歌《樱花》
- 为什么是中国
- 柯美打印机用户使用教程
- 海外教育概况知到章节答案智慧树2023年成都文理学院
- 大学英语六级听力真题-答案与原文
- 电梯原理及部件演示文稿
- (1)-2.1染色质与染色体异同
评论
0/150
提交评论