第2章Java语言基础知识_第1页
第2章Java语言基础知识_第2页
第2章Java语言基础知识_第3页
第2章Java语言基础知识_第4页
第2章Java语言基础知识_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

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

文档简介

第2章Java语言基础知识能力要求掌握标识符的命名掌握基本数据类型的英文关键字和中文含义掌握变量和常量的声明和使用了解数据类型的转换掌握算术运算符、关系运算符和常用逻辑运算符的使用了解运算符的优先级了解Math类、Date类和Calendar类

本章主要内容Java基本语法Java数据类型、运算符与表达式Java语言的基本要素标识符关键字常量变量运算符分隔符2.1标识符和关键字

用来给Java中的变量、常量、方法、对象、类等起名字。Java对标识符的语法规定如下:①标识符由字母,数字,下划线(-)和美元符号($)组合而成。②标识符必须以字母,下划线或$开头,第一个字符不能是数字。③Java中的标识符是区分大小写的④标识符不能是关键字。2.1标识符和关键字

请判断下面标识符哪些是合法的标识符:(1)book3(2)$aba(3)sum5_9

(4)9day

(5)themax

(6)name#8

(7)myMethod(8)_demo(9)yu$12答:1,2,3,7,8,9是合法的标识符。2.1标识符和关键字关键字也称保留字,是Java语言本身使用的标识符,它有其语法含义。用户在自定义标识符的时候不能使用和关键字相同的名称。

(不用背,只需知道常见的关键字,如:if,else,for

等等。如果实在没有把握,可以查看书上的关键字列表。)思考与练习30页2.1下面这些标识符,那些是合法的?那些是不合法的?如果不合法,指出原因。①b12②87ef9③a(3)④x2y5⑤false

答:合法的标识符:①,④

不合法的标识符:②,③,⑤Java数据类型问题:在C语言中,存在数据类型,在Java中,也存在数据类型,那么,为什么要有数据类型呢?1.数据类型用来说明常量、变量和表达式的性质和所占内存的大小。2.Java的基本数据类型长度是固定的,可以跨平台自由移植。(C语言的基本数据类型根据平台的不同会有所差别)2.3基本数据类型数据类型名称位长默认值取值范围字节型byte80-27到27-1短整型short160-215到215-1

整型int

320-231到231-1

长整型long640-263到263-1

单精度型float320.0-3.4*1038~+3.4*1038

双精度型double640.0-1.7*10308~+1.7*10308

字符型char16‘\u0000’‘\u0000’~’\uffff’

布尔型boolean8falsetrue,false2.3.1整数类型Java的整数类型可以分为字节型(byte),短整型(short),基本型(int)和长整型(long)四种。

Java提供三种进制的整数表示形式:(1)十进制数:用多个0~9之间的数表示,如234,-20等,以非0(非零)开头。(2)八进制数:以0(零)为前缀,其后跟多个0~7之间的数字,如八进制的015代表了十进制的13。(3)十六进制数:以0x(零和英文字母x)为前缀,其后跟多个0~9之间的数字或a~f、A~F之间的字母。如十六进制的0x1e代表了十进制的30。long型数的尾部加l或L。例如:8765L。2.3.2浮点数类型

Java用浮点数类型表示数学中的实数。Java的浮点数类型有单精度浮点数(float)和双精度浮点数(double)两种类型。对于单精度float型变量,占4个字节(即32位),取值范围大约是:-3.4E38~3.4E38

。双精度double型变量,占8个字节(即64位),取值范围大约是:-1.7E308~1.7E308。

浮点数可以用以下两种形式来表示:十进制:5.2,0.34d,316.82F,3.14f

科学计数法:8.0e+2f,e前面必须有数字,e后面的指数必须为整数。e表示以10为底。8.0e+2f表示8.0x102。

注意:在常数后面加上f或F代表单精度float型,加上d或D代表双精度double型,如果不加字母,Java将其默认为双精度double型。

2.3.3布尔类型

布尔类型用关键字boolean表示,占8位。布尔类型数据只有两个值:true或false,true代表“真”,false代表“假”。2.3.4字符类型字符类型(char)用两个字节(即16位)表示一个字符。字符类型(char)采用了一种新的国际标准编码方案——Unicode编码。每个这种编码占用16位(比特)。这样所有的字符(如汉字或英文字母)都可统一用一个字符表示。字符常量用一对单引号括起的单个字符表示。这个字符可以是可见ASCII字符,如'a'、'A'、'3'、'*'等;可以是要表示的字符所对应的Unicode值,前缀是“\u”,表示范围为'\u0000'~'\uFFFF',如'\u0061'表示'a'(十六进制的0061等于十进制的97,ASCII值为十进制的97对应的字符是'a');也可以是转义字符。2.3.4字符类型

转义字符是一些有特殊意义的字符。所有的转义字符用反斜线(\)开头,后面跟着一个字符来表示某个特定的字符。例如:‘\r’表示回车。常用的转义字符及其对应的Unicode值如表2.4所示。

见:20页表2.4例如:‘\t’表示水平制表符。实际用在输出语句中,输出一些空格。

‘\n’表示换行。

2.3基本数据类型要求:

掌握各种数据类型的英文和汉字。要知道其对应关系。例如:1.float是什么类型?2.字符类型用什么关键字表示?2.4.1常量

常量(constant)是指在程序运行中其值不能被改变的量。常量有两种形式:直接常量和符号常量。1.直接常量直接常量是指在程序中直接引用的常量,包括整数、浮点数、布尔常量、字符常量和字符串常量。整数、浮点数、布尔常量、字符常量在2.3节基本数据类型中已经说明。字符串常量是用双引号括起的一串若干个字符(可以是0个)。例如:"pretty","nice89"。在Java中还可以使用连接操作符(+)把两个或更多的字符串常量串接在一起,组成一个更长的字符串。例如:"Data"+"Base"的结果是"DataBase"。

2.4.1常量

2.符号常量符号常量是以标识符形式出现的常量,符号常量必须先声明后使用。Java中用关键字final来声明一个标识符为常量,格式如下:final数据类型常量名=值[,常量名[=值],…];例如:finalintn=200,m=400;finalfloatpai=3.1415f;finalcharTAB='\t';注意:一个常量一旦被赋值,就不能改变,即它不能被再次赋值。2.4.1常量

声明符号常量可以提高程序的可读性,从常量名可以知道常量的含义,还可以增强程序的可维护性,只要在常量声明处修改常量值,即可改变程序中多处使用的常量值。

2.4.2变量变量:是指在程序运行过程中其值可以改变的量。

定义变量的格式如下:数据类型变量名[=值][,变量名[=值],…];例如:

intnum=5;

floatx; floatx=3f;用户在定义变量时请尽量选用可以表现变量意思的英文单词或中文。

注意:(书上21页)定义变量后,必须给变量赋值(在定义的同时赋值或在接下来的程序中赋值)。

例2.1

变量定义举例。(书上21页)publicclassVartype{

publicstaticvoidmain(Stringargs[]){

inta=1;charb='d';floatc;c=2.4f;

System.out.println("a="+a);

System.out.println("b="+b);

System.out.println("c="+c);}}

例2.1变量定义举例。请思考:(1)文件名是什么?(2)怎样编译程序?(3)怎样运行程序?(4)程序的运行结果是什么?答:文件名是:Vartype.javajavac

Vartype.java

javaVartype

a=1b=dc=2.4

例2.1变量定义举例。请思考:(5)如果去掉c=2.4f;

然后重新编译程序,编译能否通过?答:编译出错。(以下是JDK1.3的英文编译错误信息)E:\javacode\vartype.java:12:variablecmightnothavebeeninitialized

System.out.println("c="+c)

^1error错误的中文含义:变量c可能没有初始化。variable:变量。initialize:初始化。^:指出错误的位置。例2.1变量定义举例。改正错误需要用到的知识点:(书上21页)定义变量后,必须给变量赋值(在定义的同时赋值或在接下来的程序中赋值)。例2.1变量定义举例。请思考:(6)如果c=2.4f;

改为c=2.4;

即:把f去掉。然后重新编译程序,编译能否通过?答:编译出错。d:\javacode\vartype.java:9:possiblelossofprecision

可能有精度的损失found:double找到:double

required:float需要:floatc=2.4;^1error例2.1变量定义举例。请思考:(7)怎样在同一行里输出:

a=1,b=d答:System.out.println(“a=”+a+“,b="+b);

2.5各类数值型数据间的混合运算

2.5.1自动类型转换是将变量从占用内存少的短数据类型转化成占用内存较多的长数据类型时,可以不做显式的类型转换说明。整型,实型和字符型数据可以混合运算。在进行运算时,不同类型的数据要先转换成同一类型,然后才能进行运算。从低级类型到高级类型的转换自动进行。数据级别的高低如图2.1所示:

2.5.1自动类型转换例如:

intx=50;floaty;y=x;则输出y的值是50.0

byte,short,charintlongfloatdouble低高图2.1数据类型的转换2.5.2强制类型转换

将变量从较长的数据类型转换成较短的数据类型时,则必须做强制类型转换。强制类型转换的一般格式是:(数据类型)变量名或表达式例如:

floata=98.234f;

inti=(int)a;

当然,这样强制类型转换会使小数点后面的数据丢失,导致精度下降。例如,i的值是98。

思考与练习30页—31页习题2.6,2.7思考与练习30页2.6指出下面程序中的错误并改正。//Dataijk.javapublicclassDataijk{publicstaticvoidmain(Stringargs[]){

inti=10,k;j=30;i+j=k;}}

思考与练习红字为改正的地方:publicclassDataijk{publicstaticvoidmain(String[]args){

inti=10,k;

intj;//加

j=30;

i+j=k;//错误,删除

k=i+j;//改正}}思考与练习:31页2.7编译和运行下面的程序,注意改正程序中的错误。

publicclassFuzhi{publicstaticvoidmain(Stringargs[]){finalinta=8;floatx=24.6;

inty;a=a*3+4;

System.out.println("x="+x+"y="+y);}}

思考与练习:31页2.7题的解答publicclassFuzhi{publicstaticvoidmain(String[]args){finalinta=8;floatx=24.6f;//加f

inty;y=7;//加

a=a*3+4;//错误,删除

System.out.println("x="+x+"y="+y);}}

2.4题定义变量。将下面的文字描述用Java语句写出来。(1)将count定义为整型变量(2)将n和m定义为双精度型变量(3)将sum定义为单精度型变量,将yesno

定义为布尔型变量intcount;doublen,m;floatsum;boolean

yesno;

2.4题定义变量。将下面的文字描述用Java语句写出来。(4)将name定义为字符型变量(5)将length和area定义为单精度型变量charname;floatlength,area;2.6.1

算术运算符标准运算符作用运算符示例注释加法+sum=a+b

减法-sum=a-b

乘法*sum=a*b

除法/sum=a/b

求余%sum=a%b31%6=1

增量++a++

减量--b--%,/见:Qiuyu.java(1)运算符“%”(求余)操作是做除法操作后取余数,当操作对象均为整型数据时,其结果是整型数,否则为浮点数。例如:8%6的结果是2。(2)/:两个整数类型的数据做除法时,结果是整数,而小数部分被截掉,请思考:3/2的结果是什么?3.0/2的结果是什么?

11.5增量和减量运算符(++和--)运算符作用语法示例++前增量j=++i;inti=6;

intj=++i;iis7,jis7

后增量j=i++;inti=6;

intj=i++;iis7,jis6--前减量j=--i;inti=6;

intj=--i;iis5,jis5

后减量j=i--;inti=6;

intj=i--;iis5,jis6

增量和减量运算符(++和--)例如:(书上24页)inta=1;intb=(++a)*2;//a=a+1;即:a

1+1=2//b=a*2;即:b

2*2=4运行结果为a=2,b=4。inta=1;intb=(a++)*2;//b=a*2;即:b

1*2=2//a=a+1;即:a

1+1=2运行结果为a=2,b=2。

思考:30页2.5题2.5写出程序运行结果。//Ijadd.javapublicclassIjadd{publicstaticvoidmain(String[]args){inti,j,a,b;a=2;b=3;i=a++;

j=++b;

//相当于i=a;a=a+1;//i

a=2;a

a+1=2+1=3

//相当于b=b+1;j=b;//b

b+1=3+1=4;j

b=4思考:30页2.5题System.out.println("a="+a+"b="+b);System.out.println("i="+i+"j="+j);}}

运行结果:a=3

b=4i=2

j=42.6.2关系运算符

>(大于)<(小于)>=(大于等于)<=(小于等于)==(等于)!=(不等于)运算结果数据类型:boolean注意:区分等于号“==”和赋值号“=”。

2.6.3逻辑运算符

!(非)&&(简洁与)||(简洁或)^(异或)&(非简洁与)|(非简洁或)请思考:1:进行逻辑运算的操作数的类型是什么类型?运算结果的类型也是什么类型?2:&&和&的区别是什么?booleanboolean&被称为非简洁与,&&被称为简洁与的原因是:使用&时,必须对&两边的表达式都进行判断才能得出结果。而使用&&时,当运算符左边的表达式为真时再对运算符右边的表达式进行判断,而当运算符左边的表达式为假时不再执行右边的表达式。//2.6.3逻辑运算符:&&简洁与与&非简洁与的区别。publicclassYu{publicstaticvoidmain(Stringargs[])

{

booleanb=false;

intp=1;

if(b&&(++p>1))

System.out.println("true");else

System.out.println("false");

System.out.println("p="+p);}}运行结果:falsep=1(1)&&,简洁与,因为b=false,所以不判断&&右边的(++p>1)。(2)if后面的整个表达式为假,执行else后面的语句(3)根据(1)的分析,由于没有计算++p,所以p的值还是1。//2.6.3逻辑运算符:&&简洁与与&非简洁与的区别。publicclassYu{publicstaticvoidmain(Stringargs[])

{

booleanb=false;

intp=1;

if(b&(++p>1))

System.out.println("true");else

System.out.println("false");

System.out.println("p="+p);}}运行结果:falsep=2(1)&,非简洁与,虽然b=false,但依然判断&右边的(++p>1)。(2)if后面的整个表达式为假,执行else后面的语句(3)根据(1)的分析,由于计算++p,所以p的值变为2。2.6.3逻辑运算符

!(非)&&(简洁与)||(简洁或)^(异或)&(非简洁与)|(非简洁或)请思考:3.||和|的区别的区别是什么?

|被称为非简洁或,||被称为简洁或的原因是:使用|时,必须对|两边的表达式都进行判断才能得出结果。而使用||时,当运算符||左边的表达式为假时再对运算符右边的表达式进行判断,而当运算符||左边的表达式为真时不再执行右边的表达式。2.6.4位运算符(了解,不作为重点)

25页表2.82.6.4位运算符

在带符号的右移>>中,右移后左边留下的空位中填入的是原数的符号位(正数为0,负数为1)。而在不带符号的右移>>>中,右移后左边的空位都填入0。

举例如下:~00101010=11010101//~:按位取反a=00011100;a<<2=01110000//<<:左移2.6.4位运算符

a=00011100;a>>2=00000111说明:>>:带符号的右移,正数右移后,左边留下的空位中填入的是原数的符号位0b=10011011;b>>2=11100110说明:>>:带符号的右移,负数右移后,左边留下的空位中填入的是原数的符号位1a=00011100;a>>>2=00000111说明:不带符号的右移>>>,右移后左边的空位都填入0b=10011011;b>>>2=00100110说明:

不带符号的右移>>>,右移后左边的空位都填入0

2.6.4位运算符

00110111&01000110=00000110//&:按位与00110111|00011000=00111111//|:按位或00110101∧00111010=00001111//∧:按位异或

2.6.5其他运算符

1.三目运算符(?:)a?b:c若a为真,则此三目运算符的结果为表达式b的值,否则为表达式c的值。

2.复杂赋值运算符+=:例如,a+=b;即a=a+b;-=:例如,a-=b;即a=a-b;*=:例如,a*=b;即a=a*b;/=:例如,a/=b;即a=a/b;

2.6.6运算符的优先级与结合性其他运算符

运算符的优先级决定了表达式中运算执行的先后顺序。在进行表达式运算时,要按从高到低的运算符的优先顺序进行。同一优先级的运算符的运算次序由结合方向决定。例如:+与-有相同的优先级,其结合方向为自左到右。因此,6-2+7的运算次序是先减后加,即6-2+7相当于(6-2)+7。-和++有相同的优先级,其结合方向为自右到左。因此,-x++相当于-(x++)。

26页表2.9

大致(优先级高)算术运算符关系运算符逻辑运算符(低)2.6.7表达式由操作符,常量,变量,对象,方法调用组成。2.8注释分隔符用来分隔Java程序中的基本元素,有注释、空白符、和普通分隔符三种。注释:

//单行注释/*……*/多行注释

空白符:空格、回车、换行符、制表符普通分隔符(4种){};,:2.9Math类28页

Math类提供了一些数学函数。28页列出了Math类的常用方法。使用形式:类名.方法名(实际参数)例如:Math.abs(-19.5),Math.random()

常用:doublerandom():产生0到1(不包括1)之间的随机数。补充:产生一个[x1,x2]内的随机整数xx=(int)(Math.random()*(x2-x1+1)+x1)Math.random(

温馨提示

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

评论

0/150

提交评论