Java程序设计-2-数值计算.ppt

上传人:wuy****n92 文档编号:70791970 上传时间:2023-01-28 格式:PPT 页数:65 大小:245.50KB
返回 下载 相关 举报
Java程序设计-2-数值计算.ppt_第1页
第1页 / 共65页
Java程序设计-2-数值计算.ppt_第2页
第2页 / 共65页
点击查看更多>>
资源描述

《Java程序设计-2-数值计算.ppt》由会员分享,可在线阅读,更多相关《Java程序设计-2-数值计算.ppt(65页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、JavaJava程序设计程序设计第二章第二章 数值计算与数组数值计算与数组 学习目标学习目标掌握八个原始类型掌握八个原始类型理解标识符、变量和常量理解标识符、变量和常量掌握声明变量和常量掌握声明变量和常量辨认、描述并使用辨认、描述并使用JavaJava运算符;运算符;确认确认booleanboolean表达式和它们在控制构造中的要求;表达式和它们在控制构造中的要求;辨认赋值兼容性和在基本类型中的必要计算;辨认赋值兼容性和在基本类型中的必要计算;掌握数组的声明及基本操作掌握数组的声明及基本操作2.1 2.1 数据和变量声明数据和变量声明在程序中表示数据有两种方法,在程序中表示数据有两种方法,u一

2、种是在表达式中直接用原始值来表示,如表示数值一种是在表达式中直接用原始值来表示,如表示数值5 5、-6-6、7.867.86等等u另外一种是用一个特定的名字来间接表示另外一种是用一个特定的名字来间接表示u间接表示的最大优点在于可以重复使用一个名字来表间接表示的最大优点在于可以重复使用一个名字来表达某种类型的数值。也就是说,为了使用名字来进行达某种类型的数值。也就是说,为了使用名字来进行计算,必须事先为这个名字规定它可以表达的数值类计算,必须事先为这个名字规定它可以表达的数值类型,例如整数、单精度实数、字符等型,例如整数、单精度实数、字符等.u在在JavaJava语言中,所有的变量必须要首先声明

3、,然后才语言中,所有的变量必须要首先声明,然后才能使用。能使用。2.1.12.1.1标识符标识符 在在JavaJava编程语言中,标识符是赋予变量、类或编程语言中,标识符是赋予变量、类或方法的名称。方法的名称。标识符可从一个字母、下划线标识符可从一个字母、下划线(_)(_)或美元符号或美元符号($)($)开始,随后可跟除了在开始,随后可跟除了在JavaJava中作为运算符中作为运算符之外的任何可见字符所构成的连续字符串,但之外的任何可见字符所构成的连续字符串,但不能被空格或制表符隔开。不能被空格或制表符隔开。标识符是大小写区别对待的并且未规定最大长标识符是大小写区别对待的并且未规定最大长度度标

4、识符不能是关键字标识符不能是关键字 表2-1 有效与无效标识符有效标识符有效标识符无效标识符无效标识符IdentifieruserNameUser_name_sys_varl$change1User220user nameuser&name练习题练习题下面哪些是合法的标识符:下面哪些是合法的标识符:u$persons TwoUsers *point this endline$persons TwoUsers *point this endline2.1.2 Java2.1.2 Java关键字关键字 表2-2 Java编程语言中的关键字abstractcontinuefornewswitchas

5、sert*defaultgoto*packagesynchronizedbooleandoifprivatethisbreakdoubleimplements protectedthrowbyteelseimportpublicthrowscaseenum*instanceofreturntransient catchextendsintshorttrycharfinalinterfacestaticvoidclassfinallylongstrictfp*volatileconst*floatnativesuperwhile注:*未用;*1.2以后;*1.4以后;*1.5以后2.1.32.1

6、.3基本基本JavaJava类型类型 JavaJava的基本数据类型的基本数据类型 表2-3 Java的基本数据类型数据类型关键字占用字节缺省数值取值范围逻辑型boolean1falsetrue,false 字符型char2u0000u0000 uFFFF字节型byte10128 127短整型short2032768 32767整型int402147483648 2147483647长整型long809223372036854775808 9223372036854775807单精度float40.0F-3.4E383.4E38双精度double80.0D-1.7E3081.7E3082.1.

7、4 2.1.4 变量声明变量声明 JavaJava属于强类型的程序设计语言。所有变量和表达式在属于强类型的程序设计语言。所有变量和表达式在编译时都有明确的类型编译时都有明确的类型 修饰符修饰符 类型类型 变量名变量名=初值初值,变量名变量名=初值初值 例如:例如:int x int x 0,y 0,y 1,z=1;1,z=1;float afloat a0f,b=0.1f;0f,b=0.1f;char c1,c2,c3=c;char c1,c2,c3=c;double d1=1.0d;double d1=1.0d;boolean mycom=true;boolean mycom=true;逻辑

8、类型逻辑类型uboolean truth=true;/boolean truth=true;/声明一个布尔类型的变量,声明一个布尔类型的变量,并初始化其值为并初始化其值为truthtruth字符类型字符类型u使用使用charchar类型可表示单个字符。一个类型可表示单个字符。一个charchar代表一个代表一个16-bit16-bit无符号的(不分正负的)无符号的(不分正负的)UnicodeUnicode字符。一个字符。一个charchar文字必须包含在单引号内文字必须包含在单引号内()()。u a a ut t 一个制表符一个制表符uu?u?一个特殊的一个特殊的UnicodeUnicode字

9、符。字符。?应严格应严格按照四个按照四个1616进制数字进行替换进制数字进行替换 小测验小测验指出下面的错误声明,说明原因指出下面的错误声明,说明原因 char ch=AB;/char ch=AB;/单引号内只能包含一单引号内只能包含一个字符个字符 char ch1=“A”;/char ch1=“A”;/双引号表示界定的双引号表示界定的是一个字符串常量是一个字符串常量整数类整数类byte,short,int,long byte,short,int,long u2 2 十进制值是十进制值是2 2u077 077 首位的首位的0 0表示这是一个八进制的数值表示这是一个八进制的数值u0 xBAAC

10、0 xBAAC 首位的首位的0 x0 x表示这是一个表示这是一个1616进制的数值进制的数值u默认整数类文字属默认整数类文字属intint类型,除非在其后直接跟着一个类型,除非在其后直接跟着一个字母字母“L”“L”或者或者“l”“l”,L L表示一个表示一个longlong值。值。ubyte smallOne=7;byte smallOne=7;ushort count=10000;short count=10000;uint score=100;int score=100;ulong bigone=999999999L,largeOne;long bigone=999999999L,larg

11、eOne;浮点浮点floatfloat和和double double 如果一个数字文字包括小数点或指数部分,或者在数如果一个数字文字包括小数点或指数部分,或者在数字后带有字母字后带有字母F F或或f f(floatfloat)、)、D D或或d d(doubledouble),则),则该数字文字为浮点。该数字文字为浮点。3.14 3.14 一个简单的浮点值(一个简单的浮点值(a doublea double)4.02E23 4.02E23 一个大浮点值一个大浮点值2.718F 2.718F 一个简单的一个简单的floatfloat长度值长度值123.4E+306D 123.4E+306D 一个

12、大的带冗余一个大的带冗余D D的的doubledouble值值以下是一个有关整数类型变量的声明和初始化:以下是一个有关整数类型变量的声明和初始化:float pi=3.1415926,score;float pi=3.1415926,score;double weight=123.4E+36D;double weight=123.4E+36D;练习题练习题下面的哪些答案可以用以表示八进制值下面的哪些答案可以用以表示八进制值8 8。u010 0 x10 08 0 x8010 0 x10 08 0 x82.1.5 2.1.5 变量初始化变量初始化八种基本数据类型变量的默认值如下:八种基本数据类型变

13、量的默认值如下:ubooleanbooleanfalsefalseubytebyte0 0ucharcharu0000u0000,空,空,UnicodeUnicode码的码的00000000ushortshort0 0uintint0 0ulonglong0L0Lufloatfloat0.0f0.0fudoubledouble0.00.0从从JDK1.2JDK1.2(即(即Java 2Java 2)起,变量只有在赋初始值以后)起,变量只有在赋初始值以后才能使用。才能使用。进行下列变量说明进行下列变量说明u初始值为初始值为0 0的的intint变量变量a au初始值为初始值为10001000的的

14、longlong变量变量b bu初始值为初始值为3.43.4的的floatfloat变量变量c cu初始值为初始值为4 4的的charchar变量变量chchu初始值为初始值为truetrue的的booleanboolean变量变量e e2.1.6 2.1.6 转义字符转义字符 表2-4 其它转义字符转义字符作用Unicodeu005C”“u0022u0027b退格u0008f换页u000Cn换行u000Ar回车u000Dt制表符u00092.1.7 2.1.7 常量常量 常量用法通常用在开发中用标识符来表示一个常量用法通常用在开发中用标识符来表示一个固定值,便于在程序中通过名称来引用。固定值

15、,便于在程序中通过名称来引用。u声明同时初始化声明同时初始化final int MAX_SPEED=200;final int MAX_SPEED=200;u先声明,随后初始化先声明,随后初始化final int MAX_SPEED;final int MAX_SPEED;.MAX_SPEED=200;MAX_SPEED=200;作为一种良好的编码习惯,常量名的定义一般作为一种良好的编码习惯,常量名的定义一般均用大写来表示。均用大写来表示。2.2 2.2 运算符和表达式运算符和表达式 表达式就是由变量、对象、运算符和方法调用表达式就是由变量、对象、运算符和方法调用构成的式子,表达式应该按照构成

16、的式子,表达式应该按照JavaJava语法来构造,语法来构造,才可以被编译系统理解、执行,每个表达式都才可以被编译系统理解、执行,每个表达式都有一个某种类型的结果。有一个某种类型的结果。2.2.1 2.2.1 运算符运算符 表表2-4 运算符的结合方向运算符的结合方向Separator ();,R to L +-+-!(data type)L to R */%L to R +-L to R L to R =instanceof L to R =!=L to R&L to R L to R|L to R&L to R|R to L?:R to L =*=/=%=+=-=&=|=一元运算符即支持前

17、缀形式,也支持后缀形式。一元运算符即支持前缀形式,也支持后缀形式。如:如:operator op /operator op /前缀形式前缀形式op operator /op operator /后缀形式后缀形式所有的二元运算符都采用中缀表示,运算符在两所有的二元运算符都采用中缀表示,运算符在两个操作数中间。个操作数中间。op1 operator op2 /op1 operator op2 /中缀表示中缀表示JavaJava语言中只有一个三元运算符,也采用中缀表语言中只有一个三元运算符,也采用中缀表示。示。op1?op2:op3 /op1?op2:op3 /中缀表示中缀表示instanceofi

18、nstanceof是是JavaJava编程语言特有的运算符编程语言特有的运算符 2.2.2 2.2.2 算术表达式算术表达式 +加法加法op1+op25+6-减法减法op1-op27-2*乘法乘法op1*op23*6/除法除法op1/op27/2%求余求余op1%op27%2+自增自增+op 或或 op+a=a+1-自减自减-op 或或 op-a=a-1-取反取反-opa=-a程序:程序:ArithmeticDemo.javaArithmeticDemo.java根据根据JavaJava语言规范,在进行算术运算中需要注语言规范,在进行算术运算中需要注意以下几个问题:意以下几个问题:u只有整数类

19、型的数据才可以进行取余运算,浮只有整数类型的数据才可以进行取余运算,浮点数取余无法得出准确的结果。如点数取余无法得出准确的结果。如10.1%3.310.1%3.3的的结果可能为结果可能为0.200000520.20000052。两个整数做除法运算时,结果是截取商数的整两个整数做除法运算时,结果是截取商数的整数部分,小数部分被丢弃。如果需要保留,应数部分,小数部分被丢弃。如果需要保留,应该对算术表达式进行强制类型转换。如该对算术表达式进行强制类型转换。如1/21/2的的结果是结果是0 0,而,而(float)1/2)(float)1/2)的结果是的结果是0.50.5,要注,要注意意(float)

20、(1/2)(float)(1/2)的结果则是的结果则是0 0,请读者考虑为,请读者考虑为什么。什么。强制类型转换强制类型转换u在赋值的信息可能丢失的地方,编译器需要程序员用类在赋值的信息可能丢失的地方,编译器需要程序员用类型转换(型转换(typecasttypecast)的方法确认赋值。例如,它可以)的方法确认赋值。例如,它可以“挤压挤压”一个一个longlong值到一个值到一个intint变量中。显式转型做法如变量中。显式转型做法如下:下:long bigValue=99L;long bigValue=99L;int squashed=int squashed=(intint)(bigVal

21、uebigValue);u在上述程序中,期待的目标类型被放置在圆括号中,并在上述程序中,期待的目标类型被放置在圆括号中,并被当作表达式的前缀,该表达式必须被更改。一般来讲,被当作表达式的前缀,该表达式必须被更改。一般来讲,建议用圆括号将需要转型的全部表达式封闭。否则,转建议用圆括号将需要转型的全部表达式封闭。否则,转型操作的优先级可能引起问题。型操作的优先级可能引起问题。n算术表达式的结果类型算术表达式的结果类型结果类型 操作数的类型long操作数必须是整数类型,而且至少一个操作数类型是longint操作数必须是整数类型double至少一个操作数类型是doublefloat至少一个操作数类型是

22、float,操作数不能有类型double练习题练习题long bigval=6;long bigval=6;int smallval=99L;int smallval=99L;double z=12.414Fdouble z=12.414Ffloat z1=12.414;float z1=12.414;/6/6 是一个是一个intint类型,允许类型,允许/99L/99L是是longlong类型类型,不合法不合法/12.414F/12.414F是是floatfloat类型类型,允许允许/12.414/12.414是是doubledouble类型类型,不合不合法法设设 int a=1 int a

23、=1和和double d=1.0,double d=1.0,写出下列表达式的结写出下列表达式的结果果a=46/9a=46/9a=46%9+4*4-2a=46%9+4*4-2a=45+43%5*(23*3%2)a=45+43%5*(23*3%2)a=45+1+45*50%(-a)a=45+1+45*50%(-a)d=1.5*3+(+d)d=1.5*3+(+d)d=1.5*3+d+;d=1.5*3+d+;a%=3/a+3a%=3/a+3下列类型转换合法吗?下列类型转换合法吗?char c=A;char c=A;i=(int)c;i=(int)c;boolean b=true;boolean b=t

24、rue;i=(int)b;i=(int)b;float f=1000.34f;float f=1000.34f;int i=(int)f;int i=(int)f;double d=1000.34;double d=1000.34;i=(int)d;i=(int)d;int i=1000;int i=1000;char c=(char)i;char c=(char)i;int i=1000;int i=1000;boolean b=(boolean)iboolean b=(boolean)i2.2.32.2.3关系和条件表达式关系和条件表达式运算符运算符 运算运算用法用法功能功能大于大于op1

25、op2假如假如op1大于大于op2,返回结果是,返回结果是true=大于等大于等于于op1=op2假如假如op1大于等于大于等于op2,返回结,返回结果是果是true小于小于op1op2假如假如op1小于小于op2,返回结果是,返回结果是true=小于等小于等于于op1 1x 1)&(x+1)&(x+1)(x 1x 1)&(x+1)&(x+1)下列表达式正确吗下列表达式正确吗ux y 0 x y 0ux=y&yx=y&yux/=yx/=yux or yx or yux and yx and yu(x!=0)|(x=0)(x!=0)|(x=0)移位和位操作运算移位和位操作运算 运算符运算符运算运

26、算用法用法功能功能左移左移op1 右移右移op1 op2向右移位,从左边传递符号向右移位,从左边传递符号位位(最高位最高位)右移右移op1 op2向右移位,从左边补向右移位,从左边补0整数整数30的二进制表示就是的二进制表示就是00000000000000000000000000011110 运算符运算符进行算术或符号右移位。移位的结果进行算术或符号右移位。移位的结果是第一个操作数被是第一个操作数被2 2的幂来除,而指数的值是的幂来除,而指数的值是由第二个数给出的。例如:由第二个数给出的。例如:128 1 128 1 等价于等价于 128/2 128/21 1=64=64256 4 256 4

27、 等价于等价于 256/2 256/24 4=16=16-256 4-256 4 等价于等价于-256/2-256/24 4=-16=-16逻辑或非符号右移位运算符逻辑或非符号右移位运算符主要作用于位图,主要作用于位图,而不是一个值的算术意义;它总是将零置于最而不是一个值的算术意义;它总是将零置于最重要的位上。例如:重要的位上。例如:1010.2 1010.2 结果是结果是 111010.111010.u在移位的过程中,在移位的过程中,运算符使符号位被拷贝。运算符使符号位被拷贝。1010.2 1010.2结果是结果是001010.001010.位运算符位运算符运算符运算符运算运算用法用法功能功

28、能&位与op1&op2按对应位AND|位或op1|op2按对应位OR位异或op1 op2按对应位XOR求补op求对应位的补码在某些系统中,经常使用在某些系统中,经常使用&和和|处理一些变量,这些变处理一些变量,这些变量中的各个二进制位用作某些种类对象的状态指示器,量中的各个二进制位用作某些种类对象的状态指示器,例如一个颜色值包含了红黄兰三个分量,每个分量范例如一个颜色值包含了红黄兰三个分量,每个分量范围在围在0 0至至256256,可以定义一个,可以定义一个intint类型的变量类型的变量colorcolor,利,利用它的三个字节分别表示三个分量的值,如:用它的三个字节分别表示三个分量的值,如

29、:可以通过如下语句分别获得三个颜色分量的值可以通过如下语句分别获得三个颜色分量的值int color=0 x00F1AD07,red=0,yellow=0,blue=0;int color=0 x00F1AD07,red=0,yellow=0,blue=0;.red=color&0 x000000FF;red=color&0 x000000FF;yellow=color&0 x0000FF00;yellow=color&0 x0000FF00;blue=color&0 x00FF0000;blue=color&0 x00FF0000;赋值运算符赋值运算符 +=-=*=/=%=+=-=*=/=%

30、=&=|=&=|=快捷赋值运算快捷赋值运算 u op=op=等价于等价于 =op op 例如:例如:a+=2 a+=2 等价于等价于 a=a+2 a=a+2u要注意的是,快捷运算符的右端操作数是作为一个整要注意的是,快捷运算符的右端操作数是作为一个整体参与运算的。体参与运算的。例如:例如:a*=b+3 a*=b+3 等价于等价于 a=a*(b+3)a=a*(b+3)其它运算符其它运算符 运算符运算符运算运算用法用法功能功能?:条件op1?op2:op3如果op1为真,则返回op2的值。否则返回op3的值.成员参见面向对象部分的成员访问 数组声明、创建数组以及访问数组元素()括号改变表达式先后运

31、算顺序强制类型转换定界一个用逗号隔开的参数列表new创建创建对象或者数组instanceof实例op1 instanceof op2 如果op1是op2的实例,返回true数学函数数学函数 三角函数三角函数usin cos tan sin cos tan uasin acos atan atan2asin acos atan atan2数值函数数值函数uabs max min ceilabs max min ceilufloor round rint sqrtfloor round rint sqrtupow exp log random toRadians pow exp log rando

32、m toRadians 字符运算字符运算 因为字符是一个因为字符是一个2 2个字节的整数表示,因此可以对个字节的整数表示,因此可以对charchar类型的变量实行算术运算。如:类型的变量实行算术运算。如:uchar ch=a;char ch=a;u.uSystem.out.println(a=+(+ch);/System.out.println(a=+(+ch);/输出结果是输出结果是a=ba=buSystem.out.println(a=+(int)(+ch);System.out.println(a=+(int)(+ch);/输出结果是输出结果是a=99a=992.3 2.3 数组数组 数

33、组的作用在于提供了一种用来处理一组同类型数组的作用在于提供了一种用来处理一组同类型数据的存储和访问机制,因为在实际编程中,你数据的存储和访问机制,因为在实际编程中,你无法为每一个这样的数据声明一个变量。无法为每一个这样的数据声明一个变量。在在JavaJava语言中,数组元素可以是基本类型,也可语言中,数组元素可以是基本类型,也可是对象。实际上,是对象。实际上,JavaJava认为数组本身也是一个对认为数组本身也是一个对象。象。目标要求目标要求数组的声明、创建、初始化数组的声明、创建、初始化数组元素的访问数组元素的访问二维数组及多维数组二维数组及多维数组不规则数组不规则数组2.3.1 2.3.1

34、 数组的声明数组的声明传统方式传统方式uchar schar s ;uPoint pPoint p ,q;/Point,q;/Point是一个类类型是一个类类型,此处此处声明了两个数组声明了两个数组现代方式现代方式ucharchar s;s;uPointPoint p,q;p,q;23.2 23.2 创建数组创建数组数组声明后并不是就可以直接使用了,要想使用必须要实数组声明后并不是就可以直接使用了,要想使用必须要实际创建数组,为它分配实际的存储空间,然后才能存储元际创建数组,为它分配实际的存储空间,然后才能存储元素。素。us=s=newnew char char 2020;up=p=newne

35、w Point Point 100100;也可在也可在运行运行时,用变量表示数组的大小。时,用变量表示数组的大小。uint a;int a;uint len=10;int len=10;ua=new intlen;a=new intlen;注意:数组的大小一旦指定,就不可更改。注意:数组的大小一旦指定,就不可更改。2.3.3 2.3.3 初始化数组初始化数组初始化解决了当数组空间被分配时,如何填充空间的问题,初始化解决了当数组空间被分配时,如何填充空间的问题,而且预防了没有赋值就访问数组元素导致意外的情况。而且预防了没有赋值就访问数组元素导致意外的情况。1.1.当创建一个数组时,每个元素都将被

36、默认初始化。当创建一个数组时,每个元素都将被默认初始化。u在上述在上述charchar数组数组s s的例子中,每个值都被初始化为的例子中,每个值都被初始化为0 0 (u0000-null)(u0000-null)字符;字符;u数值类型的数组元素默认值为数值类型的数组元素默认值为0 0ubooleanboolean类型的数组元素默认值为类型的数组元素默认值为falsefalseu对象类型的数组元素默认值为对象类型的数组元素默认值为nullnullu在数组在数组p p的例子中的例子中,每个值都被初始化为每个值都被初始化为nullnull,表明它还未引用一个,表明它还未引用一个PointPoint对

37、象。在经过赋值对象。在经过赋值 p p 0 0 =new Point()=new Point()之后,数组的第一个之后,数组的第一个元素引用为实际元素引用为实际PointPoint对象。对象。2.Java2.Java编程语言允许使用下列形式快速创建数组编程语言允许使用下列形式快速创建数组,并完并完成初始化任务成初始化任务:uString names=String names=u “Georgianna”“Georgianna”,u “Jen”“Jen”,u “Simon”“Simon”u;其结果与下列代码等同:其结果与下列代码等同:uString names;String names;unam

38、es=new String names=new String 3 3;unames names 0 0 =“Georgianna”;=“Georgianna”;unames names 1 1 =“Jen”;=“Jen”;unames names 2 2 =“Simon”;=“Simon”;2.3.4 2.3.4 访问数组访问数组public class ArrayAccessDemo public class ArrayAccessDemo public static void main(String args)public static void main(String args)int

39、a=1,3,7,2,6,5;int a=1,3,7,2,6,5;for(int i=0;i for(int i=0;ia.lengtha.length;i+);i+)System.out.println(System.out.println(第第+i+i+个元素值为个元素值为+aiai););2.3.4 2.3.4 访问数组访问数组cont.cont.注意:注意:u1.1.在在JavaJava编程语言中,所有数组的下标都从编程语言中,所有数组的下标都从0 0开开始。访问数组元素可以通过下标进行,如始。访问数组元素可以通过下标进行,如a5a5或或者者aiai.u2.2.一个数组中元素的数量被作为

40、具有一个数组中元素的数量被作为具有lengthlength属性属性的部分而被数组对象存储的部分而被数组对象存储;这个值被用来检查所这个值被用来检查所有运行时访问的界限。如果发生了一个越出界限有运行时访问的界限。如果发生了一个越出界限的访问,那么运行时的报错(的访问,那么运行时的报错(异常异常)也就出现了)也就出现了.2.3.4 2.3.4 访问数组访问数组cont.cont.存储元素到数组存储元素到数组uint a=new int10;int a=new int10;ua0=10;a0=10;ua5=2;a5=2;ua7=8;a7=8;小结:小结:数组就是一个具有固定长度的包容多个相同类型对象

41、数组就是一个具有固定长度的包容多个相同类型对象的数据结构。它的元素类型甚至可以是数组。的数据结构。它的元素类型甚至可以是数组。数组的声明、创建和初始化可以分别完成,也可以一数组的声明、创建和初始化可以分别完成,也可以一次完成。次完成。用来指示单个数组元素的下标必须总是从用来指示单个数组元素的下标必须总是从0 0开始。开始。数组一旦创建后,其大小不可调整。数组一旦创建后,其大小不可调整。可以用数组对象的可以用数组对象的lengthlength属性来获得该数组可以容纳属性来获得该数组可以容纳的元素个数。的元素个数。可以通过下标(整数数值或整型变量)来引用数组内可以通过下标(整数数值或整型变量)来引

42、用数组内的指定位置的元素,下标不能超出数组元素个数。的指定位置的元素,下标不能超出数组元素个数。可使用相同的引用变量来引用一个全新的数组。可使用相同的引用变量来引用一个全新的数组。课堂练习课堂练习写出下面程序的运行结果写出下面程序的运行结果uclass Happy class Happy u public static void main(String args)public static void main(String args)u int index=1;int index=1;u int a=new int3;int a=new int3;u int bas=aindex;int ba

43、s=aindex;u int baz=bas+index int baz=bas+indexu System.out.println(abaz);System.out.println(abaz);u u 课堂练习课堂练习(cont.)(cont.)判断正确判断正确u数组中的每个元素都是同样的类型数组中的每个元素都是同样的类型u数组的大小在声明之后就是固定的了数组的大小在声明之后就是固定的了u数组的大小在创建后确定数组的大小在创建后确定u数组的元素必须是基本类型的数组的元素必须是基本类型的课堂练习课堂练习(cont.)(cont.)下面哪一个语句是有效的数组声明?下面哪一个语句是有效的数组声明?

44、uint i=new int(30);int i=new int(30);udouble d=new double30;double d=new double30;uPoint p=new Point(1.30);Point p=new Point(1.30);uint i=(3,4,5,7);int i=(3,4,5,7);uchar c=new char();char c=new char();ufloat f=1.0f,1.5f,4.6f;float f=1.0f,1.5f,4.6f;udouble d=new float30;double d=new float30;说出下面数组第说出

45、下面数组第3 3个元素的值个元素的值uint a=1,3,6,7,8;int a=1,3,6,7,8;uboolean b=new boolean10;boolean b=new boolean10;ufloat f=1.4f,5.6f,7.0f,2.5f,3.6f;float f=1.4f,5.6f,7.0f,2.5f,3.6f;udouble d=new double10;double d=new double10;ulong l;long l;2.3.52.3.5多维数组多维数组1 1多维数组多维数组 uJavaJava编程语言没有像其它语言那样提供多维数编程语言没有像其它语言那样提供多

46、维数组,因为一个数组可被声明为具有任何基础类组,因为一个数组可被声明为具有任何基础类型,所以你可以创建数组的数组型,所以你可以创建数组的数组(和数组的数组和数组的数组的数组,等等的数组,等等)。uint twoDim=new int 4int twoDim=new int 4;utwoDim0=new int5;twoDim0=new int5;utwoDim1=new int5;twoDim1=new int5;utwoDim2=new int5;twoDim2=new int5;utwoDim3=new int5;twoDim3=new int5;上述数组的声明也可以修改为:上述数组的声明

47、也可以修改为:uint twoDim=new int45;int twoDim=new int45;2.2.不规则的多维数组不规则的多维数组 uint twoDim=new int4;int twoDim=new int4;utwoDim0=new int 2;twoDim0=new int 2;utwoDim1=new int 4;twoDim1=new int 4;utwoDim2=new int 6;twoDim2=new int 6;utwoDim3=new int 8;twoDim3=new int 8;3.3.一种非法的声明一种非法的声明u尽管多维数组的声明格式,允许方括号在变量名

48、尽管多维数组的声明格式,允许方括号在变量名左边或者右边,但此种灵活性不适用于数组句法左边或者右边,但此种灵活性不适用于数组句法的其它方面。例如的其它方面。例如:new int:new int 4 4 是非法的,因是非法的,因为这样的声明,编译器无法预先为之分配空间。为这样的声明,编译器无法预先为之分配空间。4.4.多维数组的初始化多维数组的初始化u类似一维数组的初始化,多维数组的初始化即可类似一维数组的初始化,多维数组的初始化即可以在声明时直接初始化,也可以在创建时初始化。以在声明时直接初始化,也可以在创建时初始化。下面的例子演示了在声明时直接对数组进行初始下面的例子演示了在声明时直接对数组进

49、行初始化:化:uint factors=2,3,2,4,5,int factors=2,3,2,4,5,2,3,6,7;2,3,6,7;课堂练习课堂练习声明并创建一个如下数组。声明并创建一个如下数组。u包含包含3 3行,每行分别包含不同数目元素,元素行,每行分别包含不同数目元素,元素数依次为数依次为 5 5,4 4,6 6编写一个程序,逐个输出该数组的每个元素的编写一个程序,逐个输出该数组的每个元素的默认初始值。默认初始值。2.3.62.3.6操作数组复制、排序和查找操作数组复制、排序和查找复制:在数组内查找一个具体的值,或者将一复制:在数组内查找一个具体的值,或者将一个数组复制到另一个数组等

50、。个数组复制到另一个数组等。uSystemSystem类提供的方法类提供的方法arraycopy()arraycopy(),程序程序排序和查找排序和查找ArraysArrays类提供的主要方法类提供的主要方法usort(.)sort(.)升序排列升序排列ubinarySearch(.)binarySearch(.)使用折半搜索算法来搜索指使用折半搜索算法来搜索指定类型的有序数组定类型的有序数组ufill(.)fill(.)用指定类型的值填充同类型的数组用指定类型的值填充同类型的数组u程序程序public class ArrayCopy public class ArrayCopy public

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com