《Java第三章.ppt》由会员分享,可在线阅读,更多相关《Java第三章.ppt(60页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、学习目标:学习目标:掌握掌握8种数据类型以及常量和变量的定义。种数据类型以及常量和变量的定义。掌握表达式及流程控制语句的使用。掌握表达式及流程控制语句的使用。重点:重点:掌握常用的数据类型和常量与变量的用法。掌握常用的数据类型和常量与变量的用法。表达式及流程控制语句的使用。表达式及流程控制语句的使用。Java 关键字关键字用于类和接口声明:用于类和接口声明:class、extends、implements、interface包引入和声明:包引入和声明:import、package数据类型:数据类型:boolean、byte、char、short、int、long、float、double某些数
2、据值:某些数据值:true、false、null流程控制:流程控制:if、else、while、do、switch、case、break、continue、default、for、return异常处理:异常处理:try、catch、throw、throws、finally修饰符:修饰符:abstract、public、private、static final、protected、native、synchronized transient、volatile操作符:操作符:instanceof创建对象:创建对象:new引用:引用:this、super方法返回值:方法返回值:void小结:小结:co
3、nst goto friendly、sizeof不是;不是;所有的都小写;所有的都小写;null、true、false小写。小写。Java标识符标识符赋予变量、常量、类、对象和方法的名称。赋予变量、常量、类、对象和方法的名称。规则:规则:首字母必须是字母、下划线或美元符首字母必须是字母、下划线或美元符 数字、字母、下划线和美元符组成数字、字母、下划线和美元符组成 不能有空格不能有空格 不能使用关键字不能使用关键字 大小写敏感大小写敏感 长度无限制长度无限制123、TRUE、thisone、-istrue、_istrue数据类型(数据类型(8种)种)1、逻辑型、逻辑型boolean boolea
4、n用来表示布尔型(逻辑)数据的数据类用来表示布尔型(逻辑)数据的数据类型。型。boolean型变量或常量的取值只有型变量或常量的取值只有true和和false两个。两个。true代表代表“真真”,false代表代表“假假”。占。占1个个字节字节2、字符型、字符型char 使用使用char类型可表示单个字符,用单引号括起来类型可表示单个字符,用单引号括起来的一个字符,如的一个字符,如q,H等。它在内存中占等。它在内存中占2个个字节。它表示的是字节。它表示的是Unicode集。用集。用“”引用的文引用的文字是字符串类型,不是字符类型。字是字符串类型,不是字符类型。u0000uFFFFJava也提供
5、转义字符,以反斜杠(也提供转义字符,以反斜杠()开头,)开头,:单引号字符单引号字符 ”:双引号字符双引号字符:反斜扛字符反斜扛字符 r:回车回车n:换行换行 f:进纸进纸t:水平制表符水平制表符 b:退格退格 字符型的四种赋值方式:字符型的四种赋值方式:char a=a;char a=97;char a=u0061;char a=0 x61;int i=97;char a;a=i;Chardef.java3、整数型、整数型byte、short、int、long 在内存中所占长度不同,分别是在内存中所占长度不同,分别是1,2,4,8字节。表示的范围是不一样的。字节。表示的范围是不一样的。整数默
6、认为整数默认为int类,如在其后有一个字母类,如在其后有一个字母“L”或或“l”则表示为长整型值。则表示为长整型值。十进制整数,如十进制整数,如123,-314,0 八进制整数,要求以八进制整数,要求以0开头,如开头,如012,-021 十六进制整数,要求以十六进制整数,要求以0 x开头,如开头,如0 x12数据类型数据类型占用位数占用位数 取值范围取值范围缺省值缺省值byte8-2727_10short16-215 215_10int32-231231_10long64-263263_10float320.0double640.0char160216-1u0000boolean8true f
7、alsefalse4、浮点型浮点型double,float 如果一个数包括小数点或指数部分,或者在数字如果一个数包括小数点或指数部分,或者在数字后带有字母后带有字母F或或f(float)、)、D或或d(double),则则该数为浮点数。如果不明确指明浮点数的类型,则该数为浮点数。如果不明确指明浮点数的类型,则认为是认为是double。如:如:3.14159 2.08E25 6.56f float为单精度为单精度(32位位)、double为双精度为双精度(64位位).初始值初始值注意:注意:1、字符型、字符型 占占2个字节,采用个字节,采用Unicode编码,四种赋值方式。编码,四种赋值方式。2
8、、布尔型、布尔型 只有两个值只有两个值 true false.3、整型、整型注意取值范围,防止溢出。注意取值范围,防止溢出。整数变量不允许直接赋值给字符整数变量不允许直接赋值给字符 默认是默认是int、float MoRen.java常量常量 Java中常用的常量有布尔常量、整型常量、字中常用的常量有布尔常量、整型常量、字符常量、字符串常量和浮点常量。符常量、字符串常量和浮点常量。与与C、C+语言不同,语言不同,Java中不能通过中不能通过#define命令把一个标识符定义为常量。命令把一个标识符定义为常量。常量的声明一般格式为:常量的声明一般格式为:final 类型名类型名 标识符标识符=值
9、;值;例如:例如:final float PI=3.14 变量变量最简单变量的声明格式如下:最简单变量的声明格式如下:类型名类型名 用户标识符用户标识符;声明变量时,一般要注意以下几点:声明变量时,一般要注意以下几点:(1)不得使用没有事先声明的变量,这样会导)不得使用没有事先声明的变量,这样会导致程序编译错误。致程序编译错误。(2)不得重复定义变量。)不得重复定义变量。(3)变量名要规范。)变量名要规范。(4)注意各种类型的取值范围)注意各种类型的取值范围例如:例如:int m=564;float f=3.1f;例题例题已知圆的半径已知圆的半径r=9,求圆的面积求圆的面积S。S=r2 定义常
10、量定义常量PI=3.14 定义一个变量整型定义一个变量整型r 浮点型浮点型S int r=9;final float PI=3.14f;float S;Mianji.java输入字符串并赋给输入字符串并赋给str String str=“”;System.out.print(“input a string:”);try BufferedReader br=new BufferedReader(new InputStreamReader(System.in);str=br.readLine();catch(IOException e)编写一个程序,接受用户输入字符串,然后转编写一个程序,接受用户
11、输入字符串,然后转化为整型数据输出。化为整型数据输出。整型字符串转化成整型数字整型字符串转化成整型数字 int i;String s;i=Integer.parseInt(s);getNumber.java接受用户输入浮点型字符串,并转化成浮点型接受用户输入浮点型字符串,并转化成浮点型数字输出。数字输出。Double.valueOf(s).doubleVaule()getDouble.java整型字符串转化成整型数字整型字符串转化成整型数字String s=“”;Integer.parseInt(s)Integer.valueOf(s).intVaule()浮点型字符串转化成浮点型数字浮点型字
12、符串转化成浮点型数字 Double.valueOf(s).doubleVaule()Double.parseDouble(s)getNumber.javagetDouble.java输入圆的半径,输出圆的面积。输入圆的半径,输出圆的面积。参照参照3-2、3-3利用那两个函数利用那两个函数 (用两种方法实现)(用两种方法实现)赋值与强制类型转换赋值与强制类型转换赋值:变量或对象表达式;赋值:变量或对象表达式;隐含类型转换隐含类型转换 低低高高(byte,short,charintlongfloatdouble)强制类型转换强制类型转换 (数据类型数据类型)变量名或者表达式变量名或者表达式 byt
13、e by1=10;int int1;int1=by1;by1=(byte)in1;强制类型转换可能引起数据丢失强制类型转换可能引起数据丢失 int i=50000000;long j=i*100;Yichu.java3.3表达式表达式按照运算符功能来分,基本的运算符包括算术按照运算符功能来分,基本的运算符包括算术运算符、关系运算符、逻辑运算符、位运算符、运算符、关系运算符、逻辑运算符、位运算符、其他运算符等。其他运算符等。表达式由变量、常量、运算符号组成。表达式由变量、常量、运算符号组成。表达式可以成为被操作对象也可以成为独立语表达式可以成为被操作对象也可以成为独立语句。句。算术运算算术运算
14、双目运算符:双目运算符:+、-、*、/、%单目运算符:单目运算符:+、-、-(求相反数)等。(求相反数)等。在算术运算中,有以下值得注意的地方:在算术运算中,有以下值得注意的地方:(1 1)只只有有整整数数类类型型(int,long,short)的的数数据据才才能能进进行行取取余。余。(2 2)整数除法会直接砍掉小数,而不是进位。)整数除法会直接砍掉小数,而不是进位。int i=1/2;int i=(float)1)/2;(3)+、-有前后之分。有前后之分。+i(前前缀缀+)在在使使用用i之之前前,使使i的的值值加加1,因因此此执执行行完完+i后,整个表达式和后,整个表达式和i的值均为的值均为
15、i+1;i+(后后缀缀+)在在使使用用i之之后后,使使i的的值值加加1,因因此此执执行行完完i+后,整个表达式的值为后,整个表达式的值为i,而,而i的值变为的值变为i+1。例子:例子:int j=15,k=15;int x=+j;int y=k+;X=j=K=y=结果:结果:x16j 16y15k16int i=3;System.out.println(+i);System.out.println(i);44int i=3;System.out.println(i+);System.out.println(i);34UseArthmetic.java关系运算符关系运算符关关系系运运算算符符用用
16、来来比比较较两两个个值值,返返回回布布尔尔类类型型的的值值truetrue或或falsefalse。关关系系运运算算符符都都是是二二元元运运算算符符,如如下所示。下所示。op1op2 op1 op1op2 op1大于大于op2 trueop2 true =op1=op2 op1 =op1=op2 op1大于等于大于等于op2 trueop2 true op1op2 op1 op1op2 op1小于小于op2 trueop2 true =op1=op2 op1 =op1=op2 op1小于等于小于等于op2 trueop2 true =op1=op2 op1 =op1=op2 op1等于等于op
17、2 trueop2 true !=op1!=op2 op1 !=op1!=op2 op1不等于不等于op2 trueop2 trueUseRelation.java逻辑运算逻辑运算&、|非简洁与、或非简洁与、或&、|简洁与、或简洁与、或!、!、取反、异或取反、异或注意:注意:简洁与非简洁区别:非简洁的运算过程是先对两简洁与非简洁区别:非简洁的运算过程是先对两表达式进行运算,然后再对表达式结果执行相应表达式进行运算,然后再对表达式结果执行相应的与、或。而简洁运算符右边的可能不被执行。的与、或。而简洁运算符右边的可能不被执行。Boolean.valueOf().booleanValue()UseL
18、ogical.java 对对“或运算或运算”如果运算符左边的表达式的值为如果运算符左边的表达式的值为truetrue,则整个表达式的结果为则整个表达式的结果为truetrue,不必对运算符右边的不必对运算符右边的表达式再进行运算;同样,对表达式再进行运算;同样,对“与运算与运算”,如果左边,如果左边表达式的值为表达式的值为falsefalse,则不必对右边的表达式求值,则不必对右边的表达式求值,整个表达式的结果为整个表达式的结果为falsefalse。逻辑表达式往往可用于表示比较复杂的条件,例逻辑表达式往往可用于表示比较复杂的条件,例如要判别某一年如要判别某一年year是否为闰年,闰年的判别条
19、件是否为闰年,闰年的判别条件是:能被是:能被4整除但不能被整除但不能被100整除,或者能被整除,或者能被400整整除。除。(year%4=0&year%100!=0)|(year%400=0)当当year为某一数值时,上述表达式值为为某一数值时,上述表达式值为true,则则year年为闰年,否则为非闰年。年为闰年,否则为非闰年。位运算位运算位运算是以二进制比特位为单位进行的操作和位运算是以二进制比特位为单位进行的操作和运算,操作数和结果都是整型量。运算,操作数和结果都是整型量。运算符运算符执行一个左移位。作左移位运算时,执行一个左移位。作左移位运算时,右边的空位补右边的空位补0。在不产生溢出的
20、情况下,数。在不产生溢出的情况下,数据左移据左移1位相当于乘以位相当于乘以2。例如:。例如:int a=64,b;b=a与与)运算符运算符执行一个右移位(带符号),左边执行一个右移位(带符号),左边按符号位补按符号位补0或或1运算符运算符同样是执行一个右移位,只是它执同样是执行一个右移位,只是它执行的是不带符号的移位。也就是说对以补码表行的是不带符号的移位。也就是说对以补码表示的二进制数操作时,在带符号的右移中,右示的二进制数操作时,在带符号的右移中,右移后左边留下的空位中添入的是原数的符号位移后左边留下的空位中添入的是原数的符号位(正数为(正数为0,负数为,负数为1);在不带符号的右移中,)
21、;在不带符号的右移中,右移后左边留下的空位中添入的一律是右移后左边留下的空位中添入的一律是0。BitOp.java三目条件运算符(?:)三目条件运算符(?:)在在Java语言中,三目条件运算符(?:)与语言中,三目条件运算符(?:)与C语言中的使用规则是完全一致的,使用的形式语言中的使用规则是完全一致的,使用的形式是:是:x?y:z;上面的三目条件运算的规则是:先计算表达式上面的三目条件运算的规则是:先计算表达式x的值,若的值,若x为真,则整个三目运算的结果是表为真,则整个三目运算的结果是表达式达式y的值;若的值;若x为假,则整个三目运算的结果为假,则整个三目运算的结果是表达式是表达式z的值。
22、的值。int a=3,b=4;int max=ab?a:b;max的值为的值为4。三目条件运算是可以嵌套的,如有以下的三目条件运算是可以嵌套的,如有以下的语句,则语句,则max表示的是表示的是a、b、c三个数中的三个数中的最大值。最大值。int a=3,b=4,c=5;int max=(ab?a:b)c?(ab?a:b):c;结果:结果:max=5复杂赋值运算符复杂赋值运算符表表 3-10对象运算符对象运算符instanceof用来判断一个对象是否用来判断一个对象是否是某一个类或者其子类的实例。如果对象是该是某一个类或者其子类的实例。如果对象是该类或者其子类的实例,返回类或者其子类的实例,返回
23、ture;否则返回;否则返回flase。括号运算符()的优先级是所有运算符中最高括号运算符()的优先级是所有运算符中最高的,所以它可以改变表达式运算的先后顺序。的,所以它可以改变表达式运算的先后顺序。在有些情况下,它可以表示方法或函数的调用。在有些情况下,它可以表示方法或函数的调用。方括号运算符方括号运算符 是数组运算符。是数组运算符。优先级指不同运算执行的先后顺序,结合性指优先级指不同运算执行的先后顺序,结合性指并列的相同运算的执行顺序。并列的相同运算的执行顺序。优先级和结合性优先级和结合性int a=3,b=-5;boolean f=true;-a%b+a=1&ab)if(ac)max=a
24、;else max=c;else if(bc)max=b;else max=c;FindMax1.javaFindMax.java2、switch语句语句switch(表达式)(表达式)case 判断值判断值1:语句块:语句块1 case 判断值判断值2:语句块:语句块2 case 判断值判断值3:语句块:语句块3 case 判断值判断值n:语句块:语句块n default:语句块:语句块n+1 Score.java循环语句循环语句Java中有三种语句来实现循环结构,分别是中有三种语句来实现循环结构,分别是while,do-while和和for语句。语句。1、while while(条件表达式
25、条件表达式)循环体循环体 例子:水仙花数例子:水仙花数 一个三位数,它的各个数字的立方和等于一个三位数,它的各个数字的立方和等于这个三位数本身。这个三位数本身。i=n/100;j=(n-i*100)/10;k=n%10;Math.pow(m,n)m的的n次方次方Narcissus.java2、do-while语句语句 do 循环体语句;循环体语句;while(条件表达式条件表达式)do-while循环与循环与while循环的不同在于:它先循环的不同在于:它先执行循环中的语句,然后再判断条件是否为真,执行循环中的语句,然后再判断条件是否为真,如果为真则继续循环;如果为假,则终止循环。如果为真则继
26、续循环;如果为假,则终止循环。因此,因此,do-while循环至少要执行一次循环语句。循环至少要执行一次循环语句。ShowCharVaule.javafor语句语句for(表达式表达式1;表达式;表达式2;表达式;表达式3)循环体语句;循环体语句;表达式表达式1一般是一个赋值语句,它用来给循环一般是一个赋值语句,它用来给循环控制变量赋初值;表达式控制变量赋初值;表达式2是一个布尔类型的是一个布尔类型的表达式,它决定什么时候退出循环;表达式表达式,它决定什么时候退出循环;表达式3一般用来修改循环变量,控制变量每循环一次一般用来修改循环变量,控制变量每循环一次后按什么方式变化。这三个部分之间用后按
27、什么方式变化。这三个部分之间用“;”分开。分开。求求110的和。的和。for(int i=1;i10;i+)sum+=i;forzone.java11000的完全数:等于的完全数:等于所有因子的和(包括所有因子的和(包括1不不包括本身)。包括本身)。for(int i=1;i1000;i+)for(int j=1;ji;j+)i%j=0;y+=j;PerfectNum.javacontinue 作用:提前结束本轮循环,必须在循环内部作用:提前结束本轮循环,必须在循环内部 for(int i=1;i100;i+)if(i%2=0)continue;System.out.println(i);不提
28、倡带标号的不提倡带标号的continue语句,因为它破坏循语句,因为它破坏循环结构的结构化思想;环结构的结构化思想;break 语句语句作用:提前结束本层循环,必须用在循环内部作用:提前结束本层循环,必须用在循环内部,本层涉及本层涉及循环的嵌套循环的嵌套 for(int i=1;i100;i+)for(int j=2;ji;j+)if(i%j=0)break;System.out.println(i);break存在两种情况:存在两种情况:switch 循环循环for(int i=0;i 5)break;将将break改变成改变成continue后,结果又是怎样的?后,结果又是怎样的?brea
29、k运行结果:运行结果:0 1 2 3 4 5 6continue运行结果:运行结果:0 1 2 3 4 5 6 7 8 9BrCon.java跳转语句跳转语句1、continue语句语句 continue则停止执行当前的循环,开始新的循则停止执行当前的循环,开始新的循环。环。2、break 语句语句 break用于强行退出循环,不执行循环中剩余的用于强行退出循环,不执行循环中剩余的语句。语句。break语句和语句和continue语句都有两种使用的形式:语句都有两种使用的形式:一种是不带标号的一种是不带标号的break语句和语句和continue语句;语句;一种是带标号的一种是带标号的brea
30、k语句和语句和continue语句。语句。1.不带标号的不带标号的break语句和语句和continue语句语句 【例例2.19】使用使用break语句跳出循环体语句跳出循环体 【例例2.20】使用使用continue语句终止当前循环语句终止当前循环 2.带标号的带标号的break语句和语句和continue语句语句 标号应该定义在某一个循环语句之前,紧靠在标号应该定义在某一个循环语句之前,紧靠在循环语句的前方,用来标志这个循环结构,在标号和循循环语句的前方,用来标志这个循环结构,在标号和循环之间置入任何语句都是不明智的行为。环之间置入任何语句都是不明智的行为。而在循环之前设置标号的唯一理由是
31、:我们希而在循环之前设置标号的唯一理由是:我们希望在其中嵌套另一个循环或者一个开关,望在其中嵌套另一个循环或者一个开关,break和和continue关键字若随同标号使用,它们就会中断到存关键字若随同标号使用,它们就会中断到存在标号的地方。在标号的地方。3、return语句语句 return语句的一般格式是:语句的一般格式是:return 表达式;表达式;return语句用来使程序流程从方法调用中返回,语句用来使程序流程从方法调用中返回,表达式的值就是调用方法的返回值。如果方法表达式的值就是调用方法的返回值。如果方法没有返回值,则没有返回值,则return语句中的表达式可以省语句中的表达式可以
32、省略。略。射雕英雄传射雕英雄传的朋友,一定还记得黄蓉遇上神算子瑛姑,的朋友,一定还记得黄蓉遇上神算子瑛姑,给她出的三道题目中有一题是这样的:今有物不知其数,给她出的三道题目中有一题是这样的:今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何三三数之剩二,五五数之剩三,七七数之剩二,问物几何?public class Calc public static void main(String args)int x;for(x=0;x100;x+)if(x%3=2)&(x%5=3)&(x%7=2)System.out.println(这个数字是:+x);/end of main/end
33、 of Calc数组(数组(P134)数组是相同数据类型的元素的集合。数组是相同数据类型的元素的集合。数组中的各元素是有先后顺序的数组中的各元素是有先后顺序的每个数组元素用整个数组的名字和它自己在数每个数组元素用整个数组的名字和它自己在数组中的位置表达。组中的位置表达。a0,a1声明:声明:int a;int a3;数组类型数组类型 数组名数组名;数组类型;数组类型 数组名;数组名;创建数组空间:创建数组空间:a=new int10;int a=new int10;a.length 注意注意 下标越界下标越界 int a=1,2,3,4,5,6ArrayDef.java 声明:声明:int n
34、um;int num;创建:创建:num=new int3;int num=new int3;赋值:赋值:num0=1;num1=4;int num=1,2,6;省略省略 new int num=new int 1,2,3;错误:错误:int num3;int num;num=1,2,3;int num=new int31,2,3;习题习题3.9 接受用户输入的一个浮点数,把整数部分和小接受用户输入的一个浮点数,把整数部分和小数部分分别输出。数部分分别输出。a=(int)i;b=i-a;System.out.println(整数部分为:整数部分为:+a);System.out.println(
35、小数部分为:小数部分为:+b);Ex3_9_1.java问题在于问题在于并不是所有的小数都可以用二进制浮点数来并不是所有的小数都可以用二进制浮点数来精确表示的。精确表示的。方法一:使用方法一:使用printf设置精度设置精度 System.out.printf(“%.2f”,2.00-1.10);方法二:使用字符串方法二:使用字符串 indexOf(char)substring(i,j)substring(i)方法三:执行精确小数运算的方法三:执行精确小数运算的BigDecimal Ex3_9_2.javaEx3_9_3.javaAPI.textPrintf.java3.10 编写一个字符界面
36、的编写一个字符界面的Java Application程程序,接受用户输入的序,接受用户输入的10个整数,比较并输出其个整数,比较并输出其中的最大值和最小值。中的最大值和最小值。Ex3_10_1.javaEx3_10_2.java3.11编写一个字符界面的编写一个字符界面的Java Application程序,程序,接受用户的字符,以接受用户的字符,以“#”标志输入的结束;标志输入的结束;比较并输出按字典序最小的字符。比较并输出按字典序最小的字符。ch=(char)System.in.read();System.in.skip(2);3.16 编写图形界面下的编写图形界面下的java Apple
37、t程序,接程序,接受用户输入的两个数据为上下限,然后输出上受用户输入的两个数据为上下限,然后输出上下限之间的所有素数。下限之间的所有素数。数据类型类(数据类型类(124)数据类型类对应基本数据类型,名字相似,主数据类型类对应基本数据类型,名字相似,主要用来操作和处理它所对应的基本数据类型量要用来操作和处理它所对应的基本数据类型量Boolean booleanCharacter charInteger int Long longDouble doubleFloat floatIntegerpublic Integer(int i)public Integer(String str)MAX_VALUE 和和MIN_VALUE字符串与字符串与int量相互转化量相互转化 public String toString(int i);将将int量转化为字符串量转化为字符串 public static int parseInt(String s)public static Integer valueOf(String s)Integer.parseInt(String s)Integer.valueOf(String s).intValue();IntTest.java
限制150内