Java程序设计 课件 【ch02】java语言基础_第1页
Java程序设计 课件 【ch02】java语言基础_第2页
Java程序设计 课件 【ch02】java语言基础_第3页
Java程序设计 课件 【ch02】java语言基础_第4页
Java程序设计 课件 【ch02】java语言基础_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

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

文档简介

Java语言基础Java程序设计第二章01标识符和关键字自然语言是从基本字符开始,由特定的词法构成词汇,然后经由特定的句法组合成语句,语句则可以表示一个完整的含义。多条语句组合形成段落,可以描述一个精彩纷呈的故事。自然语言编程语言也是如此,关键字和标识符是程序中的词汇,关键字是由Java语言本身定义的、被赋予特殊含义的单词,而标识符是程序员在程序中自定义的一些符号和名称,用于给Java程序中的变量、类、方法等元素命名。编程语言2.1标识符和关键字2.1标识符和关键字【例2-1】求圆的面积。【程序】【运行结果】关键字关键字也称保留字,每个关键字在Java语言中具有各自特定的意义。例2-1程序中的public、class、void、int、double等都是关键字。Java语言提供的关键字共有48个,如表2-1所示,每个关键字形式上都是小写的。这些关键字所代表的意义,在后面的章节中会逐步介绍。2.1标识符和关键字2.1.1关键字标识符的首字符不可以是数字字符。例如,w6和m86都是合法的用户标识符,而6w,86m等不可以作为用户标识符。标识符是区分大小写的。例如,Java程序中的name和Name是两个完全不同的标识符。标识符可以由英文字母(A~Z,a~z)、数字、汉字、$、_等字符组成,除此以外的其他字符不能出现在用户标识符中。标识符不能与关键字同名,例如,void、double、int等关键字已经有专门的意义,都不能作为用户标识符。2.1标识符和关键字2.1.2标识符标识符由程序员设定,用来作为程序中变量、数组、方法、类等程序元素的名字。在例2-1的程序中,Main是类的名字,r、area是变量的名字。010203042.1标识符和关键字用户标识符要尽可能见名知义,也就是通过变量名就能知道变量值的含义。通常选择能表示数据含义的英文单词(或缩写)或汉语拼音字头作为变量名,这样可以提高程序的可读性,使程序更易于理解。Java中,除了包名、静态常量等特殊情况,大部分情况下标识符可使用骆驼法则,即单词之间不使用特殊符号分割,而是通过首字母大写来分割。02常量、变量与基本数据类型Java中的基本数据类型分为三大类:布尔型、字符型和数值型数据类型常量的值不可以发生变化常量变量的值可以被改变变量2.2常量、变量与基本数据类型不管常量还是变量,都有确定的数据类型,常量的数据类型取决于书写形式,变量的类型则要在变量使用之前,通过变量声明来指定。Java语言有8种基本数据类型如表2-2所示,Java语言有8种基本数据类型,常常被划分为整型、浮点型、字符型、布尔型四大类。每种数据类型在取值范围、运算规则与表示精度方面有各自的特征。在编写程序时,一般根据不同的需求选择不同的数据类型。2.2常量、变量与基本数据类型1、整型Java语言中的整型具体分为4种:字节型(byte)、短整型(short)、普通整型(int)、长整型(long),如表2-3所示。从byte,short,int到long,对应数据在内存中占用的存储空间越来越大,表示数据的范围也越来越大。2.2常量、变量与基本数据类型2.2.1基本数据类型2.浮点型浮点型也就是实型,用于表示实数。Java中的浮点型有两种,单精度浮点型(float)和双精度浮点型(double)。计算机用一定长度的二进制串来表示实数,其精度和表示范围必然也是有限的,也就是说,包括十进制数0.1在内的许多实数是无法用二进制形式准确表示的。2.2常量、变量与基本数据类型一般情况下,建议使用double类型来表示实数。如果在表示大量实数时,有控制存储空间总量的需求,在精度和范围允许的情况下,可以选择使用float类型。3.字符型Java用字符型(char)来表示单个字母、数字字符、标点符号及其他特殊字符。计算机内部采用编码的方式表示字符,Java语言使用编码方案Unicode码。每个字符型数据一般占用2字节,也就是16个二进制位。一个汉字通常也可以表示为一个字符型数据。2.2常量、变量与基本数据类型4.布尔型布尔型(boolean)又称逻辑类型,用于表示“真”或“假”状态的数据类型,对应两种取值:true和false。在后续章节,我们将学习分支和循环语句,其中表示条件的表达式都是布尔型的数据。01020304十进制整型常量由0~9的数字序列组成,自左向右的第一个数字不可以是0。(1)十进制整型常量十六进制整型常量由正、负号和0~9、a~f或A~F组成,有前缀0x。(3)十六进制整型常量八进制整型常量由正、负号和0~7组成,第一个数字必须是0。(2)八进制整型常量二进制整型常量由正、负号和0、1组成,有前缀0b(或0B)。4)二进制整型常量2.2常量、变量与基本数据类型2.2.2常量1、整型常量十进制小数形式由数字和小数点组成,例如,+10.625、−6.2、0.0、0.666、5467.5都是合法的浮点型常量,−2.、0.0、5.也是合法的浮点型常量。(1)十进制小数形式指数形式类似于科学记数法,通常被用来以紧凑的方式表示非常大和非常小的值。它由正、负号、数字和字母e(或E)组成,e是指数的标志,在e的前面要有数据,e之后的指数只能是整数。(2)指数形式2.2常量、变量与基本数据类型2、浮点型常量浮点型常量默认情况下是double类型,也可以在数字后附加d或D来表示double类型。如果要表示float类型常量,可以在数字后附加F或f。字符型常量是由单引号括起的单个字符,例如,'a','6','M','&','中'。每个字符型常量都使用Unicode编码,占2字节的内存。字符常量只能是一个字符,如'XY'是非法的。字符常量区分大小写字母,如'F'和'f'是两个不同的字符常量。这里的单引号仅起字符常量边界符的作用,并不是字符常量的一部分。需要注意的是,单引号和双引号在此是不可混用的,单引号表示一个字符,而双引号表示包含单个字符的字符串。2.2常量、变量与基本数据类型3、字符型常量布尔型常量只有两个值:true和false。4、布尔型常量变量变量在程序中用于存放数据。每个变量需要一个名字,属于一个确定的数据类型,占据一定的存储空间,用来存放数据,这个数据也就是变量的值。在程序运行过程中,变量的值可以改变。2.2常量、变量与基本数据类型2.2.3变量在使用变量之前,必须先声明其类型。变量声明的作用是为变量指定一个名字和数据类型。在Java程序中,变量声明的基本形式是:数据类型变量名表2.2常量、变量与基本数据类型变量的声明一旦定义之后,变量的类型是不能改变的。也就是说,一个变量名被定义之后,在同一个程序块内,不可以重新定义该变量名。在声明变量时,可以对变量进行初始化,也就是给变量设置一个初始值。2.2常量、变量与基本数据类型变量的初始化Java语言规定,如果变量从来未被赋值,则不可以执行获取变量值的操作,否则属于语法错误。也就是说,除对该变量赋值以外,其他操作都是非法操作。若有上述变量声明及初始化,那么:(1)语句“x=a+y”有语法错误,因为a未被初始化。(2)语句“a=x+y”是合法的,实现的功能是把x和y之和赋值给a。03基本输出语句如果需要将常量、变量或表达式的值显示输出,可以利用System.out.print()方法与System.out.println()方法,这两个方法的功能基本相同。两者的区别是在输出指定内容之后,前者将光标停留在输出内容的后面,而后者将光标移到下一行的开始位置。2.3基本输入与输出语句2.3.1基本输出语句2.3基本输入与输出语句【例2-2】输出语句的初步运用。【程序】【运行结果】2.3基本输入与输出语句【程序说明】System.out.print()方法与System.out.println()方法都只能输出一项内容,如果希望输出多项内容,则需要用拼接运算符(+)将多项内容拼接成一项。以语句“System.out.println("a="+a+",b="+b)”为例,为了输出了"a="、a、",b="和b这4项内容,利用运算符“+”自左向右逐步拼接:"a="+a的结果为"a=2";"a="+a+",b="的结果为"a=2,b=";"a="+a+",b="+b的结果为"a=2,b=3"。如果运算符“+”两边的运算对象有一个是字符串,则实现拼接操作;如果运算符“+”两边的运算对象都是数值,则进行加法操作,所以a+b的值为5。2.3基本输入与输出语句【程序说明】格式控制字符串可以包含格式控制符和普通字符,普通字符将按原样输出,而格式控制符用于指定对应表达式的格式。表2-6列出了常用格式控制符及其含义。2.3基本输入与输出语句【程序说明】如果运算符“+”两边的运算对象有一个是字符串,则实现拼接操作;如果运算符“+”两边的运算对象都是数值,则进行加法操作,所以a+b的值为5。虽然上述两个方法可以实现数据输出,但控制输出格式是一个比较棘手的问题。为此,Java语言从JDK1.5版本开始,提供了更加方便的System.out.printf()方法,该方法既可以控制数据输出的格式,也可以方便地输出多项。其一般形式是:例如,若有“inta=2,b=3”,则语句“System.out.printf(”a=%d,b=%d“,a,b)”输出“a=2,b=3”。在格式控制字符串中,两个“%d”称为格式控制符,分别用于指定后面a和b两个表达式的值将以十进制整数形式输出。格式控制字符串中的其他字符,如“a=,b=”将以字符方式直接输出。输出格式控制符中,可以指定整数数据的输出宽度。例如,若有“inta=2,b=387”,则语句“System.out.printf("a=%5d,b=%2d",a,b)”输出为“a=2,b=387”。“%5d”用以指定a的值以十进制整数形式输出,且宽度为5,若a的实际位数小于5,则左边补4个空格。“%2d”指定b的输出宽度为2,但b的实际宽度超过2,输出宽度按照实际位数。2.3基本输入与输出语句1.整型数据的格式控制实型数据的格式控制符有%e和%f两种,分别以科学记数法形式和小数形式输出实型数据。例如:输出为“e=2.718000,pi=3.141593”。输出为“2.718000e+02,3.141592e+05”。可以看出,小数点后面总是输出6位,而不管数据的实际小数位数,超出部分四舍五入,不足则补0。在实型数据的格式控制符中,可以限定输出宽度,也可以指定小数位数。例如:输出为“e=2.72,pi=3.142”。“%7.2f”指定数据2.718的输出格式:数据宽度为7,保留2位小数,实际位数小于7时,左边补空格,“%.2f”指定数据3.1415926的输出格式为保留3位小数,总宽度按实际位数。2.3基本输入与输出语句2.实型数据的格式控制布尔型数据的格式控制符是%b。例如,若有“booleanflag=true”,则语句“System.out.printf("%b",flag)”将输出true。93”。2.3基本输入与输出语句3.布尔型数据的格式控制字符型数据的格式控制符是%c。例如,若有“charch='a'”,则语句“System.out.printf("%c,%c",ch,ch−32)”将输出a,A。4.字符型数据的格式控制2.3基本输入与输出语句2.3.2基本输入语句输入语句从JDK1.5版本开始,Java语言增加了Scanner类,为数据输入带来了很大的方便。如表2-8所示,Scanner类提供一系列方法,用于接收不同类型的数据。2.3基本输入与输出语句【例2-3】输入摄氏温度,输出对应的华氏温度。计算公式如下:f=c*9/5+32其中,c表示摄氏温度,f表示华氏温度。【程序】【运行结果】输入:29输出:84.202.3基本输入与输出语句【程序说明】为了实现数据输入,程序中首先需要使用import语句通知编译器,程序中将使用java.util包中的Scanner类;然后创建一个Scanner对象,接下来就可以调用kb.nextDouble()方法,读取键盘输入的一个双精度浮点数。Java语言中的基本数据类型不包括字符串,其使用对象来表示字符串,有关字符串的输入、存储和处理将在后面的章节介绍。单个字符的输入一般利用System.in.read()方法。同样,本节先介绍其基本的使用方法,不涉及相关的概念。下面这个例子说明如何通过调用System.in.read()方法,接收键盘输入的一个字符。2.3基本输入与输出语句【例2-4】接收键盘输入的小写字母,输出对应的大写字母。【程序】【运行结果】输入:b输出:B2.3基本输入与输出语句【程序说明】程序包含3个环节:(1)用“importjava.io.IOException”或者“importjava.io.*”语句导入IOException类,也就是告诉编译器本程序中需要使用IOException类,该类属于java.io包。(2)在main()方法的头部,用throwsIOException声明抛出异常。(3)调用System.in.read()方法,返回值是一个整数(int),对应输入字符的Unicode编码。本例中转换为字符类型后,赋值给字符变量c。当程序运行到System.in.read()方法时,会等待用户通过键盘输入数据。用户可以输入一个或者多个字符,然后按Enter键。System.in.read()方法只会读取第一个字符,然后继续运行下面的语句。04运算符与表达式2.4运算符与表达式2.4.1赋值运算符与赋值表达式赋值运算符(=)用于为变量指定数值。用赋值运算符可以构造赋值表达式,其基本形式如下:变量=表达式例如:x=3.87; a=x+y;这样的赋值表达式称为赋值语句。赋值运算符的左边只能是一个变量,右边则是一个表达式。右边的表达式,可以是一个简单的常量或变量,也可以是由变量、常量、运算符构成的更复杂的运算式。赋值表达式的处理过程是,首先计算赋值运算符右边表达式的值,然后将该值赋予左边的变量。该值既作为左边变量的值,又作为赋值表达式的值。2.4运算符与表达式若有定义:intx=1,y=2;则:x=y=0;\是一个正确的赋值语句(或赋值表达式)。赋值运算规则是从右到左,处理过程如下:(1)先将0赋给y,这样y的值为0,同时表达式y=0的值同为0。(2)将表达式y=0的值赋值给x,x的值为0,同时x=y=0的值为0。有两个问题需要注意,一是“=”在Java语言中不再表达数学上的相等关系,而作为赋值运算符,表达了一种数据传递的关系,把右边表达式的值传递给左边的变量。二是赋值表达式用于给变量赋值,其左边只能是变量。下面的两条语句都是错误的。2.4运算符与表达式2.4.2算术运算符与算术表达式Java语言提供了9种算术运算符,如表2-9所示,一般分为双目运算符和单目运算符两大类。双目运算符有两个数据参与运算,单目运算的对象则只有一个数据。2.4运算符与表达式双目运算符包括:+(加)、−(减)、*(乘)、/(除)、和%(取余),使用算术运算符时需要注意以下问题。(1)如果除法运算的除数和被除数都是整数,则按整除的规则进行;如果有一个数为浮点数,则按浮点数除法的规则进行。例如,表达式189/10的值为18,而189.0/10的值为18.9。(2)参与取余运算的数据一般是两个整型数据。如果a和b是两个整数,则表达式a%b运算的方式是将a作为被除数,b作为除数,进行整除运算,运算结果不是商,而是余数。若k为整数,则k%10可以计算k的个位数,k%2是否为0可用于判定k是否为偶数。2.4运算符与表达式单目运算符包括:+(正)、−(负)、++(自增)、−−(自减)。自增运算符将变量的值加1后再存入这个变量;自减运算符将变量的值减1后再存入这个变量。自增和自减运算符可以在变量左侧,也可以在变量右侧,例如,++a,a++。如果仅作为独立的语句,两者的执行结果并没有区别。假如定义两个变量:inta=0,b=0,执行下面两条语句以后,a和b的值都是1。类似的情况,假如定义两个变量:inta=0,b=0,执行下面两条语句以后,a和b的值都是−1。如果自增和自减运算符与其他运算符组合使用,运算符放在左侧与放在右侧,执行结果会明显不同。两者之间的区别可以通过下面例子加以说明。2.4运算符与表达式设有定义:inta=0,b=0,执行语句:a=2*b++;那么,a和b的值分别为0和1,执行过程是,先将b的值(0)与2相乘并把乘积(0)赋值给a,这样a的值即为0,最后再执行b自增的操作,b的值变成1。如果换成执行语句:a=2*++b;那么,a和b的值分别为2和1,执行过程是,先将b的值加1,b的值即为1,然后将b的值(1)与2的乘积(2)赋值给a,这样a的值即为a。类似的情况,执行语句序列之后,a、b、c的值分别为0,−2,−2。Inta=0,b=0,c=0;a=b--;C=--b;2.4运算符与表达式2.4.3关系运算符与关系表达式在许多情况下,程序要对某些条件进行判断,根据条件成立与否,决定程序的执行流程。例如,以下if语句可以计算a的绝对值:其中,b=−b是否执行,取决于条件(b<0)成立与否。这个条件就是用关系表达式来描述的,“<”就是一个关系运算符。关系运算的值是一个布尔型数据(true或false)。例如,若b为3,则表达式b<0的值为false;若b为−3,则表达式b<0的值为true。2.4运算符与表达式2.4.4逻辑运算符与逻辑表达式逻辑运算的运算对象是布尔型数据,运算结果也是布尔型数据。常用的逻辑运算符有&&(逻辑与)、||(逻辑或)和!(逻辑非)。运算规则如表2-11所示。2.4运算符与表达式(1)当两个运算对象都为true时,逻辑与的运算结果为true,否则运算结果为false(2)当两个运算对象都为false时,逻辑或的运算结果为false,否则运算结果为true。(3)逻辑非是单目运算符,只有一个运算对象。运算对象为true,运算结果为false;运算对象为false,运算结果为true。2.4运算符与表达式逻辑运算符可用于描述比较复杂的条件,例如,一组条件及其对应的逻辑表达式如下:(1)m、n都能被k整除的逻辑表达式:m%k==0&&n%k==0;(2)x的绝对值大于8的逻辑表达式:x>8||x<−8;(3)闰年判别的一般条件:能被4整除而不能被100整除,或者能被400整除。判别某一年(year)是为闰年的逻辑表达式如下:判别某一年(year)是为平年的逻辑表达式如下:2.4运算符与表达式【例2-5】&&和||的运算规则。【程序】【运行结果】2.4运算符与表达式【例2-5】&&和||的运算规则。【程序】【运行结果】2.4运算符与表达式我们来分析一下第1次运行的情况,输入的数据为0和0。语句“flag1=a>0&&++b>0”的执行流程是,首先判断a>0,结果为false。此时已经可以确定“a>0&&++b>0”的值是false,因而直接将false赋值给flag1,而&&右侧的表达式“++b>0”不被处理,变量b自增的操作没有被执行。语句“flag2=a>0||++b>0”的执行流程是,首先判断a>0,结果为false。此时还无法确定“a>0||++b>0”的值,需要进一步计算||右侧的表达式“++b>0”,也就是说,b先自增为1,于是“++b>0”的值为true,因此“a>0||++b>0”的值为true。2.4运算符与表达式2.4.5其他运算符与表达式1.条件运算符与条件表达式条件运算符将3个表达式组合在一起,组成条件表达式,条件表达式的一般形式是:表达式1?表达式:表达式3条件表达式的运算过程是,先计算表达式1的值,如果它的值为true,将表达式2的值作为条件表达式的值;否则,将表达式3的值作为条件表达式的值。例如:可以看出,表达式1是一个值为true和false的关系表达式或逻辑表达式,表达式2和表达式3的类型一般是相同的。2.4运算符与表达式2.位运算符位运算符适用于整型的运算对象,运算特点是以二进制位为单位进行,如表2-12所示。2.4运算符与表达式假设bytea=106,flag=0x0f,则a的二进制数形式为01101010,flag的二进制数形式为00001111。a&flag与a|flag的运算过程如图2-1所示。可以看出,a&flag结果的二进制数形式为00001010,可以将a的左边4位置为0。a|flag结果的二进制数形式为01101111,可以将a的右边4位置为1。2.4运算符与表达式3.复合赋值运算符复合赋值运算符是一种基本运算与赋值运算合并的简化书写形式。例如:2.4运算符与表达式2.4.6表达式的处理规则处理规则一个表达式中可能包含多个不同的运算符和具有不同数据类型的运算对象,优先级规定了不同运算符的先后次序,结合性规定了同一优先级运算符的运算次序。不同数据类型的运算对象也会按确定的规则转换为同一类型后再进行运算。2.4运算符与表达式1.运算符优先级优先级规定同一表达式中不同运算符被执行的次序。在表达

温馨提示

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

评论

0/150

提交评论