《第二章java基础知识.ppt》由会员分享,可在线阅读,更多相关《第二章java基础知识.ppt(107页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第二章java基础知识2.1.1 标识符 n标识符是赋予常量、变量、方法、类或者接口的名称,可以由用户自行定义,无长度限制,但要符合以下规则:q1、标识符可以由一个或多个字符组成q2、标识符必须以字母、下划线_或$为开头,后面可以包含数字、字母但不包含空格。q3、标识符中大小写字母有区别,但长度没有限制q4、关键字不能做为标识符使用标识符n在Java编程中约定俗成标识符命名方式:1.标识符的命名最好能“见名知意”。如student、name、age;2.类名称的每个单词都以大写字母开头。方法和变量第一个字母小写。2.1.2 关键字 nJava中的关键字,它是Java特意保留的,具有特殊的意义和
2、用途,不可以任意使用或更改,当我们在编写程序时要注意不要使用它作为变量或方法名称,以免造成程序编译的错误。nJava的关键字有:qAbstract、default、if、package、this、Boolean、do、implements、private、throw、Break、double、import、protected、throws、Byte、else、instanceof、public、transient、Case、false、interface、short、try、Catch、final、long、static、void、Char、finally、native、super、volat
3、ile、Class、float、new、switch、while、Continue、for、null、synchronized。ngoto和const在Java中虽然不再使用,但是还作为关键字存在。注释n注释对程序的标注或解释。Java中注释有三种方法单行注释、多行注释、文档注释。n单行注释int age;/变量表示年龄n多行注释 /*这是 一段 注释*/n文档注释 将用来生成HTML格式的代码报告,所以注释文档必须书写在类、域、构造函数、方法、定义之前。注释文档由两部分组成描述、块标记。文档注释由javadoc命令,生成HTML文件。如:n/*n*author:lgnn*此类功能是进行打印h
4、ello功能 n*/public class Helloworld public static void main(String args)System.out.print(hello world!);n常用的javadoc标记如下:nauthor:指定java程序作者。可以出现在类或者接口文档注释中。nversion:程序版本。可以出现在类或者接口文档注释中。ndeprecated:不推荐使用的方法。可以出现在类,接口,方法,构造器,属性注释文档中。nreturn:方法返回值的说明。可以出现在方法,构造器注释。nsee:指定参考内容。可以出现在类,接口,方法,构造器,属性注释文档中。nexc
5、eption:抛出异常类型。可以出现在方法,构造器注释文档中。nthrows:和exception同义,抛出异常.可以出现在方法,构造器注释文档中。2.2 Java的基本数据类型 JAVA数据类型分为两大类:基础数据类型和引用数据类型。Java编程语言定义了编程语言定义了8种种基本数据类型基本数据类型整数类型整数类型byte、short、int和long浮点类型浮点类型double和float逻辑类型boolean字符类型字符类型char引用数据类型有类、接口、数组 n数据类型在程序中就具有两个方面的作用:一是确定了该类型数据的取值范围,这实际上是由给定数据类型所占存储单元的多少而决定的;二是
6、确定了允许对这些数据所进行的操作。表2-1 Java的基本数据类型 类型内容默认值内存空间取值范围booleantrue/falsefalse16位true或falsecharUnicodeu000016位u0000-uFFFFbyte整数08位-128+127short整数016位-32768+32767int整数032位-2147483648+2147483647long整数064位-9223372036854775808+9223372036854775807float浮点0.032位3.40282347E+381.40239846E-45double浮点0.064位1.79769313
7、486231570E+308 4.94065645841246544E-3242.2.1 布尔型 n布尔型,也就是我们所说的真或假,使用关键字boolean来定义逻辑变量,值为常量:true、false。n【例2-1】一个布尔型应用的示例。q定义了一个布尔类型变量y,起初给它赋值false,然后又赋值为true,在if条件判断中,因为y是true,条件满足,执行语句所以执行System.out.println(y is true);,最后是一个表达式109,结果为真,所以显示true。npublic class BoolTest npublic static void main(String
8、args)nboolean y;ny=false;nSystem.out.println(y is+y);ny=true;nif(y)nSystem.out.println(y is true);nnSystem.out.println(109?+(10 9);nn 2.2.2 字符型 n字符型在C语言中占8位,而Java中由于使用的是unicode,所以占16位。n【例2-2】举个例子说明一下字符型数据的使用。qpublic class CharDemo qpublic static void main(String args)qchar ch1,ch2;qch1=65;qch2=B;qSy
9、stem.out.print(ch1 and ch2);qSystem.out.println(ch1+ch2);qqn大写的A在ASCII字符集中的值为65,因为ASCII中的字符集占了Unicode中的前127个字符,所以ASCII中的技巧这里面一样用。从上面可以看出,给字符型变量ch1赋值65和A作用是一样的。程序2-2运行结果如下所示。图2-2字符型数据应用示例运行结果2.2.3 整数型 nJava定义了四种整数型,即字节型(byte),短整型(short),整型(int),长整型(long)。在Java语言中没有无符号这个关键字(unsigned),这个有区别于C语言,也就是说所有的
10、数都为有符号数。2.2.4 浮点型 n浮点型,也就是所说的实数,其中单精度数float占4个字节,双精度数占8个字节,当需要保持多次反复迭代的计算的精确性时或操作值很大时,是最好的选择了。n【例2-4】下面例子是一个双精度数计算圆面积的例子。q/计算圆的面积qpublic class Area qpublic static void main(String args)qdouble pi,r,a;qr=0.3;/半径qpi=3.1416;qa=pi*r*r;/面积qSystem.out.println(面积为:+a);qq 2.2.5 基本数据类型的转换 n在Java中类型由低到高的顺序为:b
11、yte、short、char、int、long、float、double。n1、自动转换:当由低到高时可以自动转换,比如:qbyte b;int i=b;long l=b;float f=b;double d=b;q那么这些都可以自动转换,是合法的,但byte、short、char是平级的不能自动转换,必须使用强制转换。n2、强制转换:由高级到低级时,必须使用强制转换。qint i=99;byte b=(byte)i;char c=(char)i;n【例2-5】下面例子说明这两种转换。qpublic class ChangeTest qpublic static void main(Strin
12、g args)qbyte b=15;qint i=b;qlong l=b;qfloat f=b;qdouble d=b;qSystem.out.println(b);qSystem.out.println(i);qSystem.out.println(l);qSystem.out.println(f);qSystem.out.println(d);qint s=99;qbyte n=(byte)s;qSystem.out.println(s);qSystem.out.println(n);qq注意注意:在强制转换时有时会导致溢出或降低精度,比如整型值赋给byte时,如果整型值大了,会自动取模再
13、赋值,而浮点数赋值给整数时会去掉小数点。n4、将CHAR型值直接做为数值转换为其他数据类型n【例2-7】CHAR型值直接做为数值转换为其他数据类型的例子。qpublic class ChangeTest2 qpublic static void main(String args)qint i;qchar c1=A;qi=c1;qSystem.out.println(i);qchar c2=(char)(i+2);/此处要强制转换qSystem.out.println(c2);qq变量的概念与作用n程序中表示数据的方式:一是直接用具体值表示,另一种是用特定的名字来间接表示,它的值可以改变,称为变
14、量。n变量就是系统为程序分配一段内存单元来存放各种类型数据。变量名就代表内存中的数据。变量声明n变量有三个要素:变量类型、变量名和变量的值。n如 int a=9;n n变量采用标识符命名 变量名习惯命名规则是以小写字母开头,单词之间不要有分隔符,第二及后面单词第一个字符用大写字母。int stuNumber;变量先声明后使用。变量经声明之后,若在使用前没有赋值,则在编译时会指出语法错误。变量赋值n使用变量时,变量必须有值,给变量赋值有两种方式:1.声明变量同时,直接赋值int a=1;char ch=d;2.先声明,再用赋值语句赋初值 double area;area=3.2;程序中使用变量1
15、 public class Shirt2 3 public static void main(String args)4 5 double price=29.99;6 int ID=42889;7 System.out.println(Shirt price:+price);8 System.out.println(Shirt ID:+ID);9 10 变量赋值例子变量赋值例子public class Assign public static void main(String args)int x,y;float z=3.414f;double w=3.1415;boolean truth=t
16、rue;char c;c=A;x=6;y=1000;y=3.1415926;truth=1;为什么为什么不合法不合法基本数据类型在内存中的存储方式int ID=42889;42889IDID0 x0000F10AC存储空间存储空间与与int类型一样大小类型一样大小变量的作用域n作用域就是在程序中定义了一个区域n变量在它所定义的语句块中起作用。n一个语句块就是用一对大括号 括起来的代码段,块定义了一个作用域。n在作用域内定义的变量仅在该域内有效,对于该域之外的代码“不可见”信息隐藏的机制变量根据作用域分类的类别n类成员变量是定义在类里面,但不在类里面的某个方法中,其作用域为整个类。n方法参数用于
17、将方法外的数据传递给方法,其作用域就是方法的方法体。n异常处理参数将数据传递给异常处理代码,其作用域是异常处理部分。变量作用域的例子1 int i;int j=3;/对这个作用域而言,i是局部变量 i=2;System.out.print(i+j);System.out.print(i);/这里不可以访问i,i在这里不存在变量作用域的例子2public class Test1.public static void main(Sting arg)2.int a=1;/a的作用域在2-7行3.int b=3;/b的作用域在3-5行4.System.out.print(“b=”+b);5.6.Sys
18、tem.out.print(“a=”+a);7.变量作用域的例子3n在某个局部作用域内定义的变量不能在其嵌套的局部作用域中重新定义。int i=2;int j=4;int i=6;j=8;/出错,i已被定义常量n程序执行过程中,其值不会发生变化的量,称为常量。n常量的遵循先声明后使用的原则。Java中声明常量需使用关键字final。n声明同时初始化如 final double PI=3.1415;n 先声明,后初始化如final double PI;PI=3.1415;注意:1.常量使用标识符必须符合Java标识符的命名规则2.常量一旦赋值,其值不发生改变。、3.常量的名字全部大写,单词之间用
19、下划线_连接,4.如 final double BASIC_LEVEL=6.0;2.3 运算符、表达式 nJava提供了丰富的运算符,如算术运算符、关系运算符、逻辑运算符、位运算符等。运算符n对基本数据类型的常量与变量进行加工的过程成为运算,表示各种不同运算的符号称为运算符,参与运算的数据称为操作数。n运算符集合(+,=,=,)提供了Java语言内置的核心运算集合,用它们能够完成全部的基本计算型运行,并且能够构造复合表达式。nJava语言的运算符分成以下几类:一元运算符二元或三元运算符前缀或中缀或后缀运算符运算符分类n按照运算符功能来分,基本的运算符分包括算术运算符、关系运算符、逻辑运算符、位
20、运算符、赋值运算符、条件运算符等。算术运算 算术运算符包括加号(+)、减号(-)、乘号(*)、除号(/)、取模(%)、自增运算符(+)、自减运算符(-)等。在算术运算中,有以下值得注意的地方:(1 1)算术运算符的总体原则是先乘除、再加减,括号优先。(2 2)整数除法会直接砍掉小数,而不是进位。(3 3)与C C语言不同,对取模运算符%来说,其操作数可以为浮点数。如:37.2%10=7.237.2%10=7.2。算术运算(续)(4 4)JavaJava也用一种简写形式进行运算,并同时进行赋值操作。例如,为了将1010加到变量x x,并将结果赋给x x,可用:x+=10 x+=10。(5 5)J
21、avaJava对加运算符进行了扩展,使它能够进行字符串的连接,如“abcabc”+“defdef”,得到串“abcdefabcdef”。算术运算(续)(6 6)前缀+、-与后缀+、-的区别:+i+i(前缀+)在使用i i之前,使i i的值加1 1,因此执行完+i+i后,整个表达式和i i的值均为i+1i+1;i+i+(后缀+)在使用i i之后,使i i的值加1 1,因此执行完i+i+后,整个表达式的值为i i,而i i的值变为i+1i+1。-i-i在使用i i之前,使i i的减1 1,因此执行完-i-i后,整个表达式和i i的值均为i-1i-1;i-i-在使用i i之后,使i i的减1 1,因
22、此执行完i-i-后,整个表达式的值为i i,而i i的值变为i-1i-1。递增、递减运算符的示例。npublic class IncrementDecrement npublic static void main(String args)nint i=0;nSystem.out.println(+i);nSystem.out.println(-i);nn关系运算n关系运算符用来比较两个值,返回布尔类型的值truetrue或falsefalse。关系运算符都是二元运算符。n关系运算符有:=!=!=5 结果 +(10 5);nSystem.out.println(10=5 结果 +(10=5);n
23、System.out.println(10 5 结果 +(10 5);nSystem.out.println(10=5 结果 +(10=60?是:否);nn逻辑运算符逻辑运算符例子逻辑运算 n下面是逻辑运算的示例。qpublic class LogicalOperator qpublic static void main(String args)qint number=75;qSystem.out.println(number 70&number 80|number 80|number 75);qq位运算符n在JavaJava语言中,位运算符有按位与运算符(&)、按位或运算符(|)、按位异或运
24、算符()、按位取反运算符()、左移位运算符()。按位与运算(&)参与运算的两个值,如果两个相应位都为1 1,则该位的结果为1 1,否则为0 0。即:0&0=0,0&1=0,1&0=0,1&1=1 int x=4;int y=2;nSystem.out.print(x&y);按位或运算(|)参与运算的两个值,如果两个相应位都是0 0,则该位结果为0 0,否则为1 1。即:0|0=0,0|1=1,1|0=1,1|1=1按位异或运算()参与运算的两个值,如果两个相应位的某一个是1,另一个是0,那么按位异或()在该位的结果为1。也就是说如果两个相应位相同,输出位为0,否则为1。即:00=0,01=1,
25、10=1,11=0按位取反运算()按位取反运算()属于一元运算符,它只对一个自变量进行操作(其他所有运算符都是二元运算符)。按位取反生成与输入位的相反的值若输入0,则输出1;输入1,则输出0。即:0=1,1=0 例如:a=1001;a=0110;左移位运算符()运算符执行一个左移位。作左移位运算时,右边的空位补0。在不产生溢出的情况下,数据左移1位相当于乘以2。例如:int a=64,b;a=1000000 b=a与与)运算符执行一个右移位(带符号),左边按符号位补0或1 运算符同样是执行一个右移位,只是它执行的是不带符号的移位。也就是说对以补码表示的二进制数操作时,在带符号的右移中,右移后左
26、边留下的空位中添入的是原数的符号位(正数为0,负数为1);在不带符号的右移中,右移后左边留下的空位中添入的一律是0。例如:a=10011011 a2=11100110 b=00011100 b2=0000011赋值运算符n基本赋值运算符是“=”。n赋值运算是二元运算。n赋值运算符有:=+=-=*=/=%=&=|=赋值运算符 n赋值运算符还有其他几个,如表2-2所示。赋值运算符范例结果+=a+=ba=a+b-=a-=ba=a-b*=a*=ba=a*b/=a/=ba=a/b%=a%=ba=a%b&=a&=ba=a&b|=a|=ba=a|b=a=ba=a b=a=ba=a=a=ba=a b表2-2赋
27、值运算符条件运算符n条件运算符(“?:”)是惟一的三元运算符。与C C语言中的使用规则是完全一致的,使用的形式是:x?y:z;上面的三目条件运算的规则是:先计算表达式x x的值,若x x为真,则整个三目运算的结果是表达式y y的值;若x x为假,则整个三目运算的结果是表达式z z的值。下面的例子实现了从两个数中找出较大的数的功能。int a=3,b=4;int max=ab?a:b;maxmax的值为4 4。一个条件运算符的示例。nimport java.util.Scanner;npublic class ConditionalOperator npublic static void mai
28、n(String args)nScanner scanner=new Scanner(System.in);nSystem.out.print(请输入学生分数:);nint scoreOfStudent=scanner.nextInt();nSystem.out.println(该生是否及格?+(scoreOfStudent=60?是:否);nn运算符优先级n一元后缀 .()+-n一元前缀 +-+=!n创建和强制类型转换 new (type)n倍数 */%n增量 +-n移位 n关系 =&=|=2.4语句 在Java语言中,语句可分为以下5类:n1方法调用语句qSystem.out.printl
29、n(“Hello”);n2表达式语句q由一个表达式构成一个语句,最典型的是赋值语句,如:x=23;q一个表达式加上一个分号就构成了一个语句,分号是语句不可缺少的部分。n3复合语句q可以用把一些语句括起来构成复合语句,如:q z=23+x;qSystem.out.println(“Hello”);n4控制语句q包括条件语句和switch开关语句。n5package语句和import语句qPackage语句和import语句与类、对象有关,相关内容在第3章中介绍。2.4.2 控制结构 nJava的程序结构包括顺序结构、选择结构和循环结构。n顺序结构最基本和常见的形式。按照语句出现的顺序逐步从上到下
30、运行,直至最后一句。n public class Area npublic static void main(String args)n/TODO Auto-generated method stubn final double PI=3.1415;n double radius=3;n double area;n area=PI*radius*radius;n System.out.print(圆的面积:+area);nnn2.选择结构(if和switch语句)nA.单分支if语句。基本语法是:qif(表达式)q/代码语句qn判断一个整数是否为偶数?npublic class Even np
31、ublic static void main(String args)n/TODO Auto-generated method stubn int a=8;n int result;n result=a%2;n if(result=0)n n System.out.print(a+是偶数);n nnb.双分支语句if-else语句n为了解决“如果”发生了,就要的需要,Java提供了if条件控制语句。它的语法如下:qif(条件式)q 语句1;qelseq 语句2;n如果在if后有两个以上的语句,称之为复合语句(Compound Statement),此时必须使用 定义程序块(Block)将复合语
32、句包括起来。例如:qif(条件式)q 语句1;q 语句2;qqelse q 语句3;q 语句4;q【例2-19】使用if条件式来判断使用者的输入是奇数还是偶数。nimport java.util.Scanner;npublic class OddDecider3 npublic static void main(String args)nScanner scanner=new Scanner(System.in);nSystem.out.print(请输入数字:);nint input=scanner.nextInt();nint remain=input%2;/求除 2 的余数nif(rem
33、ain=1)/如果余数为1nSystem.out.println(input+为奇数);nelsenSystem.out.println(input+为偶数);nnC、多分支选择语句qif(表达式1)q 语句1;q 语句2;qqelse if(表达式2)q 语句3;q 语句4;q else if(表达式3)q 语句5;q 语句6;qqelse 语句n;当程序遇到多个分支选择时,依次判断表达式1到表达式n的值,当某个表达式为true时,执行相应分支选择语句。将成绩百分之转换为等级制npublic class Grade npublic static void main(String args)n
34、/TODO Auto-generated method stubn int grade=79;n char level;n if(grade=90)n level=A;n n else if(grade=80)n level=B;n n else if(grade=70)n level=C;n n else if(grade=60)n level=D;n n else level=E;n System.out.print(成绩转换为等级制的结果是:+level);nnD、嵌套if语句n在if语句中又包含一个或多个if语句称为if语句的嵌套,这种结构一般用在较为复杂的流程控制中。n例如,聪聪妈妈
35、对聪聪说:“如果这次考试得100分,则进行奖励(如果星期天不下雨,就带聪聪去公园,否则给聪聪买辆玩具车);否则,如果得95分以上100分以下,则没有奖励和处罚;否则星期天在家温习功课”。上述转换为伪代码为n如果聪聪考试得100分 如果星期天不下雨带聪聪去公园 否则 给聪聪买辆玩具车否则 如果得95分以上100分以下 没有奖励和处罚 否则 星期天在家温习功课n伪代码描述的算法可以转换为以下Java代码:if(聪聪考试得100分)if(星期天不下雨)带聪聪去公园 n else 给聪聪买辆玩具车 n else if(得95分以上100分以下)没有奖励和处罚 else 星期天在家温习功课78例:问题:
36、判断某一年是否为闰年。if(year%4=0)if(year%100=0)if(year%400=0)leap=1;else leap=0;else leap=1;else leap=0;if(year%4=0&year%100!=0)|(year%400=0)leap=1;2switch 条件式 nswitch只能比较数值或字符,使用适当的话,可比if判断式有效率。switch的语法结构如下:qswitch(变量名称或表达式)q case 符合数字或字符:q 语句1;q break;q case 符合数字或字符:q 语句2;q break;q default:q 语句3;q default语
37、句 语法上可有可无,但它是一种防错性程序设计(defensive programming)一定应牢牢记住:可用的系统应是健壮的!【例2-21】使用switch来改写处理学生的成绩等级问题。nimport java.util.Scanner;npublic class ScoreLevel2 npublic static void main(String args)nScanner scanner=new Scanner(System.in);nSystem.out.print(请输入分数:);nint score=scanner.nextInt();nint level=(int)score/
38、10;nswitch(level)ncase 10:ncase 9:System.out.println(得A);nbreak;ncase 8:System.out.println(得B);nbreak;ncase 7:System.out.println(得C);nbreak;ncase 6:System.out.println(得D);nbreak;ndefault:System.out.println(得E(不及格);nnn2.4.3 循环语句 n1for循环 n在Java中如果要进行重复性的指令执行,可以使用for循环式。它的基本语法如下:qfor(初始式;判断式;递增式)q 语句1;
39、q 语句2;q n如果语句只有一个,也就是非复合语句,可以省略不写。for循环的第一个初始语句只会执行一次,之后每次重新进行循环时,都会根据判断式来判断是否执行下一个循环,而每次执行完循环之后,都会执行递增式。【例2-22】for循环的功能示例。npublic class SimpleLoopFor npublic static void main(String args)nfor(int i=0;i 10;i+)nSystem.out.print(+i);nn2while循环 nJava提供while循环式,它可以根据所指定的条件式来判断是否执行循环体。语法如下:qwhile(条件式)q 语
40、句1;q 语句2;q【例2-25】计算输入成绩平均的程序。nimport java.util.Scanner;npublic class ScoreAverage npublic static void main(String args)nScanner scanner=new Scanner(System.in);nint score=0;nint sum=0;nint count=-1;nwhile(score!=-1)ncount+;nsum+=score;nSystem.out.print(输入分数(-1结束):);nscore=scanner.nextInt();nnSystem.o
41、ut.println(平均:+(double)sum/count);nn2.4.4 break和continue nbreak可以离开当前switch、for、while、do while的程序块,并前进至程序块后下一条语句,在switch中主要用来中断下一个case的比较。在for、while与do while中,主要用于中断目前的循环执行。ncontinue的作用与break类似,主要用于循环,所不同的是break会结束程序块的执行,而continue只会结束其之后程序块的语句,并跳回循环程序块的开头继续下一个循环,而不是离开循环。n例如:nfor(int i=1;i 10;i+)n if
42、(i=5)n break;n System.ut.println(i=+i);nn这段程序会显示i=1到4,因为当 i 等于5时就会执行break而离开循环。n看下面这个程序:nfor(int i=1;i 10;i+)n if(i=5)n continue;n System.out.println(i=+i);n n这段程序会显示1到4,与6到9。当 i 等于5时,会执行continue直接结束此次循环,这次循环中System.out.println()行并没有被执行,然后从程序块开头执行下一次循环,所以5并没有被显示。publicpublic classclass BreakAndConti
43、nue BreakAndContinue publicpublic staticstatic voidvoid main(String args)main(String args)forfor(intint i=0;i 100;i+)i=0;i 100;i+)if if(i=74)(i=74)breakbreak;/Out of for loop/Out of for loop if if(i%9!=0)(i%9!=0)continuecontinue;/Next iteration/Next iteration System.out.println(i);System.out.println
44、(i);带标签的带标签的breakbreak、continuecontinue语句语句publicpublic classclass LabeledFor LabeledFor publicpublic staticstatic voidvoid main(String args)main(String args)intint i=0;i=0;outer:outer:/Cant have statements here/Cant have statements here forfor(;(;truetrue;);)/infinite loop/infinite loop inner:inner
45、:/Cant have statements here/Cant have statements here forfor(;i 10;i+)(;i 10;i+)prt(prt(i=i=+i);+i);if if(i=2)(i=2)prt(prt(continuecontinue););continuecontinue;if if(i=3)prt(i=3)prt(breakbreak);i+;);i+;breakbreak;if if(i=7)prt(i=7)prt(continue outercontinue outer);i+;);i+;continuecontinue outer;oute
46、r;if if(i=8)prt(i=8)prt(break outerbreak outer););breakbreak outer;outer;forfor(intint k=0;k 5;k+)k=0;k 5;k+)if if(k=3)prt(k=3)prt(continue innercontinue inner););continuecontinue inner;inner;/Cant break or continue/Cant break or continue /to labels here/to labels here staticstatic voidvoid prt(Stri
47、ng s)System.out.println(s);prt(String s)System.out.println(s);2.6 数组 n数组的概念n数组(Array)是一组相同数据类型数据的有序集合。在Java语言中数组元素可以由简单数据类型组成也可以由对象组成。数组中的每个元素都具有相同的数据类型,可以用一个统一的数组名和一个下标来唯一地确定数组中的元素。n数组主要具有下面的特点:q数组是相同数据类型的元素的集合。q数组中的各元素是有先后顺序的,在内存中按照这个先后顺序连续存放在一起。q数组元素用整个数组的名字和其在数组中的顺序位置来表示。如a0表示名字为a的数组中的第一个元素,a1表示
48、数组a中的第二个元素。q从数组的构成形式上看,可将其分为一维数组和多维数组。一维数组n1 一维数组的定义qtype arrayName;q类型(type)可以为Java中任意的数据类型,包括简单类型和复合类型。例如:qint intArray;qDate dateArray;n2 一维数组的初始化 q 静态初始化 nint intArray=1,2,3,4;nString stringArray=abc,How,you;n 动态初始化 n1)简单类型的数组 qint intArray;qintArray=new int5;n2)复合类型的数组 qString stringArray;qStri
49、ng stringArray=new String3;/为数组中每个元素开辟引用空间(32位)qstringArray0=new String(How);/为第一个数组元素开辟空间 qstringArray1=new String(are);/为第二个数组元素开辟空间 qstringArray2=new String(you);/为第三个数组元素开辟空间 n3一维数组元素的引用 n数组元素的引用方式为:qarrayNameindex qindex为数组下标,它可以为整型常数或表达式,下标从0开始。每个数组都有一个属性length指明它的长度,例如:intArray.length指明数组intA
50、rray的长度。多维数组nJava语言中,多维数组被看作数组的数组。n1二维数组的定义 qtype arrayName ;qtype arrayName;n2二维数组的初始化 n 静态初始化 qint intArray =1,2,2,3,3,4,5;qJava语言中,由于把二维数组看作是数组的数组,数组空间不是连续分配的,所以不要求二维数组每一维的大小相同。n 动态初始化 n1)直接为每一维分配空间,格式如下:qarrayName=new typearrayLength1arrayLength2;qint a =new int23;n2)从最高维开始,分别为每一维分配空间:qarrayName