版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章Java程序设计语言概述第2章Java程序设计语言概述12.1Java程序设计语言的发展1995年5月发布Java和HotJava浏览器1995年9月宣布将提供Java开发工具1995年12月发布JavaScript1996年推出JDK1.01996年颁布JavaBeans规范1997年推出JDK1.1.21998年12月Sun公司发布了Java2平台2.1Java程序设计语言的发展1995年5月发布Java22.1Java程序设计语言的发展1999年6月SUN公司重新定义了Java技术的框架,形成了现在的3个版本:1、J2ME(Java2MicroEdition)——以消费性电子产品为目标的高度优化的Java运行环境。2、J2SE(Java2StandardEdition)——开发客户端应用程序的Java标准平台,是Java2的标准版,主要用于桌面应用软件的编程。3、J2EE(Java2EnterpriseEdition)——是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。具有模块化、可重用的JavaBean组件——一个java类(参考教材388页)。。要学习j2ee就要先学习j2se2.1Java程序设计语言的发展1999年6月SUN公司重32.2Java程序设计语言的基本特征简捷性面向对象分布式健壮性结构中立安全性可移植性解释执行高性能多线程2.2Java程序设计语言的基本特征简捷性安全性42.3Java程序的运行环境编译型源程序字节码程序Java源程序可执行程序exe裸机操作系统解释器编译连接编译运行解释运行.java.classJava是解释型的高级编程语言Java虚拟机2.3Java程序的运行环境编译型源程序字节码程序Java5运行Java程序的基本过程1、利用编辑器编写Java源程序源文件名:主类名.java2、利用编译器将源程序编译成字节码文件字节码文件名:源文件名.class3、利用虚拟机(解释器)运行工作过程:载入、代码校验、解释执行运行Java程序的基本过程1、利用编辑器编写Java源程序6常见的Java开发环境从网络上直接下载JDK(JavaDeveloperKit),并利用命令行方式操作javac(编译器);java(解释器)Java集成开发环境(IDE)VisualJ++、VisualCafe、JBuilder、EclipseJava教学集成开发环境BlueJ(需要JDK1.3以上版本的支持)、JCreater是一个JAVA集成开发环境(IDE)。其最大特点是与机器中所装的JDK完美结合,是其它任何一款IDE所不能比拟的。其实,有很多高手根本不用这些工具,随便一个文本编辑器(如记事本)+JDK就可编一个非常完美的绝对的纯的Java程序.刚开始学习j2se先建议不要使用IDE,然后渐渐的过渡到使用IDE开发常见的Java开发环境从网络上直接下载JDK(JavaDe72.4Java程序的基本结构Application应用程序:它是一个完整的应用程序,可以利用Java虚拟机独立地运行。
Applet(小应用程序):它不是一个完整的应用程序,而是框架程序中的一个模块,因此只能在WWW浏览器环境下运行。
2.4Java程序的基本结构Application应用程8Application应用程序举例importjava.io.*;publicclass
MyFirstJavaProgram{
publicstaticvoid
main(String[]args){
System.out.println(“ThisisthefirstJavaApplication”);}}Application应用程序举例importjava.i9JavaApplication程序基本结构import语句class{publicstaticvoidmain(String[]args){}}主类名称方法体JavaApplication程序基本结构import语句10Applet应用程序举例importjava.applet.*;importjava.awt.*;publicclassMyFirstJavaApplet
extends
Applet{publicvoidpaint(Graphicsg){g.drawString(“ThisisthefirstAppletprogram.”,50,50);}}Applet应用程序举例importjava.apple11JavaApplet小应用程序基本结构importjava.applet.*;importjava.awt.*;class
extendsApplet{
}类名称类成员声明Applet是一个系统类,是容器类java.awt.Panel类的子类,封装了init(),start(),stop(),paint(),destroy()等方法。JavaApplet小应用程序基本结构importjav12<HTML><HEAD><TITLE>FirstJavaApplet</TITLE></HEAD><BODY><HR><APPLETCODE=FirstJavaApplet.classWIDTH=500HEIGHT=500 CODEBASE=“.”></APPLET></BODY></HTML>
Codebase指定了Java程序在网络上何处可以找到需要的类。<HTML>Codebase指定了Java程13JavaApplet工作原理HTML文件嵌入Appletwww服务器www服务器www浏览器请求HTML文件下载HTML文件请求Applet字节码下载Applet字节码解释执行Applet字节码JavaApplet工作原理HTMLwww服务器www服14编写Java程序需要注意的几点Java区分大小写一个程序中可以有一个或多个类,但其中只能有一个主类源程序编写完毕,应该用主类名作为文件名,再加后缀.java
存储成磁盘文件编写Java程序需要注意的几点Java区分大小写152.5Java程序的基本类型数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。Java语言属于强类型语言,即对于程序中出现的所有变量和表达式,在编译的时候就要求有明确的数据类型,这样才可以由编译程序在编译期间对所有的操作进行数据类型相容性的检查。Java支持的数据类型分为两个类别:基本数据类型和引用数据类型2.5Java程序的基本类型数据类型决定16Java的基本数据类型布尔类型:boolean字符类型:char整数类型:byte、short、int、long浮点类型:float、doubleJava的基本数据类型布尔类型:boolean17数据类型占用二进制位数取值范围默认值boolean(布尔类型)8True或falsefalsechar(字符类型)16\u0000~\uFFFF(0~65535)\u0000byte(字节类型)8-128~127(-27~(27-1))0short(短整型)16-32768~32767(-215~(215-1))0int(整型)32-2147483648~2147483647(-231~(231-1))0long(长整型)64(-263~(263-1))0float(单精度浮点型)32+1.4E-45~+3.4028235E+380.0fdouble(双精度浮点型)64+4.9E-324~+1.7976931348623157E+3080.0Java语言的基本数据类型在Java语言中,基本数据类型的数据所占用的二进制位数是固定的,与具体的软硬件环境无关。每一种数据类型都有一个默认的初值。所有基本类型的关键词都是小写的。在把容量大的类型转换为容量小的类型时必须使用强制类型转换。数据类型占用二进制位数取值范围默认值boolean8True18boolean只有“true”和“false”两个取值,分别代表“真”和“假”。特点:不能够与任何其他类型进行相互的类型转换操作,不对应于任何整数值,只能参与逻辑关系运算。不能用1和0代表true和false。boolean只有“true”和“false”两个取值,分别19charJava语言规定,字符采用Unicode编码,每个字符占用两个字节。ASCII字符集是Unicode字符集的一个子集,并且在这两个字符集中,前128个编码所对应的字符完全相同,只是每个字符占用的二进制位数不同。转义符表示一个Unicode字符\uxxxxcharJava语言规定,字符采用Unicode编码,每个字20byte、short、int、long上面4种数据类型都属于整型数值类型。byte1个字节short2个字节int3个字节long4个字节Java语言中所有整数类型均为符号数byte、short、int、long上面4种数据类型都属于21float、doublefloat单精度32位double双精度64位Java语言中的浮点数值表示遵循IEEE754标准。它不仅包括正零(+0.0)、负零(-0.0)、正无穷大(Infinity)、负无穷大(-Infinity)和一个特别的值NaN(非法的浮点运算结果)。float、doublefloat单精度222.6标识符、关键字、分隔符、常量、变量【标识符】
Java的标识符由字母、数字、_和$组成,长度不限。其中字母可以是大写或小写的英文字母,数字为0到9。标识符的第一个字符必须为字母、(_)或($)符号。标识符区分大小写。2.6标识符、关键字、分隔符、常量、变量【标识符】23标识符用来命名变量、符号常量、数组、方法、类、对象、接口、包等。为了提高程序的可读性,标识符最好“见名知义”,而且规范大小写的使用方式,标识符命名规范见P42。合法的标识符:IdentifieruserNameUser_Name_sys_value$changemy$Change非法的标识符:2mailroom#class标识符用来命名变量、符号常量、数组、方法、类、对象、接口、包24【关键字】又称保留字,是Java语言规定了特定含义的标识符。用户只能按照系统规定的方式使用,不能自行定义。关键字一律用小写字母表示。Java中的关键字有50个,按用途划分为:数据类型、语句、修饰、方法、类、接口、包,并保留了const和goto但并不使用。【关键字】又称保留字,是Java语言规定了特定含义的标识25数据和返回值类型:int,void,return……包/类/成员/接口:package,class,interface访问控制:public,private,protected循环及循环控制:if,switch,break例外处理:throw,try,finally保留词(无含义但不能使用):goto,const【关键字简单分类】数据和返回值类型:int,void,return……【关26【分隔符】分隔符被用来区分Java源程序中的基本成分(标识符、关键字、运算符和常量),分隔符分为注释、空白符和普通分隔符三种类别。【分隔符】分隔符被用来区分Java源程序中的基本成分(标27注释是为源程序增加必要的解释说明的内容,其目的是提高程序的可读性,书写注释是编写程序的良好习惯。Java中有三种形式的注释:
/*注释部分*/ //注释部分/**注释部分**/Java文档注释,可以通过javadoc生成类和接口的HTML格式的帮助文档。注释是为源程序增加必要的解释说明的内容,其目的是提高程序的可28第二种分隔符是空白符,包括空格、回车符、换行符和制表符(Tab键)等。各种Java基本成分之间的多个空白符与一个空白符的作用相同。第二种分隔符是空白符,包括空格、回车符、换行符和制表符(Ta29第三种是普通分隔符,具有确定的语法含义,必须按照特定的语法规定使用。它包括四种分隔符:{}大括号,用来定义类体、方法体、复合语句或对数组进行初始化。
;分号,是语句结束的标志。
,逗号,分隔方法的参数或声明的变量序列。
:冒号,用于分隔语句标号。第三种是普通分隔符,具有确定的语法含义,必须按照特定的语法规30【直接量】——基本数据类型和字符串类型的数值表示整型直接量:十、八、十六进制实型直接量:double、float(185.2f)字符直接量:单引号括起来(‘\n’)布尔直接量:true和false字符串直接量:双引号括起来【直接量】——基本数据类型和字符串类型的数值表示整型直接量:31【变量】在Java语言中,所有的变量必须先定义后使用。其格式为:数据类型
标识符1[=初值],[标识符2...];如果是基本数据类型,变量在声明时就为其分配内存空间;否则,还需要用new
为声明的变量分配空间。基本数据类型包括布尔类型、字符类型和数值类型。【变量】在Java语言中,所有的变量必须先定义后使用。其32【常量】在Java语言中,可将变量声明成final。final
floatPI=3.14159f;该类型变量在程序的运行过程中只被赋值一次,其值不能被更改,但并不要求一定在定义的同时为其赋值。【常量】在Java语言中,可将变量声明成final。332.7Java程序的基本输入输出Applet应用程序的输入输出输入:利用图形用户界面的组件接收用户信息输出:以图形或图像的形式输出结果Application应用程序的输入输出字符界面:利用System.in.read输入,System.out.print和System.out.println输出图形用户界面:与Applet类似2.7Java程序的基本输入输出Applet应用程序的34字符界面的输入输出importjava.io.*;publicclassSimpleCharInOut{publicstaticvoidmain(String[]args){charch=‘‘;
System.out.print(“Enteracharacterplease:”);try{ch=(char)System.in.read();}catch(IOExceptione){};
System.out.println(“You’veenteredcharacter”+c);}字符界面的输入输出importjava.io.*;35importjava.io.*;publicclassApplicationLineInOut{ publicstaticvoidmain(Stringargs[]) { Stringstring=""; System.out.print("pleaseenterastring:"); try { BufferedReaderin=newBufferedReader(newInputStreamReader(System.in)); string=in.readLine(); }catch(IOExceptione){} System.out.println("You'veenteredstring:"+string); }}importjava.io.*;36importjava.applet.Applet;importjava.awt.*;importjava.awt.event.*;publicclassGUIDemoextends
Applet
implementsActionListener{
ButtonredButton; //按钮“红色”
ButtongreenButton; //按钮“绿色”
Labellabel; //标签 publicvoidinit() { label=newLabel("程序开始运行,目前还没有点击任何按钮");redButton=newButton(“红色”); //创建“红色”按钮
greenButton=newButton(“绿色”); //创建“绿色”按钮
redButton.addActionListener(this); /注册监听器 greenButton.addActionListener(this); //注册监听器
add(label); //将标签label添加到容器中
add(RedButton); //将按钮redButton添加到容器中
add(GreenButton); //将按钮greenButton添加到容器中 }图形用户界面的输入输出importjava.applet.Applet;图形用户37//点击按钮时自动调用publicvoidactionPerformed(ActionEvent
e) { if(e.getSource()==RedButton){
label.setText("你点击了《红色》按钮"); } else { if(e.getSource()==GreenButton){
label.setText("你点击了《绿色》按钮"); }}}}//点击按钮时自动调用382.8运算符与表达式运算符由一至三个字符结合而成,用以表示运算。虽然运算符是由数个字符组合,但Java将其视为一个符号。运算符亦为标记的一种。请特别注意前、后递增,前、后递减的概念。前递增是指被前置的变量先递增后,再指定给另一个变量。而后递增则是指定完后再递增。前递减与后递减亦是同样规则。算术运算符
运算符
运算
范例
结果
+正号
+33
-负号
b=4;-b-4
+加5+510
-减
6-42
*乘3*412
/除5/51
%余数
5%50++前递增
a=2;b=++aa=3;b=3
++(f)后递增
a=2;b=a++a=3;b=2--前递减
a=2;b=--aa=1;b=1
--后递减
a=2;b=a--a=1;b=2
+字符串串连
“Ja”+“va”“Java”2.8运算符与表达式运算符由一至三个字符结合而成,用以表39赋值运算符
赋值运算符运算符
运算
范例
结果
=指定数值
a=3;b=2a=3;b=2+=加等于
a+=ba=5;b=2-=减等于
a-=ba=1;b=2*=乘等于
a*=ba=6;b=2/=除等于
a/=ba=1.5;b=2%=余数等于
a%=ba=1;b=2a+=b的意思是a=a+b。其余以此类推。赋值运算符赋值运算符运算符运算范例结果=指定数值40关系运算符
关系运算符
运算符运算范例结果==相等于4==3false!=不等于4!=3true<小于4<3false>大于
4>3true<=小于等于4<=3false>=大于等于4>=3trueinstanceof检查是否为类实例
“Hello”instanceofStringtrue关系运算符关系运算符运算符运算范例结果==相等于41逻辑运算符
逻辑运算符
运算符运算范例
结果
&ANDfalse&truefalse|ORfalse|truetrue^XORtrue^falsetrue!Not!truefalse&&简洁
ANDfalse&&truefasle||简洁
ORfalse||truetrue?:Conditional(ternary)false?6:99x=10;if((x>0)||(++x<10))System.out.println(x);逻辑运算符逻辑运算符运算符运算范例结果&ANDf42位运算符
位运算符
运算符运算范例
结果
&按位与a&b00000010|按位或a|b01101111~按位非~a10010101^按位异或a^b01101101>>右移c>>211111011<<左移c<<210111100>>>无符号右移c>>>200111011a=(106)D=(01101010)Bb=(7)D=(00000111)BC=(-17)D=(11101111)B位运算符位运算符运算符运算范例结果&按位与a&b432.8.2优先级和结合顺序1) .,
[],() 9) &2) ++,--,!,~,instanceof 10) ^
3) +,-,(type),
new 11) |4) *,/
,% 12) &&5) +,-
13) ||6) >>,>>>,<<
14) ?:7) >,<,>=,<=
15) =,+=,-=,*=,/=,%=,^=8) ==,!= 16) &=,|=,<<=,>>=,>>>=注:红色的从右到左,其余的从左到右;用括号改变结合顺序。
蓝色运算符对byte、short、char作运算时,结果为int型整数。2.8.2优先级和结合顺序1) .,[],(44赋值操作中的类型转换Java是强类型语言,因此,在进行赋值操作时要检查类型;当将占位数少的类型赋值给占位数多的类型时,Java自动使用隐式类型转换;当将占位数多的类型赋值给占位数少的类型时,需要由用户使用显式地强制进行类型转换。赋值操作中的类型转换Java是强类型语言,因此,在进行赋值操45packagejava.lang;importjava.util.Random;publicfinalclassMath{privateMath(){}publicstaticfinaldoubleE=2.7182818284590452354;publicstaticfinaldoublePI=3.14159265358979323846;publicstaticnativedoublesin(doublea);publicstaticnativedoublecos(doublea);publicstaticnativedoubletan(doublea);publicstaticnativedoubleasin(doublea);publicstaticnativedoubleacos(doublea);publicstaticnativedoubleatan(doublea);publicstaticnativedoubleexp(doublea);publicstaticnativedoublelog(doublea);publicstaticnativedoublesqrt(doublea);publicstaticnativedoubleIEEEremainder(doublef1,doublef2);publicstaticnativedoubleceil(doublea);publicstaticnativedoublefloor(doublea);publicstaticnativedoublerint(doublea);Math类(importjava.lang)packagejava.lang;Math类(impor46publicstaticnativedoubleatan2(doublea,doubleb);publicstaticnativedoublepow(doublea,doubleb);publicstaticintround(floata)publicstaticlonground(doublea)privatestaticRandomrandomNumberGenerator;publicstaticdoublerandom()publicstaticintabs(inta)publicstaticlongabs(longa)publicstaticfloatabs(floata)publicstaticdoubleabs(doublea)publicstaticintmax(inta,intb)publicstaticlongmax(longa,longb)publicstaticfloatmax(floata,floatb)publicstaticdoublemax(doublea,doubleb)publicstaticintmin(inta,intb)publicstaticlongmin(longa,longb)publicstaticfloatmin(floata,floatb)publicstaticdoublemin(doublea,doubleb)}publicstaticnativedoubl47顺序结构的语句:空语句、标号语句、表达式语句、复合语句、throw语句、synchronized语句和try语句。该结构语句特点:按书写顺序依次执行。流程控制语句:顺序结构、分支结构和循环结构2.9流程控制语句顺序结构的语句:空语句、标号语句、表达式语句、复合语句48《分支结构》
if(布尔表达式)语句1;[else语句2;]
switch(表达式){case常量1:语句块1;......case常量n:语句块n;default:语句块n+1;}结果必须为boolean类型结果必须为char,byte,short,int类型《分支结构》if(布尔表达式)语句1;[els49《循环结构—while》格式:
while(循环条件){循环体}含义:循环条件为一个布尔表达式,其值为true时,重复执行循环体。《循环结构—while》格式:50《循环结构—do》格式:do{
循环体}while(循环条件);含义:重复执行循环体,直到循环条件为false。《循环结构—do》格式:51继续条件?下一个语句语句truefalse下一个语句true语句继续条件?while(循环条件){循环体}do{
循环体
}while(循环条件);继续条件?下一个语句语句truefalse下一个语句true52《循环结构—for》格式:for(表达式1;表达式2;表达式3)循环体;表达式1:循环初值表达式2:布尔型表达式,循环条件表达式3:循环增量表达式例如:for(inti=0;i<=11;i++){ total+=Rain[year-1][i];}
《循环结构—for》格式:例如:532.9.10循环语句比较intn=1,sum=0;while(n<=10){sum=sum+n;n++;}intn=10,sum=0;do{sum+=n;n--;}while(n>0);intsum=0;for(inti=1;i<=10;i++){sum+=i;}while循环do-while循环for循环2.9.10循环语句比较intn=1,sum=54《控制转移语句》break语句:使程序的流程从一个语句块内部转移出去。通常在switch和循环语句中使用。continue语句:只能在循环语句中使用。其作用是终止当前这一轮的循环,直接进入下一轮的循环。《控制转移语句》break语句:使程序的流程从一个语句块内部552.9.11程序转移相关语句breaka:{//标记代码块a…… b:{//标记代码块b……c:{//标记代码块c……breakb;……//这段语句将不执行}//代码块c结束……//这段语句也不执行}//代码块b结束……//从这段语句开始执行}//代码块a结束2.9.11程序转移相关语句breaka:{//标562.9.12程序转移相关语句continueouter:for(inti=0;i<10;i++){//外层循环inner:for(intj=0;j<10;j++){//内层循环
if(i<j){ ……
continueouter; } ……}//内层循环结束
……}//外层循环结束for(inti=0;i<10;i++){if(i==5){continue;}……}2.9.12程序转移相关语句continueouter:572.9.13程序转移相关语句returnreturn语句从当前方法中退出,返回到调用该方法的语句处,并从紧跟该语句的下一条语句继续程序的执行。返回语句有两种格式:returnexpression;//当方法需要返回某种类型数据时return;//当方法的返回类型为void时单独一条return语句放在方法中间时,会产生编译错误,因为其后的语句将不会执行到。若真需要退出方法,可以通过将return语句嵌入某些语句(如if-else)来使程序在未执行完方法中所有语句时退出。2.9.13程序转移相关语句returnreturn582.10引用在Java中,引用(reference)指向一个对象在内存中的位置,本质上它是一种带有很强的完整性和安全性限制的指针。当声明某个类、接口或数组类型的变量时,那个变量的值总是某个对象的引用或者是null。引用型变量只支持有限的逻辑判断:相等判断(是否同一个对象的引用):==!=theObject==null otherObject!=theObject类型判断(是否是某个类的实例):instanceoftheObjectinstanceofObject“”instanceofString2.10引用在Java中,引用(referen59引用类型示例(数组)
如 float[]tax=newfloat[5];
数组被声明后,其数组大小值会被放在所分配内存区的第一个地址,并以length作此地址的参考。所以我们可用tax.length来取得此数组的大小值。数组被设置数值的方法如下:
tax[0]=6786.5 tax[1]=8763.79引用类型示例(数组)如 float[]tax=602.10引用类型示例(对象)
Student{//学生类//一类对象的属性:
intNo;
Cstringmajor;
intsex;//0代表女,1代表男
floatHeight;//单位CM
floatWeight;//单位KG//一类对象的功能:
Student(intno,Cstring&str1,intsex,
floatheight,floatweight);
voidsetNo(inta);
intgetNo();
intsetName(Cstringstr);
floatgetHeight();
floatgetWeight();
voiddrive(CarredCar);}
Studenta;a=newStudent(2001002,”计算机“,0,165,45);intb=a.getNo();a2001002计算机016545对象的方法:intgetNo();2.10引用类型示例(对象)Student{//学生类S61简单类型和引用类型简单类型的特点:声明时自动分配空间;赋值操作将拷贝数值。引用类型:声明时不分配空间,需要利用new完成空间分配(String隐含分配);赋值操作是地址的拷贝。简单类型和引用类型简单类型的特点:声明时自动分配空间;赋值操622.10数组按照元素的组成分类,数组属于复合数据类型,它是由类型相同的元素组成的有顺序的数据集合。特点:元素类型相同;元素有顺序;所有元素共用一个名称。2.10数组按照元素的组成分类,数组属于复合数据类型,它63Java语言中的数组声明格式:数组元素类型
数组名[];
数组元素类型[]
数组名;举例:
intarray_int[];
doublearray_double[];
String[]str;
Point[]P;注意:按照变量的存储方式上分类,Java语言中的数组属于引用类型,是一个动态创建且属于Array的类对象,因此在声明数组引用时不能给出长度。Java语言中的数组声明格式:数组元素类型数组名[];64数组的创建声明数组引用后,需要利用new运算来为数组型变量定义长度且分配内存空间,我们将其称之为创建数组。
array_int=
new
int[10];array_double=new
double[1000];String[]str=new
String[10];Java规定,数组创建后系统自动地为数组中的每个元素赋予初值。数组的创建声明数组引用后,需要利用new运算来为数组型变量定65数组初值数组元素的默认初值:整型:0实型:0.0f或0.0d字符:‘\0’类对象:null也可以在创建数组的同时,直接为数组赋予特定的初始值。int
array_int[]={1,2,3,4,5,6,7};String[]str
={“C++”,“QBasic”,“Pascal”};Java语言规定,不需要事先创建数组,也不需要在括号中指出数组元素的数目数组初值数组元素的默认初值:Java语言规定,不需要事先创建66一维数组元素访问Java数组元素的格式:
数组型变量名[下标表达式]数组元素的下标从0开始,Java语言会严格检查下标表达式的取值范围,一旦越界,就会抛出ArrayIndexOutOfBoundsException异常。Java语言还为数组封装了length属性,可通过它获得数组的元素数目。一维数组元素访问Java数组元素的格式:67一维数组复制1、引用复制只将数组的引用赋予其他变量,没有重新分配存储空间。2、利用System类中的静态方法arraycopy实现复制
System.arraycopy(array_src,0,array_dest,0,number);一维数组复制1、引用复制68在Java语言中,long类型的最大值为9223372036854775807,要想编写一个程序能够将任意给定的一个long值转换成二进制,可以借助于一维数组将转换后的每一位二进制数值保存起来。在Java语言中,long类型的最大值为922337203669publicclassDecimaltoBinary
{
publicstaticvoid
main(String[]args) {
byte[]binary;//声明数组
longdata; for(intd=1;d<=5;d++){ data=(long)(Math.random()*1000000000000000L);
System.out.print("("+data+")=>"); binary=toBinary(data);
printBinary(binary); } }publicclassDecimaltoBinary70publicstaticbyte[]toBinary(longdata){
byte[]b=new
byte[64]; for(inti=63;data!=0;i--){ b[i]=(byte)(data%2);data=data/2; }
returnb;}publicstaticbyte[]toBinary(71
publicstatic
void
printBinary(byte[]b) {
inti=0;
while(i<64&&b[i]==0)i++;
for(;i<64;i++)
System.out.print(b[i]);
System.out.println(); }} publicstaticvoidprintBinar72复合类型数组元素的初始化
如果是复合类型的数组,也就是元素是对象的数组,其初始化需要经过两步实现。
(1)初始化数组。为数组开辟存储空间。格式:类型
数组名[]=new
类型[数组大小];(2)初始化数组元素。为每个数组元素所代表的类对象开辟空间并进行初始化。格式:数组[下标]=new类型[参数];
例子:Catobjcat[]=
newCat[3];
objcat[0]=
newCat(“Tom”)
复合类型数组元素的初始化如果是复合类型的数组,也就732.11二维数组Java语言中,多维数组被当作是数组的数组来看待和处理,它是一维数组的特殊集合。其中二维数组是较为典型的代表。
二维数组是由一维数组的每个元素又是一维数组的引用构成的在Java中,每个一维数组元素引用的一维数组所含的元素数目可以不同2.11二维数组Java语言中,多维数组被当作是数组的数742.11二维数组的创建
声明格式如下:
类型
数组名[][]
类型
[][]数组名例如intintArr[][]=newint[10][5]
intintArr[][]=newint[10][]; intArr[0]=newint[20];
Stringresume[][]2.11二维数组的创建 声明格式如下:752.11二维数组的初始化
初始化时要表明每个初始值的行列关系。赋非默认初始值时,不需要实现创建数组型变量。int[][]int_array={{1,2,3},{4,5,6},{7,8,9}}
注意:无论采取何种初始化方法,数组中的元素都必须是同一类型,这是任何时候都必须遵守的原则!
2.11二维数组的初始化 初始化时要表明每个初始值的行列762.11二维数组的引用 二维数组必须利用两个下标才能唯一确定某个元素,一个是行标,表示第几个一维数组;另一个是列标,表示一维数组中的哪一个元素。
例、二维数组的引用
数组名[下标N1][下标N2]
2.11二维数组的引用 二维数组必须利用两个下标才能唯77publicclassYangHui{publicstaticvoidmain(Stringargs[]){
int[][]data=newint[10][];for(inti=0;i<10;i++)data[i]=newint[i+1];data[0][0]=1;for(inti=1;i<10;i++){data[i][0]=1;data[i][i]=1;for(intj=1;j<i;j++)data[i][j]=data[i-1][j-1]+data[i-1][j];}for(inti=0;i<10;i++){for(intj=0;j<=i;j++)System.out.print(data[i][j]+"");System.out.println();}}}利用二维数组构造杨辉三角形前10行的内容publicclassYangHui利用二维数组构造杨辉782.12字符串常量String在Java语言中,提供了两种字符串:一种是字符串常量,它是用String标准类实现的;另一种是可编辑修改的字符串,它是用StringBuffer标准类实现的(p78)。2.12字符串常量String在Java语言中,提供了两79在使用Sting类对象时,需要注意下面几点:在Java语言中,字符串直接量中的每个字符占用两个字节。如果声明String类对象后,该对象没有引用任何一个字符串,就应该赋予null。String类对象所引用的字符串不能修改。在使用Sting类对象时,需要注意下面几点:80第2章Java程序设计语言概述第2章Java程序设计语言概述812.1Java程序设计语言的发展1995年5月发布Java和HotJava浏览器1995年9月宣布将提供Java开发工具1995年12月发布JavaScript1996年推出JDK1.01996年颁布JavaBeans规范1997年推出JDK1.1.21998年12月Sun公司发布了Java2平台2.1Java程序设计语言的发展1995年5月发布Java822.1Java程序设计语言的发展1999年6月SUN公司重新定义了Java技术的框架,形成了现在的3个版本:1、J2ME(Java2MicroEdition)——以消费性电子产品为目标的高度优化的Java运行环境。2、J2SE(Java2StandardEdition)——开发客户端应用程序的Java标准平台,是Java2的标准版,主要用于桌面应用软件的编程。3、J2EE(Java2EnterpriseEdition)——是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。具有模块化、可重用的JavaBean组件——一个java类(参考教材388页)。。要学习j2ee就要先学习j2se2.1Java程序设计语言的发展1999年6月SUN公司重832.2Java程序设计语言的基本特征简捷性面向对象分布式健壮性结构中立安全性可移植性解释执行高性能多线程2.2Java程序设计语言的基本特征简捷性安全性842.3Java程序的运行环境编译型源程序字节码程序Java源程序可执行程序exe裸机操作系统解释器编译连接编译运行解释运行.java.classJava是解释型的高级编程语言Java虚拟机2.3Java程序的运行环境编译型源程序字节码程序Java85运行Java程序的基本过程1、利用编辑器编写Java源程序源文件名:主类名.java2、利用编译器将源程序编译成字节码文件字节码文件名:源文件名.class3、利用虚拟机(解释器)运行工作过程:载入、代码校验、解释执行运行Java程序的基本过程1、利用编辑器编写Java源程序86常见的Java开发环境从网络上直接下载JDK(JavaDeveloperKit),并利用命令行方式操作javac(编译器);java(解释器)Java集成开发环境(IDE)VisualJ++、VisualCafe、JBuilder、EclipseJava教学集成开发环境BlueJ(需要JDK1.3以上版本的支持)、JCreater是一个JAVA集成开发环境(IDE)。其最大特点是与机器中所装的JDK完美结合,是其它任何一款IDE所不能比拟的。其实,有很多高手根本不用这些工具,随便一个文本编辑器(如记事本)+JDK就可编一个非常完美的绝对的纯的Java程序.刚开始学习j2se先建议不要使用IDE,然后渐渐的过渡到使用IDE开发常见的Java开发环境从网络上直接下载JDK(JavaDe872.4Java程序的基本结构Application应用程序:它是一个完整的应用程序,可以利用Java虚拟机独立地运行。
Applet(小应用程序):它不是一个完整的应用程序,而是框架程序中的一个模块,因此只能在WWW浏览器环境下运行。
2.4Java程序的基本结构Application应用程88Application应用程序举例importjava.io.*;publicclass
MyFirstJavaProgram{
publicstaticvoid
main(String[]args){
System.out.println(“ThisisthefirstJavaApplication”);}}Application应用程序举例importjava.i89JavaApplication程序基本结构import语句class{publicstaticvoidmain(String[]args){}}主类名称方法体JavaApplication程序基本结构import语句90Applet应用程序举例importjava.applet.*;importjava.awt.*;publicclassMyFirstJavaApplet
extends
Applet{publicvoidpaint(Graphicsg){g.drawString(“ThisisthefirstAppletprogram.”,50,50);}}Applet应用程序举例importjava.apple91JavaApplet小应用程序基本结构importjava.applet.*;importjava.awt.*;class
extendsApplet{
}类名称类成员声明Applet是一个系统类,是容器类java.awt.Panel类的子类,封装了init(),start(),stop(),paint(),destroy()等方法。JavaApplet小应用程序基本结构importjav92<HTML><HEAD><TITLE>FirstJavaApplet</TITLE></HEAD><BODY><HR><APPLETCODE=FirstJavaApplet.classWIDTH=500HEIGHT=500 CODEBASE=“.”></APPLET></BODY></HTML>
Codebase指定了Java程序在网络上何处可以找到需要的类。<HTML>Codebase指定了Java程93JavaApplet工作原理HTML文件嵌入Appletwww服务器www服务器www浏览器请求HTML文件下载HTML文件请求Applet字节码下载Applet字节码解释执行Applet字节码JavaApplet工作原理HTMLwww服务器www服94编写Java程序需要注意的几点Java区分大小写一个程序中可以有一个或多个类,但其中只能有一个主类源程序编写完毕,应该用主类名作为文件名,再加后缀.java
存储成磁盘文件编写Java程序需要注意的几点Java区分大小写952.5Java程序的基本类型数据类型决定了参与操作的变量、常量和表达式的取值类别、取值范围以及能够实施的操作行为。Java语言属于强类型语言,即对于程序中出现的所有变量和表达式,在编译的时候就要求有明确的数据类型,这样才可以由编译程序在编译期间对所有的操作进行数据类型相容性的检查。Java支持的数据类型分为两个类别:基本数据类型和引用数据类型2.5Java程序的基本类型数据类型决定96Java的基本数据类型布尔类型:boolean字符类型:char整数类型:byte、short、int、long浮点类型:float、doubleJava的基本数据类型布尔类型:boolean97数据类型占用二进制位数取值范围默认值boolean(布尔类型)8True或falsefalsechar(字符类型)16\u0000~\uFFFF(0~65535)\u0000byte(字节类型)8-128~127(-27~(27-1))0short(短整型)16-32768~32767(-215~(215-1))0int(整型)32-2147483648~2147483647(-231~(231-1))0long(长整型)64(-263~(263-1))0float(单精度浮点型)32+1.4E-45~+3.4028235E+380.0fdouble(双精度浮点型)64+4.9E-324~+1.7976931348623157E+3080.0Java语言的基本数据类型在Java语言中,基本数据类型的数据所占用的二进制位数是固定的,与具体的软硬件环境无关。每一种数据类型都有一个默认的初值。所有基本类型的关键词都是小写的。在把容量大的类型转换为容量小的类型时必须使用强制类型转换。数据类型占用二进制位数取值范围默认值boolean8True98boolean只有“true”和“false”两个取值,分别代表“真”和“假”。特点:不能够与任何其他类型进行相互的类型转换操作,不对应于任何整数值,只能参与逻辑关系运算。不能用1和0代表true和false。boolean只有“true”和“false”两个取值,分别99charJava语言规定,字符采用Unicode编码,每个字符占用两个字节。ASCII字符集是Unicode字符集的一个子集,并且在这两个字符集中,前128个编码所对应的字符完全相同,只是每个字符占用的二进制位数不同。转义符表示一个Unicode字符\uxxxxcharJava语言规定,字符采用Unicode编码,每个字100byte、short、int、long上面4种数据类型都属于整型数值类型。byte1个字节short2个字节int3个字节long4个字节Java语言中所有整数类型均为符号数byte、short、int、long上面4种数据类型都属于101float、doublefloat单精度32位double双精度64位Java语言中的浮点数值表示遵循IEEE754标准。它不仅包括正零(+0.0)、负零(-0.0)、正无穷大(Infinity)、负无穷大(-Infinity)和一个特别的值NaN(非法的浮点运算结果)。float、doublefloat单精度1022.6标识符、关键字、分隔符、常量、变量【标识符】
Java的标识符由字母、数字、_和$组成,长度不限。其中字母可以是大写或小写的英文字母,数字为0到9。标识符的第一个字符必须为字母、(_)或($)符号。标识符区分大小写。2.6标识符、关键字、分隔符、常量、变量【标识符】103标识符用来命名变量、符号常量、数组、方法、类、对象、接口、包等。为了提高程序的可读性,标识符最好“见名知义”,而且规范大小写的使用方式,标识符命名规范见P42。合法的标识符:IdentifieruserNameUser_Name_sys_value$changemy$Change非法的标识符:2mailroom#class标识符用来命名变量、符号常量、数组、方法、类、对象、接口、包104【关键字】又称保留字,是Java语言规定了特定含义的标识符。用户只能按照系统规定的方式使用,不能自行定义。关键字一律用小写字母表示。Java中的关键字有50个,按用途划分为:数据类型、语句、修饰、方法、类、接口、包,并保留了const和goto但并不使用。【关键字】又称保留字,是Java语言规定了特定含义的标识105数据和返回值类型:int,void,return……包/类/成员/接口:package,class,interface访问控制:public,private,protected循环及循环控制:if,switch,break例外处理:throw,try,finally保留词(无含义但不能使用):goto,const【关键字简单分类】数据和返回值类型:int,void,return……【关106【分隔符】分隔符被用来区分Java源程序中的基本成分(标识符、关键字、运算符和常量),分隔符分为注释、空白符和普通分隔符三种类别。【分隔符】分隔符被用来区分Java源程序中的基本成分(标107注释是为源程序增加必要的解释说明的内容,其目的是提高程序的可读性,书写注释是编写程序的良好习惯。Java中有三种形式的注释:
/*注释部分*/ //注释部分/**注释部分**/Java文档注释,可以通过javadoc生成类和接口的HTML格式的帮助文档。注释是为源程序增加必要的解释说明的内容,其目的是提高程序的可108第二种分隔符是空白符,包括空格、回车符、换行符和制表符(Tab键)等。各种Java基本成分之间的多个空白符与一个空白符的作用相同。第二种分隔符是空白符,包括空格、回车符、换行符和制表符(Ta109第三种是普通分隔符,具有确定的语法含义,必须按照特定的语法规定使用。它包括四种分隔符:{}大括号,用来定义类体、方法体、复合语句或对数组进行初始化。
;分号,是语句结束的标志。
,逗号,分隔方法的参数或声明的变量序列。
:冒号,用于分隔语句标号。第三种是普通分隔符,具有确定的语法含义,必须按照特定的语法规110【直接量】——基本数据类型和字符串类型的数值表示整型直接量:十、八、十六进制实型直接量:double、float(185.2f)字符直接量:单引号括起来(‘\n’)布尔直接量:true和false字符串直接量:双引号括起来【直接量】——基本数据类型和字符串类型的数值表示整型直接量:111【变量】在Java语言中,所有的变量必须先定义后使用。其格式为:数据类型
标识符1[=初值],[标识符2...];如果是基本数据类型,变量在声明时就为其分配内存空间;否则,还需要用new
为声明的变量分配空间。基本数据类型包括布尔类型、字符类型和数值类型。【变量】在Java语言中,所有的变量必须先定义后使用。其112【常量】在Java语言中,可将变量声明成final。final
floatPI=3.14159f;该类型变量在程序的运行过程中只被赋值一次,其值不能被更改,但并不要求一定在定义的同时为其赋值。【常量】在Java语言中,可将变量声明成final。1132.7Java程序的基本输入输出Applet应用程序的输入输出输入:利用图形用户界面的组件接收用户信息输出:以图形或图像的形式输出结果Application应用程序的输入输出字符界面:利用System.in.read输入,System.out.print和System.out.println输出图形用户界面:与Applet类似2.7Java程序的基本输入输出Applet应用程序的114字符界面的输入输出importjava.io.*;publicclassSimpleCharInOut{publicstaticvoidmain(String[]args){charch=‘‘;
System.out.print(“Enteracharacterplease:”);try{ch=(char)System.in.read();
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 科技驱动农产品电商
- 科技农业投资视角
- 专业房产经纪服务协议2024版范本版
- 二零二四宇通客车零部件销售代理及市场拓展合作协议3篇
- 2025年度电商新零售线下体验店合作合同3篇
- 专业销售服务协议书2024年3篇
- 2025年度跨境电商物流中心场地承包经营合同4篇
- 2025年度航空航天复合材料加工技术合同4篇
- 2025年度茶楼装修工程合同标准样本8篇
- 2025年度教育机构场地租赁保证金合同8篇
- 2024版塑料购销合同范本买卖
- 【高一上】【期末话收获 家校话未来】期末家长会
- JJF 2184-2025电子计价秤型式评价大纲(试行)
- GB/T 44890-2024行政许可工作规范
- 有毒有害气体岗位操作规程(3篇)
- 二年级下册加减混合竖式练习360题附答案
- 吞咽解剖和生理研究
- TSG11-2020 锅炉安全技术规程
- 汽轮机盘车课件
- 异地就医备案个人承诺书
- 苏教版五年级数学下册解方程五种类型50题
评论
0/150
提交评论