Java语言基础第二章BASICS_第1页
Java语言基础第二章BASICS_第2页
Java语言基础第二章BASICS_第3页
Java语言基础第二章BASICS_第4页
Java语言基础第二章BASICS_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

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

文档简介

第二章Java语言基础

Java数据类型

■运算符与表达式

■流程控制语句

二:匚一工

2.1Java数据类型

•基本数据类型

■类型之间的转换

Java数据类型的分类

■简单数据类型

Integeral:byte,short,intjong

Floating:float,double

Textual:char

Logical:boolean

复合数据类型(对象引用类型)

class

interface

数组

几个概念

1标识符与保留字

■标识符(identifier):在程序中用来标识各变量或者常量的符号。

•必须由字母、下划线或$开始,其余字母可以为上述三种字母或者数

•合法的标识符:

var_list_a

$var2

_var$_2

•不合法的标识符:

1var

var%

interface

保留字

'由系统中预定义的,留作专用的标识符。

保留字不可以作为标识符。

2常量与变量

■常量二恒值的量

•必须使用final关键字定义常量,例如

finalfloatCOUNT_RATE=0.02;

finalintAREA=100;

•系统提供的常量:Math.PI,Math.E

变量

floatlength=1.11;

intcount=20;

整型数据

■分类

byteshortintlong

字节数1248

数字范围-128-127-32768--2,147,483,648

32767〜2,143,483,647

表示法

整型数据的使用

-默认的整型常量为int型'

x=12;〃此处常量12为int型

对于long型常量,当值超出了int范围时,需

要添加后缀”L"

longx=12000000000L;〃正确「I”亦可

longx=12000000000;〃错误

longx=12;〃正确

整型数据的使用2

■对于byte,short型变量,在赋值时存在两种情

况:

•如果值不超过规定的范围,不会出现问题

,•如果值超出了规定的范围,会引起语法错误

O例如

byteb=12;//noproblem

byteb=256;//error

声明和初始化

■intnumber;〃这是一个声明

longpopulation=100L;〃声明变量并且初始化

3变量在使用之前必须初始化

bytenum1=56,num2;

bytenum3=num1+num2;〃错误,num2未初始化

浮点型

■分类

floatdouble

字节数48

小数点后6〜715

有效位数

表示法

十进制小数:0.12,3.14,.56,...

科学计数法:12E-2,314E-2,56E-2

■默认的小数都是double型的

floatx=1.2f;〃正确

floatx=1.2;〃错误

字符型数据

•字符集

/ASCII字符集:1字节,128个字符

/扩展的ACSII集:256个字符

/Unicode字符集:2字节,0-65535

char类型占2字节

•表示法

•chara='a,;

charb-'b^;//错误

•转义字符:为了简便的表达一些常用的特殊

字符而采用的方法,即'后跟某个字符组合后

被赋予新的意义的字符。常见的如‘

\u:unicode字符

,\t:制表

\r:回车

字符串

■由标准库提供的String类,并非基本数据类型。每个

被双引号引起来的字符串都是String类的一个实例

Stringe="”;

Stringgreeting="hello”;

串的连接:使用符号把两个字符串连接起来

intanswer=2;

System.out.println(utheansweris"answer);

布尔型数据

布尔型数据只有两个值:false和true。

■表示:

booleandone=true;

2.1.2数据类型之间的转换

不同类型的数据在进行各类计算和赋值时需

要进行类型转换,转换的原因:

•数据存储的格式不同,例如整型和浮点型的不同

•数据在存储空间中所占大小的不同,例如int型和

long型的字节数不同

••.

不同方向上的转换

自动进行

强制进行

F.uir1L7V

f----~■一—rr“r

示例

1intn=123456789;

float仁n;〃有问题:fis1.23456792E8

bytea=12;

intb二a;〃不会出现问题

floatx=1.2f;

doubley=x;//noproblem

造型(cast)

1同类型之间大到小的转换必须造型

■inti=25;

byteb=(byte)i;

bytec=i;//wrong,Typemismatch:cannotconvertfrominttobyte

doublex=1.25;

floaty=(float)x;//right

floatz=x;//wrong,Typemismatch:cannotconvertfromdoubletofloat

如果存在float类型的数据,则

运算的结果为float;否则

混合运算

■byteb=1;

shortc=2;

Shorta=b+C;〃错误,不能将int类型直接转换为short

问:下列语句哪些是正确的,哪些是错误的

1longx=320000000005booleanbDone=0;

2intx=24;

byteb=x;6floatx=1.02f;

intn=x;

byteb=24;

byteb=128;

byteb=1;

floatx=1.2;shortc=2;

shorta=b+c;

2.2运算符与表达式

算术运算

■递增和递减运算

・关系和布尔运算

位运算

算术运算

/运算符号:

/0除整数发生异常,除浮点数得到无穷大或

NaN

简便形式:+=.-=,*=,/=,%=

18%5=?5%1=?

刍增、自减运算

符号:++,-

前、后位置的不同

•单条语句:

i++;<==>++j;

•表达式中的项

intm=7;intm=7;

intn=++m;<==>intn=m++;

(here,n=8,m=8)(here,n=7,m=8)

解释:m=m+1n=m

n=mm=m+1

.

关系和布尔运算

1关系运算:比较两个数是否相等

•符号:==,!=,〈,>,>二,<二

•运算结果只能是true或者false,例如

3==7isfalse

3!=7istrue

布尔运算(逻辑运算)

■符号:与(&&),或(II),非⑴

■A&&B----短路求值

x!=0&&(1/x>x+y)

如果x等于0,则第二个表达式不会被求值

A||B类似。

条件运算

(条件)?E1:E2(如果条件真,计算E1,否

则计算E2)。

E=x<y?x:y//ifx<y,E=x;else,E=y;

位运算

位运算处理数据的各个独立位。要理解该运

算需要先将数据展成二进制形式。

几种位运算方式:

•&:各位进行“与”运算

•I:...........“或”运算

•A:......“异或”运算

•.........取“反”

例子

a:50000,0101

b:9(99)0110,0011

a&b0000,0001

a|b0110,0111

aAb0110,0110

〜a1111,1010

(—6)

~b1001,1100

屏蔽的例子

intfourthBitFromRight=(n&8)/8;

n,********

8:0000,1000

解释:通过适当的2的哥指数,可以把所有其他

数据位屏蔽掉,而只剩下单独的某一位。

移位运算

移位运算

•VV:将运算对象左移指定的位数,低位补0

•>>:有符号右移运算符,若对象为正,则高位补0,

否则补1

•>>>:无符号右移,高位补0,对char,byte,short进

行移位运算时,会自动转换成int

位运算符号也可以与二共同使用,形成

&=,|=,八=,»=,»>=,«=O

移位的例子

publicstaticvoidmain(String[]args){

inti=-1;

i»>=10;

byteb=-1;

b»>=10;

shorts=-1;

s»>=10;

longl=-1;

l»>=10;

System.out.println(i);

System.out.println(b);

System.out.println(s);

System.out.println(l);

结果:

-1:11111111111111111111111111111111

■419430300000000001111111111111111111111

几点说明

/几乎所有的运算符都只能操作基本类型,唯一的例

外是“二","=="/!=";另外,String类支持和

“十二”。

/在C和C++中,一种常见的错误如下:

if(x=y){

//・・.

)

在java里,x=y的值不是布尔值,因此不会被当作布

尔结果作条件判断,从而阻止程序的执行。

--u

说明(2):“UlcerAddictsReallyLikeCAlot”,即“溃疡患者特别喜欢

(维生素)C”。

/运算符的优先顺序

助记词运算符类型运算符

UlcerUnary+-++—

AddictsArithemetic(andshift)*/%+-«»

ReallyRelational><>=<===!=

LikeLogical(andbitwise)&&||&|A

CConditionalA>B?X:Y

ALotAssignment—

2.3流程控制语句

-结构化程序设计1

■选择结构

・循环结构

结构化程序设计的特点

1.只有一个入口

2.只有一个出口

结构内的每一部分都有机会执行到

i吐

不存在死循环

.

块结构

■一个块(复合语句)是用一对花括号括起的任意数

量的简单Java语司,例如

publicstaticvoidmain(String[]args)

intn;

intk;

,块范围

)

}

块作用域

■块结构决定了块内定义的变量的作用域;块可以嵌

套,同时,不可以在嵌套的块内定义已有的变量名。

publicstaticvoidmain(String[]args)

(

intn;

(

intk;//kisonlydefineduptohere

intn;//error-cannotredefinen

)

}

条件语句

■lf-else语句是控制程序流程的最基本的形式,其中

else是可选的,前按卞逸两种形式来往用if:

if(bool-expr)

statements;

或者

if(bool-expr)

statements;

else

statements;

简单的if例子

if(yourSales>=target)

(

performance="Satisfactory”;

bonus=100+0.01*(yourSales-target);

}

else

performance="Unsatisfactory”;

bonus=0;

重复的if-else选择

■形如:

if(condition)

statementl;

elseif(condition2)

statement2;

elseif(conditions)

statements;

■■■■

else//最后一个必须是else

statement;

例子2

staticinttest(inttestval){//matchwithtarget

intresult=O;

if(testval>target)

result=-1;

elseif(testval<target)

result=1;

else

result=O;

returnresult;

)

开关语句

■多个分支结构的判断类型相同时,可以使用SW让ch语句。

■形如

switch(int-expr)

(

casevail:blockl;

break;

caseval2:block2;

break;

default:block;

}

switch语句说明

■表达式的值必须是整型或者字符型

case后的语句可以是多条语句,此时不需要

大括号。

每个case的末尾应该用break语句结束。

»MB.MB.fl*.MHBOHBMMB«■»■

switch语句的例子

1chargrade='B';2chargrade=B;

switch(grade)switch(grade)

(

case'A':score=5;case'A':score=5;

break;break;

caseB:score=6;caseB:score=6;

break;//nobreak

caseC:score=3;caseC:score=3;

break;break;

default:score=0;default:score=0;

))

switch语句的例子

3chargrade=,B,;

switch(grade)

default:score=0;

break;

case'A':score=5;

break;

caseB:score=6;

break;

caseC:score=3;

break;

4switch(month){

case1:

在匹配之后的case语句都被看

case3:

作是语句标号,不再进行匹

case7:

配。

days=31;

break;

case4:

case6:

days=30;

break;

)

循环语句

■满足条件时,反复执行某段程序。

■三种循环语句

•while语句

•do-while语句

•for语句

while语句

while语句在循环刚开始时,会计算一次“布

尔表达式”的值。后来的每一次循环,都会

在开始前重新计算一次。

"语法形式:

while(bool-expr)

statements;

例子

■1while(s=1)//error,Typemismatch:cannotconvertfrominttoboolean

i=4;

)

二匚

例子2

//:WhileTest.java

WhileTest{

publicstaticvoidmain(String[]args){

doubler=0;

while(r<0.99){

r=Math.random();

System.out.println(r);

)

)

)

dowhile语句

■while和do-while唯一的区别就是do-while肯定会至

少执行一次;而在while循环结构中,若条件第一次

就为false,那么其中的语句根本不会执行。在实际

应用中,while比do-while更常用一些。

语法格式

do{

statements;

}while(bool-expr);

for循环

for循环常常被称为计数器循环,在第一次反

复之前要进行初始化。随后,它会进行条件

测试,而且在每一次反复的时候,进行某种

形式的“步进”(Stepping)。

语法形式裁I】I

for(初始表达式;布尔表达式;步进)

语句;

例子

//:ListCharacters.java

//Demonstrates"for"loopbylisting

//alltheASCIIcharacters.

publicclassListcharacters{

publicstaticvoidmain(String[]args){

for(charc=0;c<128;C++)

if(c!=26)//ANSIClearscreen

System.out.println(

"value:"+(int)c+

"character:"+c);

}

)

说明

可以在for语句里定义多个变量,但它们必须

具有同样的类型,例如

for(inti=0,j=1;i<10&&j!=11;i++,j++)

I*bodyofforloop*/

说明2

逗号表达式:使用逗号连接的各表达式按照顺序进行计算。

■例

II:CommaOperator.java

publicclassCommaOperator{

publicstaticvoidmain(String[]args){

for(inti=1,j=i+10;i<5;i++,j=i*2){

System.out.println("i="+i+"j="+j);

)

)

)

输出如下:

i=1j=11

i=2j=4

i=3j=6

i=4j=8

二L□I

中断与继续

在任何循环语句的主体部分,可用break和

continue控制循环的流程。其中,break用于

强行退出循环,不执行循环中剩余的语句。

而continue则停止执行当前的循环,然后退

回循环起始处,开始新的反复。

如果在for循环里使用continue,那么它会跳

转到for循环的”步进“部分。

while(years<=100)

(

balance+=payment;

doubleinterest=balance*interestRate/100;

balance+=interest;

if(balance>=goal)

break;

years++;

}

labelledbreak

intn;

read_data:

while(...)

for(...)

if(n<0)

breakread_data;//breakoutofloop

}

)

例子

//BreakandContinue.java

publicclassBreakandContinue{

publicstaticvoidmain(String[]args){

for(inti=0;i<100;i++){

if(i==74)

break;--------

if(i%9!=0)

continue;

System.out.println(i);

}

}

)

执行结果

•0

•9

•18

•27

36

45

54

63

72

程序设计举例

System类是标准Java类,位于

例1---标准输出java.lang包内。

〃文件BasicJava.java

out是System类的一个静态成

publicclassBasicJava{员,它是一个输出流对象,

publicstaticvoidmain(String[]args){流用来控制键盘,显示器等

输入输出设备。

System.out.println(Hello,world");

System.out.print('Hello);.是Java的选择器,表示选择

类或对象的某个成员。

System.out.printC'world");

在屏幕输出文字串可以使用out

)

输出结果:对象的print/println方法:

)

Hello,worldprintin:输出一行后,光标移到下一

HelloWorld行。

Pressanykeytocontinue....print:输出一行之后,光标停留在

行尾。

■例1a--println的使用以及字符串连接

publicclassBasicJava{

Aprintln提供重载版本,允

publicstaticvoidmain(String[]args){许接受以下几类参数:

System.out.println⑴;〃打印整数11所有基本类型

2字符串类型String

System.out.println(1+2+"DGraphics");3Object对象类型

System.out.println("Java"+1+1);B当参数为字符串类型时,

允许通过“+”来连接字符

)输出结果:串和其他类型

}11int+int+;

3DGraphics此时先做加法,再完成连接

Java112"….”+int+int

■例1b--打印多行文字一条Java语句可以分

行,但不允许作为

publicclassBasicJava{参数的字符串分行

publicstaticvoidmain(String[]args){y

System.out.println(t(Javaisanobject'

orientedprogramminglanguage");//error

System.out.println(,(Javaisanobjecf

+,,orientedprogramminglanguage");〃right

}

}

■例2—简单计算:摄氏温度转换成华氏温度

publicclassBasicJava{

publicstaticvoidmain(String[]args){

//Temperaturetransition如果转换公式写成下面会怎么样?

intcelsius=20;fahrenheit=32+(9/5)*celsiut

intfahrenheit=32+(9*celsius)/5;^^

System.out.println("CelsiusTemperature:"+celsius);

System.out.println("FahrenheitTemperature:"+fahrenheit);

}Result:

)CelsiusTemperature:20

FahrenheitTemperature:68

■例为一简单计算一大小写字母转换

publicclassBasicJava{

publicstaticvoidmain(String[]args){

〃大小写转换

charlowerChar='c';〃或者lowerChar=99;

charupperChar='c'-32;〃方式1

intupperChar2=(A包HlowerChar;//方式2,等号右边是int型一

System.out.print("Character"+lowerChar);J

System.out.println("\'suppercaseletteris"+(char)upperChar);

Characterc'suppercaseletterisC

)

例2a-简单计算-一英镑和公斤转换

publicclassBasicJava{声明常量使用final关

publicstaticvoidmain(String[]args){键字。常量采用大

写字母加下划线的

finaldoubleKILOGRAM_PER_POUND=0

温馨提示

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

评论

0/150

提交评论