Java02(JAVA语言基础).ppt_第1页
Java02(JAVA语言基础).ppt_第2页
Java02(JAVA语言基础).ppt_第3页
Java02(JAVA语言基础).ppt_第4页
Java02(JAVA语言基础).ppt_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java语言基础,本章内容,Java程序的构成Java的关键字、标识符、各种数据类型Java的常量与变量Java的各种运算符结构化程序设计的三种基本流程数组的使用字符串的使用,Java语言基本语法风格,一切都是类严格区分大小写以分号结束语句表示代码块,注释,三种注释格式:/实现单行注释/*这是*一段注释,*它跨越了多个行*/*JDK的javadoc工具用这种注释信息能自动从程序中抽出类的公共接口形成文档。*/,java中的标识符,在Java编程语言中,标识符是赋予变量、类或方法的名称。变量、函数、类和对象的名称都是标识符,程序员需要标识和使用的东西都需要标识符。标识符可从一个字母、下划线_或美元符号$开始,随后也可跟数字、字母、下划线或美元符号。标识符是区分大小写,没有长度限制,可以为标识符取任意长度的名字。,非法的标识符:3dmaxclass98.3HelloWorld,合法的标识符:indentifierusernameuser_name_userName$username,Java中的关键字,数据类型,Java语言的数据类型有简单类型和复合类型。数据类型指明变量或表达式的状态和行为,数据类型决定了数的取值范围和运算符号。在Java语言数据类型可以分为两大类:基本类型和引用类型。基本类型是指不能再分解的数据类型,其数据在函数的调用中是以传值方式工作的;引用类型有时也称复合类型,它是可以分解为基本类型的数据类型,其数据在函数调用中是以传址方式来工作的。,数据类型,数据类型,基本数据类型,引用数据类型,数值型,字符型(char),布尔型(boolean),整数类型(byte,short,int,long),浮点类型(float,double),类(class),接口(interface),数组,八个基本数据类型,数据的表示,整型十进制(12),十六进制(0 x12),八进制(012)长整型13L单精度浮点数5.1f,.4f,2e3f,0f双精度浮点数5.1,.4,2e-3,0d布尔true和false,数据的表示,字符类型char使用char类型可表示单个字符,字符是用单引号括起来的一个字符,a,8等Java中的字符型数据是16位无符号型数据,它表示Unicode集,而不仅仅是ASCII集。其范围为065535与C语言类似,Java也提供转义字符,以反斜杠()开头,将其后的字符转变为另外的含义。r表示回车,相当于按下了回车键;n是换行;t是制表符,相当于table键;b是退格键,相当于BackSpace;是单引号,而“是双引号;是一个斜杠“”。,数据的表示,字符串“HelloWorld“,”123”,WelcomenXXXnullnull常量只有一个值,用null表示,表示对象的引用为空,常量与变量,在Java中,不同类型的数据既可以以常量的形式出现,也可以以变量的形式出现。常量就是指在程序执行期间其值不能发生变化的数据,常量是固定的。如整型常量123,实型常量3.1415926,字符常量A,布尔常量true等。常量:用保留字final来实现finaltypeSpecifiervarName=value;如:finaldoublePI=3.1415926;常量名习惯为大写,变量,变量的值是可以变化的,它的定义包括变量名、变量类型和作用域几个部分。注意以下几点:1、变量名必须是一个合法的标识符。变量名应具有一定的含义,以增加程序的可读性。2、变量类型可以为前面所说的任意一种数据类型。3、声明一个变量的同时也就指明了变量的作用域。,变量,变量可以有下面几种:局部变量、类变量、方法参数、例外处理参数局部变量是在一个方法内定义的变量,也被称作临时(temporary)变量。当执行进入一个方法时,局部变量被创建,当执行离开该方法时,局部变量被清除,它的作用域为它所在的代码块(整个方法或方法中的某块代码)。在一个确定的域中,变量名应该是唯一的。通常,一个域用大括号“”和“”来划定。,变量的声明,下面是几个变量的声明:inta,b,c;/定义a,b,c为int型变量doubled,e;/定义d,e为double型变量floatf=2.5f,g=5.8f;/定义f,g为float型变量,并赋初值其中,多个变量间用逗号隔开。在Java程序中在变量使用之前必须有初始值。,变量使用举例,publicclassTestScopepublicstaticvoidmain(Stringargs)intx=12;intz;intq=96;/x和q都可用intx=3;/错误的定义,Java中不允许有这种嵌套定义System.out.println(xis+x);System.out.println(qis+q);System.out.println(“zis”+z);/错误,z没有被初始化q=x;/*错误的行,只有x可用,q超出了作用域范围*/System.out.println(xis+x);,类型转换,Java程序里,将一种数据类型的常数或变量转换到另外的一种数据类型,称为类型转换。类型转换有两种:自动类型转换(或称隐含类型转换)和强制类型转换。在实际中常会将一种类型的值赋给另外一种变量类型。如果这两种类型是兼容的,Java将执行自动类型转换。下面的语句把int型数据赋值给long型数据,在编译时不会发生任何错误:inti=10;longj=i;,类型转换,低-高byte,short,char-int-long-float-double假若对主数据类型执行任何算术运算或按位运算,“比int小”的数据(char、byte、short)在正式执行运算之前,那些值会自动转换成int,这样一来,最终生成的值就是int类型。,类型转换,整型、实型、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算,转换从低级到高级。通常,表达式中最大的数据类型是决定了表达式最终结果大小的那个类型。例如:若将一个float值与一个double值相乘,结果就是double;如将一个int值和一个long值相加,则结果为long。,类型转换,不是所有的数据类型都允许隐含自动转换。longi=10;intj=i;这是因为当把占用位数较长的数据转化成占用位数较短的数据时,会出生信息丢失的情况,因而不能够自动转换。这时就需要利用强制类型转换,执行非兼容类型之间的类型转换。上面的语句写成下面的形式就不会发生错误:longi=10;intj=(int)i;,强制类型转换,(数据类型)变量名将占用位数较长的数据转化成占用位数较短的数据时,可能会造成数据超出较短数据类型的取值范围,造成“溢出”。如:longi=10000000000L;intj=(int)i;因为转换的结果已经超出了int型数据所能表示的最大整数(4294967295),造成溢出,产生了错误,java中的运算符,运算符是一种特殊符号,用以表示数据的运算、赋值和比较,一般由一至三个字符组成。运算符共分以下几种:算术运算符赋值运算符比较运算符逻辑运算符移位运算符,算术运算符,算术运算符的注意问题,“+”除字符串相加功能外,还能把非字符串转换成字符串,如:“x”+123的结果是“x123”。如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。但被模数是负数就另当别论了。对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。intx=3510;x=x/1000*1000;实际运行结果是3000,想想为什么?,算术运算符的应用技巧,思考题1:某个培训中心要为新到的学员安排房间,假设共有x个学员,每个房间可以住6人,让你用一个公式来计算他们要住的房间数?答案:(x+5)/6。这种算法还可用在查看留言板的分页显示上:其中x是总共的留言数,6是每页显示的留言数,结果就是总共有多少页。思考题2:假设你要让x的值在0至9之间循环变化,请写出相应的程序代码。答案:intx=0;while(true)x=(x+1)%10;,赋值运算符,注1:在JAVA里可以把赋值语句连在一起,如:x=y=z=5;在这个语句中,所有三个变量都得到同样的值5。注2:x+=3等效于x=x+3,等于*=,-=,/=依此类推。,比较运算符,注1:比较运算符的结果都是boolean型,也就是要么是true,要么是false。注2:比较运算符“=”不能误写成“=”,切记!切记!,逻辑运算符,注1:逻辑运算符用于对boolean型结果的表达式进行运算,运算的结果都是boolean型。,“inty=3;if(x!=0“inty=0 x80000000;x=x1;y=y1;System.out.println(“0 x800000001=”+Integer.toHexString(x);System.out.println(“0 x800000001=”+Integer.toHexString(y);运行结果如下:0 x800000001=c00000000 x800000001=40000000十六进制与二进的对比0 x8000000016=1000,0000,0000,0000,0000,0000,0000,000020 xc000000016=1100,0000,0000,0000,0000,0000,0000,000020 x4000000016=0100,0000,0000,0000,0000,0000,0000,00002,移位运算的注意事项及小技巧,移位运算符适用类型有byte、short、char、int、long对低于int型的操作数将先自动转换为int型再移位。对于int型整数移位ab,系统先将b对32取模,得到的结果才是真正移位的位数。例如:a33和a1结果是一样的,a32的结果还是a原来的数字。对于long型整数移位时ab,则是先将移位位数b对64取模。移位不会改变变量本身的值。如a1;在一行语句中单独存在,毫无意义。x1的结果和x/2的结果是一样的,x2和x*4的结果也是一样的。总之,一个数左移n位,就是等于这个数乘以2的n次方,一个数右移n位,就是等于这个数除以2的n次方。请思考:如何用程序实现求2的x次方。答案:y=1x;,运算符的优先级,如何避免多个运算符带来的问题,对于inta=2;intb=a+3*a+;这样的语句,b最终等于多少呢?作者试验得到的结果是8。对于inta=2;intb=(a+)+3*a;这样的语句,b最终等于多少呢?作者试验得到的结果是11。,如何避免多个运算符带来的问题,与其去思考其中的原因,我们还不如将上面的第二句改为几条语句来实现我们想要的结果。不要在一行中编写太复杂的表达式,也就是不要在一行中进行太多的运算在一行中进行太多的运算并不能为你带来什么好处,相反只能带来坏处,它并不比改成几条语句的运行速度快,它除可读行差外,还极容易出错。对于优先级顺序,大家不用刻意去记,有个印象就行如果你实在弄不清这些运算先后关系的话,就用括号或是分成多条语句来完成你想要的功能,因为括号的优先级是最高的,这也是软件编码规范的一个要求。,程序的流程控制,顺序结构选择结构循环结构顾名思义,顺序结构就是程序从上到下一行一行执行的结构,中间没有判断和跳转,直到程序结束。,if语句的选择结构,if(表达式)语句;if(表达式)语句1;else语句2;if(表达式1)语句1;elseif(表达式2)语句2;elseif(表达式2)语句3;else语句n;每个语句可以是使用组成的复合语句变量布尔表达式?语句1:语句2;If语句还可以嵌套使用if(表达式1)if(表达式2)语句1;else语句2;esleif(表达式2)语句3;else语句4;嵌套时最好使用确定层次界限,switch语句的选择结构,Switch(表达式)case常量表达式1:语句1;case常量表达式2:语句2;case常量表达式n:语句n;default:语句n;default语句是可选的,它接受除上面接受值的其他值,通俗的讲,就是谁也不要的都归它。case后面可以跟多个语句,这些语句可以不用大括号括起来。switch语句判断条件可接受int,byte,char,short型,不可以接受其他类型一旦碰到第一次case匹配,就会开始顺序执行以后所有的程序代码,而不管后面的case条件是否匹配,后面case条件下的代码都会被执行,直到碰到break语句为止。我们可以利用这个特点来用同一段语句处理多个case条件,while循环语句,While(表达式)语句;intx=1;while(x3)System.out.println(x=+x);x+;,脚下留心:while表达式的括号后面一定不要加“;”,do-while循环语句,do语句while(表达式);publicclassTestDopublicstaticvoidmain(Stringargs)intx=3;while(x=0)System.out.println(ok1);x+;inty=3;doSystem.out.println(ok2);y+;while(y=0);,for循环语句,for(表达式1;表达式2;表达式3)语句for(intx=1;x=10)break;System.out.println(x=+x);x+;,break语句,break语句可以中止循环中的子语句和switch语句。一个无标号的break语句会把控制传给当前(最内)循环(while,dofor或Switch)的下一条语句。如果有标号,控制会被传递给当前方法中的带有这一标号的语句。如:st:while(true)while(true)breakst;,continue语句,continue语句只能出现在循环语句(while,do,for)的子语句块中,无标号的continue语句的作用是跳过当前循环的剩余语句块,接着执行下一次循环。用continue语句的打印出0到10之间的所有奇数的程序例子。for(inti=0;i10;i+)if(i%2=0)continue;System.out.println(i);,数组,相同类型的成组数据对象原始类型或类类型数组声明为一个引用创建空间数组是一个对象,数组,典型的数组是用来集合相同类型的对象并通过一个名称来引用这个集合。你可以声明任何类型的数组原始类型或类类型:chars;chars;Pointp;/wherepointisaclass,数组,在Java编程语言中,即使数组是由原始类型构成,数组也是一个对象。声明不能创建对象本身,而创建的是一个引用,该引用可被用来引用数组。数组元素使用的实际存储器可由new语句或数组初始化软件动态分配。,创建数组,使用关键字new创建一个数组对象s=newchar20;p=newPoint100;p0=newPoint();用来指示单个数组元素的下标必须总是从0开始,并保持在合法范围之内大于0或等于0并小于数组长度。任何访问在上述界限之外的数组元素的企图都会引起运行时出错。下面还要谈到一些更好的数组初始化方法。,初始化数组,Stringnames;names=newString3;names0=“Georgianna”;names1=“Jen”;names2=“Simon”;用初始化值创建一个数组Stringnames=“Georgianna”,“Jen”,“Simon”;当创建一个数组时,每个元素都被初始化。,数组界限,所有数组的下标都从0开始intlist=newint10;for(inti=0;ilist.length;i+)System.out.println(listi);在Java编程语言中,所有数组的下标都从0开始。一个数组中元素的数量被作为length属性而存储;这个值被用来检查所有运行时访问的界限。如果发生了一个越出界限的访问,那么运行时的报错也就出现了。,多维数组,如何理解多维数组,类似我们的棋盘。java中并没有真正的多维数组,只有数组的数组,Java中多维数组不一定是规则矩阵形式。定义一个多维数组intxx;xx=newint3;xx0=newint3;xx1=newint2;,多维数组,多维数组中元素的引用方式,如:x12。规则矩阵数组可以在一条语句中产生,如:intxx=newint23;多维数组的静态初始化,如:intxx=3,2,7,1,5,6;,字符串的概念,字符串是内存中连续排列的一个或多个字符,不是字符数组。字符串在Java语言中提供了String和StringBuffer和StringBuilder(jdk1.5)三个类来实现。String类用于处理那些值不会发生改变的字符串StringBuffer与StringBuilder类用于那些可能发生变化的字符串处理,对象的创建,1、创建String对象:Stringstr=“ABC”;Stringstr=newString();str=“ABC”;charhelloArray=h,e,l,l,o;StringhelloString=newString(helloArray);2、创建StringBuffer对象:StringBuffer()StringBuffer(intlength)StringBuffer(Stringstr),String的常用方法(一),publicintlength()publiccharcharAt(intindex)publicvoidgetChars(intsrcBegin,intsrcEnd,chardst,intdstBegin)publicbooleanequals(Objectother)publicintcompareTo(StringanotherString)publicbooleanstartsWith(S

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论