java程序设计02_第1页
java程序设计02_第2页
java程序设计02_第3页
java程序设计02_第4页
java程序设计02_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

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

文档简介

1、 本章开始学习本章开始学习Java语言编程基础知识,主要包括数据类型、语言编程基础知识,主要包括数据类型、常量与变量、运算符与表达式,以及对象变量和图形界面的常量与变量、运算符与表达式,以及对象变量和图形界面的基本知识等。基本知识等。本章要点l2.1 Java程序的结构程序的结构l2.2 变量和常量 l2.3 运算符和表达式 l2.4 对象变量 l思考与练习思考与练习2l2.1 Java程序的结构程序的结构 2.1.1 Java程序布局程序布局 2.1.2 Java程序的组成程序的组成 2.1.3 注解语句注解语句 2.1.4 打印语句打印语句 2.1.5 转义符号和统一码转义符号和统一码 实

2、例实例4 使用字符绘制图画使用字符绘制图画 实例实例5 绘制菱形图案绘制菱形图案2.2 变量和常量变量和常量 2.2.1 数据类型数据类型 2.2.2 变量和常量变量和常量 实例实例6 打印各种类型的数据打印各种类型的数据 实例实例7 数字交换数字交换l2.3 运算符和表达式运算符和表达式2.3.1 算术运算符和算术表达式算术运算符和算术表达式2.3.2 关系运算符和关系表达式关系运算符和关系表达式2.3.3 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式2.3.4 赋值运算符和赋值表达式赋值运算符和赋值表达式2.3.5 条件运算符和条件表达式条件运算符和条件表达式2.3.6 位运算符和位表达式

3、位运算符和位表达式2.3.7 数据类型转换数据类型转换2.3.8 优先级优先级 2.4 对象变量对象变量2.4.1 String类类2.4.2 Math类类2.4.3 字符串和数字的相互转换字符串和数字的相互转换实例实例8 随机产生四则运算题随机产生四则运算题2.4.4 键盘输入数据键盘输入数据实例实例9 大小写转换大小写转换实例实例10 求二元一次方程式的根求二元一次方程式的根实例实例11 输入两个数,随机产生一个中间数输入两个数,随机产生一个中间数2.1.1 Java程序布局程序布局 在Java语言编译器编译源程序时,忽略所有空白空间和空白行,只对程序进行编译。但是,一个美观大方、层次分明

4、的程序布局可以帮助编程人员阅读和理解程序的含义和作用,从而降低编程的复杂性、提高编程的效率。下面列出一些人们约定俗成的规则。 (1)在Java程序中,经常要使用大括号将一组相关语句括起来,例如:类中的所有语句、方法中的所有语句以及某些语句体等等。我们规定一对大括号的左括号和右括号总是各自独立占有一行,并且二者的位置垂直对齐。 (2)在一对大括号中,所有语句的起始位置,相对于该对大括号的位置向右缩进一个制表位。 (3)一般来说,一条语句占据一行,如果语句过长,可以分多行显示语句内容。 2.1.2 Java程序的组成程序的组成 Java源程序主要由5部分组成:package和import语句、类、

5、方法和语句。 (1)package语句用来定义该程序所属的包,该语句必须位于程序的最前面,且每个程序只允许使用一条package语句。如果忽略该语句,则程序属于默认包。关于包的具体概念和作用我们将在第4章中介绍。 (2)import语句用来导入其他包中的类,以便于在程序中使用。该语句必须位于类定义之前,并且可以多次使用,导入多个类。 (3)类(class)是整个源程序的核心部分,也是编写程序的地方。一个源程序文件至少要有一个类,也可以有多个类。每个类的内容是用一对大括号括起来的,有不同的名字,但是程序的文件名必须和程序主类的名字相同。主类是指main()方法所在的类。class是类的定义字,其

6、后是类的名称,public表示此类是公开的,其他程序也可以调用。类的定义格式为: public class 类名 语句体 2.1.2 Java程序的组成程序的组成 (4)方法:每个Java应用程序都要有且只有一个main()方法,它是程序运行的开始点。main()方法的格式永远都是:public static void main(String args)。一个类中可以有多个方法,每个方法都有不同的名字,其定义格式为: 修饰符 方法名(参数) 语句体 在方法的内部不可以再定义其他的方法,但是可以调用其他方法。 2.1.2 Java程序的组成程序的组成 (5)语句:类或者方法中的语句体是由一条条以

7、分号结尾的语句组成的。语句是Java程序的基本单位之一,是程序具体操作的内容。每条语句各占一行,以分号结尾。语句有赋值语句、调用方法语句和对象定义语句等多种形式,我们今后将一一讲解。Java语言是严格区分大小写的语言,所以我们在书写语句时,一定要注意大小写不能混淆。例如:在实例1所示的程序中, System.out.println(Hello World!);语句,不可以写成system.Out.println(Hello World!);。因为这在Java编译器看来,是两个完全不同的语句。 2.1.3 注解语句注解语句 在Java语言中,注解语句是一种特殊的语句,其内容不会被Java编译器编

8、译,只是用来帮助其他阅读或使用该程序的人理解源程序的含义。注解语句一共有3种形式: (1)单行注解语句/:注解内容从/开始,到行尾结束,一般位于要解释语句的结尾处。多用于解释定义变量的含义和语句的作用。 (2)多行注解语句/* */:注解内容从/*开始,到*/结束,可以单行或多行,一般位于要解释的类或者方法的前面。这种形式多用于解释整个源程序的目的和某个方法的作用。符号/*和*/成对出现,不可以套用。 (3)文档注解语句/*/:注解内容从/*开始,到*/结束,一般位于整个程序的最前面。文档注释语句是Java所特有的doc注解。使用javadoc 文件名.java命令,系统自动生成API文档,其

9、内容就是该文件中的文档注解语句。2.1.4 打印语句打印语句 在Java语言中,数据可以通过输出语句显示在屏幕上,以达到人机交流的目的。打印语句是输出语句,它有两种形式,输出效果略有不同。 (1)System.out.println()打印语句。该语句的作用是把小括号中的内容显示在屏幕上,并且增加新的一行。如果还有要打印的内容,则从新的一行开始显示;如果没有,则显示空白行。 (2)System.out.print()打印语句和System.out.println()的功能基本相同,只是不增加新的一行。如果还有要打印的内容,则紧接着上次内容的后边显示;如果没有,则不显示空白行。 如果System

10、.out.println()语句的小括号中没有任何内容,则显示一行空白行。System.out.print()语句的小括号中必须要有打印的内容,否则会显示错误信息。 如果要把数据原封不动地显示在屏幕上,则需要使用双引号把数据括起来。例如:System.out.println( 打印语句 );语句表示将双引号中的文字和空白空间显示在屏幕上,并且产生一行空白行。 2.1.5 转义符号和统一码转义符号和统一码 1转义符号转义符号 转义符号是以反斜线开头,后边紧跟一个或几个字符,具有特定含义的符号。它的主要作用是显示一些打印语句不能显示的符号或效果。例如:显示双引号、单引号、反斜线符号等等。因为转义符

11、号具有特殊的意义,所以即使在双引号内也不会被显示出来,常用的转义符号形式及其作用见表2.1所示。 2统一码统一码 在Java语言中我们所使用的字符都是由统一码定义的。这也包括汉字在内的许多非英语字符。统一码给每个字符都提供了一个唯一的数字,不同的CPU、不同的操作系统或者不同的计算机,它们的统一码都是一样。我们可以通过上边介绍的转义字符uxxxx和ddd把统一码转换成字符,并打印出来。 2.2.1 数据类型数据类型 使用计算机语言编程的主要目的是处理数据,但是现实生活中的数据多种多样,很难统一处理。为了解决这个难题,Java语言把数据分类,再依据各种类型数据的特点做出相应的处理。总体上,Jav

12、a将数据分成普通型数据和对象型数据两大类。普通型数据又可以分成整数类型、浮点类型、逻辑类型和字符类型4种。 (1)整数类型:不含小数点的数字为整数类型数据,例如:-124、948、23、0等。整数类型又根据数据所占内存的容量和表达数字的范围分为字节型(byte)、短整型(short)、整型(int)和长整型(long)共4种。 (2)浮点类型:含小数点的数字为浮点类型数据,例如:-38.32、34.00、87.19392等。浮点类型又根据数据所占内存的容量和表达数字的范围分为浮点型(float)和双精度型(double)2种。除了普通的表示方法,浮点类型的数据还可以用科学计数法表示。例如:4.

13、2E8、-0.3e12、87E-6。 2.2.1 数据类型数据类型 (3)逻辑类型:逻辑类型数据只有两个数值true和false,表示“真”和“假”,或者“是”和“否”等对立的状态。 (4)字符类型:用一对单引号围起来的单个字符,例如:S、g、%。对象型数据是对现实生活中具体事物的抽象总结。每一种对象型数据都具有其对应的类,用来定义该种对象型数据的共性和功能。最常用的对象型数据是字符串(String)类型数据。字符串类型数据是用一对双引号围起来的一串字符,例如:a String、世界,你好!”。虽然字符串类型是对象类型中的一种,但是其与普通类型数据在定义格式、打印方式等方面很类似。关于对象型数

14、据,我们将在后边详细介绍。 2.2.2 变量和常量变量和常量 所谓变量就是内存中的一小块空间,它用来存储一个数据。我们可以放一个数据进去,也可以取走一个数据。内存中可以有许多个这样的小块空间,为了以示区别,我们命名它们不同的名字,这个名字就叫变量名。变量中的数据可以是编程者赋予的,也可以是程序运行过程中,临时存储的运算中间结果。一个变量在同一时间中只可以保存一个数据。 如果一个存储空间中的数据在程序运行过程中一直都没有发生改变,我们称这种空间为常量,常量也有常量名。 常量和变量根据所存储的数据类型不同,也可以分成整数型、浮点型、字符型、字符串型等等。不论常量还是变量,在使用前,都要先定义,也就

15、是说告诉Java程序需要使用一个常量或变量来存储数据,请在内存中给一个空间,同时还要告诉Java这个空间的名称。定义后的常量或变量,可以通过赋值语句被赋予数据。常量只能赋一次值,变量可以多次赋值。常量或变量中的值,可以通过打印语句显示在屏幕上。 2.2.2 变量和常量变量和常量 1变量和常量类型变量和常量类型 变量和常量类型是与数据类型相应的,有什么样的数据类型,就有什么样的变量和常量类型。常用的类型有下面5种。 (1)整数类型:也分为byte、short、int和long四种类型。 (2)浮点类型:也分为float和double两种类型。 (3)逻辑型:又叫布尔型变量,只有true和fals

16、e两个值。 (4)字符型:只存储字符型数据,其取值范围是所有用统一码表示的字符,即u0000到uffff。 (5)字符串型:只存储字符串型数据。 各种类型变量和常量的定义类型、所占内存空间大小、取值范围和默认值等属性,见书中的表2.2。 2.2.2 变量和常量变量和常量 2定义变量和赋初值定义变量和赋初值 在使用变量之前,需要定义变量,并且给变量赋初值。一般使用赋值语句给变量赋初值,其格式为: 变量名 = 数据; 定义变量的基本形式有2种,此外还可以将定义变量和赋初值合并在一起。 (1)定义一个变量。其格式为:定义类型 变量名; 例如:byte x; float y; String s; 2.

17、2.2 变量和常量变量和常量 (2)一行定义多个同样类型的变量,其格式:定义类型 变量名1,变量名2, ,变量名n; 例如:short x,y,z; (3)定义和赋初值合并使用。其格式为:定义类型 变量名=数据;例如:long l = 100; 相当于long l; l = 100;两条语句。 (4)一次定义多个同样类型的变量并且赋初值。其格式为:定义类型 变量名1=数据,变量名2=数据, ,变量名n=数据;例如:char a = A,b = B,c = C;或者只给一部分变量赋值,例如:char a,b = b, c; 2.2.2 变量和常量变量和常量 (5)一次给多个变量赋同样的值。其格式

18、为: 变量名1=变量名2 =变量名n=数据; 例如:a = b = c = d = 100; 一般来说,我们可以在程序类中的任何位置定义变量,定义以后才可以给变量赋值,赋值以后才可以使用变量,例如:打印变量、计算变量值等。 上面格式中的数据,既可以是实际数据,也可以是变量,但是数据类型要和变量类型匹配。例如:char c=a String;语句的错误就是类型不匹配。在给float类型变量赋值时,数字的后边要加上字母f或F,以便与double型数据区分,例如:float f=18.394f;是正确的,float f=0.3827是错误的。 给整数类型变量赋的值可以是十进制数,也可以是八进制数和十

19、六进制数。八进制数必须以数字0开头,0只是八进制数的标识符号,没有数学意义。十六进制数以0 x或者0X开头。 例如:int i = 0123; int i = 0 xABC; 2.2.2 变量和常量变量和常量 3标识符和关键字标识符和关键字 标识符是指类、方法、常量、变量、接口和包等的名称。Java语言规定: (1)标识符必须以大小写字母、数字、下划线和美金符号$组成。 (2)不可以用数字开头。例如:PinNum、_abc33、$Qian等等都是合法的;100Age,my age,abc#,hotmail都是不合法的标识符。因为美元符号$经常被用于内部处理,所以建议最好不要使用。 (3)Jav

20、a语言严格区分大小写。例如:Age35和age35是两个完全不同的标识符。 (4)标识符的长度没有限制,但是不宜过长。 2.2.2 变量和常量变量和常量 以上是Java对定义标识符的基本规定,在实际使用中,我们还人为制定了一些规则: (1)标识符由完整的单词或者一组单词组成,尽可能清楚的表达标识符所代表的含义。 (2)变量标识符以小写字母开头。 (3)类名标识符的首个字母要大写。 这些人为制定的规则是否遵守并不会影响Java编译器的工作,但是养成良好的标识符定义习惯可以使程序易于阅读和理解。 2.2.2 变量和常量变量和常量 关键字(Reserved Words,也叫保留字)是Java语言语法

21、的组成部分,具有特殊的含义,不可以作为标识符使用。表2.3列出Java语言的关键字。 我们之前接触过一些关键字,例如:true是逻辑数据值,double表示双精度型数据。Java的关键字很多,不可能一一背下来,但是总的来说定义类、方法、常量和变量时所用的单词,以及各种语句所用的单词都是关键字。通过今后的学习,接触的关键字越来越多,在理解每个关键字的含义后,自然就能记住了。 2.3.1 算术运算符和算术表达式算术运算符和算术表达式 算术表达式是用来计算整数和浮点类型的数据,其表达式结果也为整数类型或者浮点类型。算术运算符除了我们常用的加号+、减号-、乘号*和除号/,还有以下4种。(1)求余数运算

22、符%。该符号用来求被除数除以除数后所得的余数。例如:10%3的值为1;25.3%10的值为5.3。(2)求相反数运算符-。该符号用来求一个数的相反数。例如:如果变量a的值为-10,则-a的值为10。(3)自增运算符+。该符号用来给变量值增加1,其有两种形式:a+表示在使用变量a之后,其值增加1。例如:如果变量a的值为10,则执行b=(a+)*10;语句后,变量a的值为11,变量b的值为100。+a表示在使用变量a之前,其值增加1。例如:如果变量a的值为10,则执行b=(+a)*10;语句后,变量a的值为11,变量b的值为110。2.3.1 算术运算符和算术表达式算术运算符和算术表达式 (4)自

23、减运算符-。该符号用来给变量值减少1,其有两种形式:a-表示在使用变量a之后,其值减少1;例如:如果变量a的值为10,则执行b=(a-)*10;语句后,变量a的值为9,变量b的值为100。-a表示在使用变量a之前,其值减少1。例如:如果变量a的值为10,则执行b=(-a)*10;语句后,变量a的值为9,变量b的值为90。+(自加)和-(自减)运算符的目的是使程序变得更加简单明了,但是如果自加或自减运算符在一个表达式中出现过多反而会使程序变得复杂,难于理解。在下面的程序中,运用了一部分算术运算符来进行数据计算。读者可以根据注解语句的提示,写出运行结果并上机验证。2.3.1 算术运算符和算术表达式

24、算术运算符和算术表达式 public class Op1 public static void main( String args ) int a,b,c,d,e,f; a = 10+30-24; / a = 16 b = a*10-a*5; / b = 80 c = 100/10*20; / c = 200 d = c%a; / d = 200%16 = 8 e = a+; / e = 16, a = 17 f = +a; / f = 18, a = 18 System.out.println( a= + a ); System.out.println( b= + b ); System.o

25、ut.println( c= + c ); System.out.println( d= + d ); System.out.println( e= + e ); System.out.println( f= + f ); 2.3.2 关系运算符和关系表达式关系运算符和关系表达式关系表达式是比较关系运算符左右两边数据的大小关系,其表达式结果为逻辑型数据true或false。关系运算符有以下6种。(1)等于号运算符=:表示两个数据相等关系。如果两个数据值相等,表达式值为true;如果两个数据值不相等,表达式值为false。例如:表达式3=3的值为true。注意是两个等号=,而不要写成一个。(2)

26、不等于号运算符!=:表示两个数据相等关系。如果两个数据值相等,表达式值为false;如果两个数据值不相等,表达式值为true。例如:表达式3!=3的值为false。(3)大于号运算符:如果大于号前面的数据值大于其后面的数据值,表达式值为true;如果大于号前面的数据值小于或等于其后面的数据值,表达式值为false。例如:表达式33的值为false。(4)小于号运算符:如果小于号前面的数据值小于其后面的数据值,表达式值为true;如果小于号前面的数据值大于或等于其后面的数据值,表达式值为false。例如:表达式3=:如果大于等于号前面的数据值大于或等于其后面的数据值,表达式值为true;如果大于

27、号前面的数据值小于其后面的数据值,表达式值为false。例如:表达式3=3的值为true。(6)小于等于号=:如果小于等于号前面的数据值小于或等于其后面的数据值,表达式值为true;如果小于号前面的数据值大于其后面的数据值,表达式值为false。例如:表达式3 24; / a = 40 24 b = 10*10 != 20*5; / b = 100 != 100 c = 10 = 20-10; / c = 10 = 100%3; / d = 0 = 1 System.out.println( a= + a ); System.out.println( b= + b ); System.out.

28、println( c= + c ); System.out.println( d= + d ); 在上面的程序中,表达式是由算术运算符和关系运算符共同组成的。在这种情况下,先执行算术运算符,再执行关系运算符。读者可以根据注解语句的提示,写出运行结果并上机验证。2.3.2 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式逻辑运算符只对逻辑型数据进行运算,其表达式的值也只会是true或false。逻辑运算符有以下4种。(1)“非”运算符!:表示“相反”的意思。例如:!true的值为 false,!(2010的值为true。(3)“或”运算符|:只有当|前后的数值都为false时,表达式的值才为fals

29、e,其它情况下,表达式的值都为true。例如:表达式1010 | 2010的值为true。(4)“异或”运算符:当运算符前后数值同为true或者同为false时,表达式的值为false,当运算符前后数值一个为true另一个false时,表达式的值为true。2.3.3 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式在下面的程序中,运用了逻辑运算符来进行数据运算。public class Op3 public static void main( String args ) boolean a,b,c,d,e,f; a = 20 15 & 20 30; / a = true & tr

30、ue b = 10 != 3+4 | 15 = 2*4; / b = true | false c = !( 10 15 ? 20 : 30; / 因为2015为true,所以a=20 b = 30 = a ? 10 : 20; / 因为30=a为false,所以b=20 c = b = 20 ? true : false; / 因为b=20为true,所以c=true System.out.println( a= + a ); System.out.println( b= + b ); System.out.println( c= + c ); 2.3.6 位运算符和位表达式位运算符和位表达

31、式使用位运算符可以进行位运算。所谓位运算是指进行二进制数据的运算。在系统软件中,经常要处理二进制数据,例如:将一个存储单元中的二进制数的数位向左移二位。(1)左移运算符。用来将一个数的各个二进制位左移若干位。例如:b = a 。用来将一个数的各个二进制位右移若干位。例如:b = a 1,表示将a的各个二进制位右移一位,移到右端的低位被舍弃,最高位则保持原值不变。如果a = 10,即二进制数00001010,右移一位后得到00000101,即十进制数5。每右移一位相当于原数值除2。2.3.6 位运算符和位表达式位运算符和位表达式(3)无符号右移运算符。用来将一个数的各个二进制位无符号右移若干位。

32、移出的低位被舍弃,高位补0。例如:如果a=11101010,则a 2的值为00111010。(4)“按位与”运算符&。参加运算的两个数据,按二进制进行“与”运算。如果两个相应的位都为1,则该位的结果值为1,否则为0。也就是说,0&0=0,0&1=0,1&0=0,1&1=1。例如:3&10并不等于13,应该是按位与:00000011 & 00001010 00000010因此,3&10的值为2。2.3.6 位运算符和位表达式位运算符和位表达式按位与的用途如下。l 对特定的位清零。如果想将一个二进制数的特定位变为0,其余位的值不变,可

33、以使用按位与。方法是用另一个特定位为0,其他位为1的二进制数与要清零的数进行按位与运算。例如:要将数字11001011的第1位和第7位清零,则可以用数字10111110与之进行按位与运算:11001011 & 10111110,其结果为10001010。l 保留特定位的值。如果想保留一个二进制数的特定位上的值,其余位的值为0,可以使用按位与。方法是用另一个特定位为1,其他位为0的二进制数与原数字进行按位与运算。例如:要将数字11001011的第1位和第7位保留,则可以用数字01000001与之进行按位与运算:11001011 & 01000001,其结果为01000001。2.

34、3.6 位运算符和位表达式位运算符和位表达式(5)“按位与或”运算符|。参加运算的两个数据,按二进制进行“或”运算。如果两个相应的位都为0,则该位的结果值为0,否则为1。也就是说,0|0=0,0|1=1,1|0=1,1|1=1。例如:00000011 | 00001010的值为00001011。(6)“按位异或”运算符。参加运算的两个数据,按二进制进行“异或”运算。如果两个相应的位都为0或者1,则该位的结果值为0,否则为1。也就是说,00=0,01=1,10=1,11=0。例如:00000011 00001010的值为00001001。2.3.6 位运算符和位表达式位运算符和位表达式按位异或的

35、用途如下。l 对特定的位翻转。如果想将一个二进制数的特定位1变为0,0变为1,其余位的值不变,可以使用按位异或。方法是用另一个特定位为1,其他位为0的二进制数与原数字进行按位异或运算。例如:要将数字11001010的第1位和第7位翻转,则可以用数字01000001与之进行按位与运算:11001010 01000001,其结果为10001011。l 不用临时变量,交换两个数值。例如:变量a=10101100,变量b=00110101,交换的方法如下。a = a b,此时,a = 10011001b = b a,此时,b = 10101100a = a b,此时,a = 001101012.3.6

36、 位运算符和位表达式位运算符和位表达式(7)“按位取反”运算符。用来对一个二进制数按位取反,即将0变为1,将1变为0。例如:11001001的值为00110110。 2.3.7 数据类型转换数据类型转换1数据类型转换数据类型转换Java程序中的每一个数据都必须有且只有一个数据类型。程序中的数据即包括那些我们可以看到的变量和数值,也包括我们看不到的在程序运行中产生的中间计算结果。当两个数据的类型不相同时,必须先进行数据类型的转换,然后才能运算或赋值。转换有两种情况:(1)系统自动转换:是把所占内存空间字节数少的类型,转换为所占内存空间字节数多的类型;把整数类型转换为浮点类型。也就是说byte可以

37、转换为short,byte和short可以转换为int,byte、short和int可以转换为long,byte、short、int和long可以转换为float,byte、short、int、long和float可以转换为double等等。例如下面的语句,虽然变量与数据的类型不同,但是Java可以自动转换,所以程序不会出错。2.3.7 数据类型转换数据类型转换(2)强制类型转换:是把所占内存空间字节数多的类型,转换为所占内存空间字节数少的类型;把浮点类型转换为整数类型。格式为:(转化后类型的定义关键字)原类型数据。例如:int i = 3;byte b = ( byte )i;如果将浮点类型

38、转换为整数类型,则整数部分保留,小数部分丢失。例如:double d = 345.215;int i = (int)b; 变量i的值为345。在强制转换中,一定要注意变量类型的范围,数据不可以超出转换后类型的范围。例如:int i = 1000;byte b = ( byte )i; 变量i的值超出byte型变量的范围(-128127),系统会显示错误。2.3.7 数据类型转换数据类型转换2计算中的数据类型转换计算中的数据类型转换在进行计算的时候,Java根据被计算的两个数据的类型来决定计算结果的类型:(1)如果被计算的两个数据的类型一样,则结果的类型必须和它们保持一致。整型变量在做除法运算时

39、,如果不能整除会导致运算结果的小数部分丢失,最终造成整个表达式的计算结果不精确。为了避免这种情况的出现,在进行复杂计算的时候,变量最好不使用int型,建议使用double型。(2)如果被计算的两个数据的类型不一样,则先按照自动转换原则将数据类型转换为同样的,然后再计算,也就是说结果的类型和所占内存空间字节数多的类型一致。2.3.7 数据类型转换数据类型转换例如:下面3个算术表达式看似一样,但是因为数据类型不同,所以运算结果有很大的差别。public class Op5 public static void main( String args ) double a = 6 * ( 10/ 6)

40、+ 5 / 3; double b = 6 * ( 10/ 6) + 5.0 / 3; double c = 6 * ( 10.0/ 6) + 5.0 / 3; System.out.println( a= + a ); System.out.println( b= + b ); System.out.println( c= + c ); 运行结果为:a=7.0 b=7.666666666666667 c=11.6666666666666662.3.7 数据类型转换数据类型转换(3)如果一个是char型数据,另一个是整数或浮点型数据,则char型数据按照统一码转换成整数或浮点型数字。例如:Sy

41、stem.out.println ( A +20.5 );的运行结果是85.5,即字母A的ASCII码值65加上20.5。综上所述,我们在书写算术表达式的时候一定要注意变量的类型。2.3.7 数据类型转换数据类型转换3ASCII码ASCII码是用七位二进制数表示一个字符,共能表示27=128个不同的字符,包括了计算机处理信息常用的26个英文大写字母AZ、26个英文小写字母az,数字符号09、算术与逻辑运算符号、标点符号等。在一个字节(相当于8位二进制数)中,ASCII码用了七位,最高一位空闲,常用来作为奇偶校验位。所谓奇偶校验,是在编码进行传送过程中,用来检验是否出错的一种方法,分奇校验和偶校

42、验两种。计算机中常用的字符编码有EBCDIC码和ASCII码。IBM系列的大型计算机采用EBCDIC码,微型计算机采用ASCII码。下面主要介绍ASCII码。扩展的ASCII码用8位二进制数表示一个字符的编码,可表示28=256个不同的字符。常用字符的ASCII码值见书中的表2.6。 例如:加号的ASCII码是43,问号的ASCII码是63,字母T的ASCII码是84,字母s的ASCII码是115。如果是两个char型数据比较大小,则按照它们的ASCII码值的大小进行比较。例如:表达式Aa的值为false,因为字母A的ASCII码是65,而字母a的ASCII码是97。显而易见,表达式6597的

43、值为false。2.3.8 优先级优先级在Java语言中,对一个表达式进行计算时,是按照运算符的优先级来决定执行的先后次序的。优先级高的先执行,优先级底的后执行。同一级别运算符,基本上都是从表达式的左边向右边依次执行。下面由高到低列出了Java语言中运算符的优先级。() + -! * / %+ - = !=&|&|? := += -= *= /= %= 2.4.1 String类类1定义定义StringString类对象的定义方法有两类:(1)定义普通变量:虽然String是对象变量,但是也可以用普通变量的定义方法创建对象。格式为: String 对象名 = 字符串数据;例如:

44、String s = hello;(2)定义对象变量:使用关键字new创建对象,其格式为:类名 对象名 = new 类名(); String类的对象变量定义格式为: String 对象名 = new String( 字符串数据 ); 例如:String s = new String( hello );语句表示定义一个String类的对象变量s,其值为字符串hello。不论按照哪种方法,事实上都是创建String类的一个对象,用来保存和编辑字符串。在Java语言中,只有String类的对象可以使用定义普通变量的方法,定义其他类的对象时,必须使用定义对象变量的方法。2.4.1 String类类2S

45、tring类的方法类的方法在Java语言中有两种类型的方法,一种是静态方法(static methods),另一种是实例方法(instance methods)。(1)静态方法:也被称作类方法,是指那些只要定义了类,就可以通过类名调用的方法。调用静态方法的一般格式是: 类名.方法名()valueOf()方法是String类中的一个静态方法,它的作用是将数字类型的数据转换为字符串型数据。我们在使用这个方法时,不需要创建String类的对象,可以直接用类名调用。例如:String s = String.valueOf( 83.2934 );表示将浮点型数据83.2934转换为字符串型数据“83.2

46、934”,并保存在对象变量s中。再来看一个例子: int i = 8; String s = String.valueOf( i ); 表示将int型变量i中的8转换为字符串型数据8,并保存在对象变量s中。2.4.1 String类类(2)实例方法:是指那些要通过类的对象才能调用的方法。调用实例方法的一般格式是:对象名.方法名()toUpperCase()方法是String类中的一个实例方法,它的作用是读取对象保存的字符串,再将字符串转换为大写形式。例如: String s = hello; String a = s.toUpperCase();其中,对象变量a的值为HELLO。要注意的是,调

47、用toUpperCase()方法的对象s中的值没有改变,依然是hello。String类中还有许多对字符串进行操作的实例方法,例如:length()方法是计算字符串长度的,toLowerCase()方法是将字符串转换为小写形式等等。我们不可能一一讲解,更不可能一一背熟,但是我们可以通过Java API来查找所需的方法。2.4.1 String类类Java API可以在SUN公司的网站上浏览,其网址是: http:/ API中找到,可以说Java API就是Java语言的图书馆。借助Java API的帮助,我们可以轻松地掌握任何方法的使用方式。2.4.2 Math类类在数学计算中,我们经常需要进

48、行一些较复杂的运算,为此,Java语言提供了Math类。Math类中的许多静态方法与C语言中的函数类似,可以进行求平方根、求幂等复杂数学计算。(1)random()方法:随机产生一个大于等于0.0而小于1.0的double型数值,也就是说随机产生包括0.0而不包括1.0的数值。例如:随机产生一个0.0到10.0之间(包括0.0,不包括10.0)的double型数值的表达式为:Math.random() * 10随机产生一个10.0到100.0之间(包括10.0,不包括100.0)的double型数值的表达式为:( Math.random() * 90 ) + 10如果要随机产生一个a到b(包括

49、a和b)之间的整数,可以使用下面的公式:int 变量名 = (int)( Math.random() * ( b a + 1 ) + a;例如:要随机产生一个10到50之间的整数,套用公式int i = (int)( Math.random() * (50 10 + 1 ) + 10;2.4.2 Math类类(2)max( double x, double y )方法:返回x和y中较大数。数值可以是int、long、float和double型。例如:int i = 45;int j = 74;int bigger = Math.max(i,j);变量bigger的值为74。(3)min( do

50、uble x, double y )方法:返回x和y中较小数。数值可以是int、long、float和double型。例如: int i = 45;int j = 74;int smaller = Math.min(i,j);变量smaller的值为45。2.4.2 Math类类(4)abs( double x )方法:返回x的绝对值。数值可以是int、long、float和double型。例如:double a = -92.22;double b = Math.abs( a );变量b的值为92.22。(5)pow( double x, double y )方法:返回x的y次幂值。x可以是i

51、nt、long、float和double型,但返回值为double型,例如:System.out.println ( Math.pow ( 5, 2 ) );语句的输出值为25.0。(6)sqrt( double x )方法:返回x的平方根。x可以是int、long、float和double型,但返回值为double型,例如:System.out.println ( Math.sqrt ( 81 ) );语句的输出值为9.0。(7)Math.PI表示最近似与的double型数值。(8)round( double x )方法:返回x四舍五入后的值。x可以是double和float2.4.2 Math类类(9)log( double x )方法:返回x自然对数函数值。(10)exp( double x )方法:返回e的x次幂值。(11)sin( double

温馨提示

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

评论

0/150

提交评论