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

下载本文档

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

文档简介

1、第第2 2章章 Java Java语法基础语法基础2.4 数组 2.1 常量和变量 2.2 运算符和表达式 2.3 流程控制2 . 1 常量和变量常量和变量2.1.1 数据类型数据类型各基本数据类型的大小及取值范围。如表2.1数 据 类 型关 键 字在内存占用的字节数取 值 范 围默 认 值布尔型boolean1个字节(8位)true、falsefalse字节型byte1个字节(8位)-128127(byte)0短整型short2个字节(16位)-215215-1(short)0整型int4个字节(32位)-231231-10长整型long8个字节(64位)-263263-10L字符型char

2、2个字节(16位)u0000uffffu0000单精度浮点型float4个字节(32位)-3.4028E+38-1.4013E-45和1.4013E-453.4028E+380.0F双精度浮点型double8个字节(64位)-1.7977E+308-4.9E-324和4.9E-3241.7977E+3080.0D2.1.2 2.1.2 标识符和关键字标识符和关键字标识符是指程序中包、类、接口、变量或方法名字的字符序列。Java语言要求标识符必须符合以下命名规则。l标识符由数字(09)、大写字母(AZ)、小写字母(az)、下划线“_”以及美元符号“$”等组成,并且长度不受限制。l标识符的首字符必

3、须是字母、下划线“_”或美元符号“$”。l不能把关键字和保留字作为标识符。l标识符是大小写敏感的,例如,hello与Hello是两个不同的标识符。2.1.2 2.1.2 标识符和关键字标识符和关键字合法的标识符非法的标识符说 明HelloWorldclass不能用关键字做标识符_12312.3b标识符不能以数字开头$a123Hello World标识符中不能含有空格SubjectSubject#标识符中不能含有“#”表2.2是一个标识符正误对照表,列举了一些合法的标识符和非法标识符。2.1.2 2.1.2 标识符和关键字标识符和关键字 在命名Java标识符时,应做到“见名知意”。Java中一些

4、被赋予特定含义、用作专门用途的字符序列称为关键字,包括:l 数据类型:boolean、byte、short、int、long、char、float、double。l 包引入和声明:import、package。l 类和接口声明:class、extends、implements、interface。l 流程控制:if、else、switch、do、while、case、break、continue、return、default、while、for。l 异常处理:try、catch、finally、throw、throws。l 修饰符:abstract、final、native、private、p

5、rotected、public、static、synchronized、transient、volatile。l 其他:new、instanceof、this、super、void、assert、const*、enum、goto*、strictfp。2.1.3 2.1.3 常量常量1布尔型常量(布尔型常量(boolean) 布尔型常量值只有true或false,它们也可看成是Java语言的关键字,不能挪作他用且必须小写。true表示“逻辑真”,false表示“逻辑假”。 2整型常量(整型常量(int或或long)整型常量有十进制、八进制、十六进制三种表示法:(1)十进制十进制:十进制整数,如1

6、23、-48等。(2)八进制八进制:以数字0开头的八进制整数,如017、-021等。(3)十六进制十六进制:以0 x或0X开头的十六进制整数,如0 x12a6、0XAB12、-0 x1a0等。2.1.3 2.1.3 常量常量3浮点型常量(浮点型常量(float或或double)(1)十进制小数形式十进制小数形式:小数点两边的数字不能同时省略且小数点不能省略。合法的double型浮点数如3.14、1.0。(2)科学记数法形式科学记数法形式:如1.2610-21在Java中表示为1.26e-21或1.26E-21,这是一个double型的浮点数。E或e的前面必须有数字且E或e后边必须是一个正/负整

7、数(正号可省略)。由于E或e的后边必须是一个整数,那么1.2610-2.65该如何表示?可用java.lang.Math类中的方法pow(),表示为:Math.pow(1.26,-2.65)。2.1.3 2.1.3 常量常量4字符型常量(字符型常量(char)(1)对于可输入字符,用单引号将字符括起来,如,a、啊 等。(2)对于不可输入字符,常采用转义字符表示。n表示换行,其Unicode值是10。r表示回车,其Unicode值是13。t表示Tab键,其Unicode值是9。ddd表示用3位八进制数代表的ASCII字符,从000377,可表示256个ASCII字符。uxxxx表示用4位十六进制

8、数代表Unicode字符,从u0000uffff,可表示所有的Unicode字符,其中的u可以任意多个连续。例如,uuuu5de5与u5de5相同。表示字符“”,即u0027。表示字符“”,即u0022。表示字符“”,即u005c。例如,字符串a汉bu0067t067字表示“a汉bgt7字”。2.1.3 2.1.3 常量常量5字符串常量(字符串常量(String)Java中字符串实际上是字符串类java.lang.String的一个对象,所有字符串常量值都用双引号括起来,如abc。由于abc是一个对象,故它可以使用类String中的方法,如a汉b字c.length()返回该串的长度5,而a汉b

9、字c.charAt(3)返回下标值3所对应的字符:字(下标值的起点从0开始)。2.1.4 2.1.4 变量变量1boolean类型类型boolean类型的变量取值只能是true或false。在JVM内部,用int或byte类型来表示boolean,用整数零表示false,用任意一个非零整数来表示true。只不过这些对程序员是透明的。2byte、short、int和和long类型类型byte、short、int和long都是整数类型,并且都是有符号整数。在定义这4种类型的整型变量时,Java编译器给它们分配的内存空间大小是不同的。byte类型占用的内存空间最小(1个字节),long类型占用的内存

10、空间最大(8个字节)。如果一个整数值在某种整数类型的取值范围内,就可以把它直接赋给该类型的变量,否则必须进行强制类型转换。例如,整数13在byte类型的取值范围(-128127)内,可以把它直接赋给byte类型变量;129不在byte类型的取值范围内,若想赋值,就必须进行强制类型转换,语句如下:byte b = (byte)129/变量b的取值为-1272.1.4 2.1.4 变量变量3char类型与字符编码类型与字符编码char是字符类型,Java语言对字符采用Unicode编码,这是一种双字节编码,表示字符范围u0000uffff。由于计算机只能存储二进制数据,因此必须为各个字符进行编码。

11、所谓字符编码,是指用一串二进制数据来表示特定的字符。Unicode字符编码由国际Unicode协会编制,是一种跨平台的字符编码。4float和和double类型类型float和double类型都遵循IEEE 754标准,该标准分别为32位和64位浮点数规定了二进制数据表示形式。IEEE 754采用二进制数据的科学记数法来表示浮点数。对于float浮点数,用1位表示数字的符号,用8位表示指数(底数为2),用23位表示尾数。对于double浮点数,用1位表示数字的符号,用11位表示指数(底数为2),用52位表示尾数。2.1.5 2.1.5 类型转换类型转换1宽转换所谓的宽转换又称自动类型转换或隐式

12、转换。转换规则如下:(1)byte可直接转换到short、int、long、float、double;(2)short可直接转换到int、long、float、double;(3)char 可直接转换到int、long、float、double;(4)int可直接转换到long、float、double;(5)long可直接转换到float、double;(6)float可直接转换到double。2.1.5 2.1.5 类型转换类型转换2窄转换窄转换窄转换的转换规则如下:(1)short可直接转换到byte、char;(2)char可直接转换到byte、short;(3)int 可直接转换到b

13、yte、short、char;(4)long可直接转换到byte、short、char、int;(5)float可直接转换到byte、short、char、int、long;(6)double可直接转换到byte、short、char、int、long、float。2.1.5 2.1.5 类型转换类型转换3宽窄同时转换宽窄同时转换宽窄同时转换发生在byte转换到char期间,其转换过程为:先将byte宽转换到int,再将int窄转换到char。上述所讲的基本数据类型的3种转换在Java程序中经常发生。例如,当将一个表达式的值赋给一个变量时(称为赋值类型转换上下文),会自动进行“宽转换”和某些特

14、定的“窄转换”。例如下面的代码片段:byte b = 2;short s;s = + b;表达式+b是byte类型,而s是short类型,因而期望赋值符“=”右部出现的short类型。自动执行“宽转换”,将byte转换为short。2.1.5 2.1.5 类型转换类型转换另外一种经常发生的类型转换上下文是“数值提升”。当使用算术运算符(+,-,*,/,%)、关系运算符(,=,=,!=)、位运算符(&,|,、=、 c 等效于a = = (b c)。在Java中,任何类型的数据(无论是基本数据类型还是引用类型)都可以通过=或!=来比较是否相等或不等。如布尔类型值 true= =false

15、运算结果是:false。只有char、byte、short、int、long、float、double类型才能用于前四种关系运算。2.2.1 2.2.1 运算符运算符 3逻辑运算符逻辑运算符布尔逻辑运算符用于将多个关系表达式或true 、false组成一个逻辑表达式。Java中的逻辑运算符有:&(与)、|(或)、!(非)、(异或)、&(短路与)、(短路或)。a & b:只有a 与b都为true ,结果才为true;有一个为false,结果就为false。a | b:只有a与b都为false,结果才为false;有一个为true,结果就为true。! a:与a的值相反。J

16、ava中逻辑表达式进行所谓的“短路”计算。2.2.1 2.2.1 运算符运算符 【例2.3】测试逻辑运算符的作用。 LogicTest.javapublic class LogicTest public static void main(String args) boolean a,b,c; a = true; b = false; c = a & b; System.out.println(c); c = a | b; System.out.println(c); c = a b; System.out.println(c); c =!a; System.out.println(c)

17、; c = a & b; System.out.println(c); c = a |b; System.out.println(c); 2.2.1 2.2.1 运算符运算符 程序运行结果:程序运行结果:falsetruetruefalsefalsetrue2.2.1 2.2.1 运算符运算符 4位运算符位运算符Java中共有下列7种位运算符。(1)按位求反运算符:按位求反运算符:是单目运算符,对操作数的二进制数据的每一个二进制位都取反。即1变成0,0变成1。例如, 10010011 结果是01101100。(2)与运算符:与运算符:&参与运算的两个操作数,相应的二进制数位进行

18、与运算。即0 & 0 = 0,0 & 1 = 0,1 & 0 = 0,1 & 1 = 1。(3)或运算符:或运算符:|参与运算的两个操作数,相应的二进制数位进行或运算。即0 | 0 = 0,0 | 1 = 1,1 | 0 = 1,1 | 1 = 1。(4)异或运算符:异或运算符: 参与运算的两个操作数,相应的二进制数位进行异或运算。即00=0,10=1,01=1,11=0(即不相同是1,相同是0)。2.2.1 2.2.1 运算符运算符 (5)保留符号位的右移运算符:保留符号位的右移运算符:将一个操作数的各个二进制位全部向右移若干位,左边空出的位全部用最高位的符号

19、位来填充。(6)不保留符号位的右移运算符:不保留符号位的右移运算符:与不同的是,右移后左边空出的位用0填充。同样在移位之前,自动先对所要移动的位的个数进行除以32(或64)取余数的运算,然后再进行右移。即若a是int型,则a n就是a (n%32);若a是long型,则a n就是a (n%64)。(7)左移运算符:左移运算符:将一个操作数的所有二进制位向左移若干位,右边空出的位填0。同样,在移位之前,自动先对所要移动的位的个数进行除以32(或64)取余数的运算,然后再进行左移。即若a是int型,则a n就是a (n%32);若a是long型,则a n就是a =op1 = op2op1 = (T

20、)(op1 op2)=op1 = op2op1 = (T)(op1 =op1 = op2op1 = (T)(op1 op2)2.2.1 2.2.1 运算符运算符 6条件运算符条件运算符条件运算符?:是三目运算符,其格式是: e1?e2:e3其中e1是一个布尔表达式,若e1的值是true,则计算表达式e2的值,且该值即为整个条件运算表达式的值;否则计算表达式e3的值,且该值即为整个条件运算表达式的值2.2.2 2.2.2 表达式表达式表达式是符合一定语法规则的运算符和操作数的序列。一个常量、变量也可认为是一个表达式,该常量或变量的值即为整个表达式的值。一个合法的Java表达式经计算后,应该有一个

21、确定的值和类型。唯一的例外是方法调用时,该方法的返回值类型可被定义为void。通常,不同运算符构成不同的表达式。例如,关系运算符、=等构成关系表达式,关系表达式的值只能取true或false,类型为boolean型。2.3 2.3 流程控制流程控制2.3.1 分支语句分支语句分支语句使部分程序代码在满足特定条件时才会被执行。Java语言支持两种分支语句:if else 语句和switch语句。1if else 语句语句if语句又称为条件语句,其语法格式为:if () ; else ; 其中:及可以是任何语句(包括复合语句),else部分可以有,也可以没有。及位置可以是多个语句,此时需要用 括起

22、。 2.3.1 2.3.1 分支语句分支语句if语句的语义是:首先计算的值,若值是true,则执行,当执行完成,整个if语句也就结束了;当的值是false时,执行else部分的,当执行完成,整个if语句执行结束。由于if语句中的或可以是任何语句,故当它们又是另一个if语句时,就产生了if语句的嵌套,例如下面的代码片段:if (a1) if (b10) System.out.println(a+b); else / 此处的else与哪一个if相配? System.out.println(a-b);这个嵌套的if语句产生了二义性,else究竟与哪一个if相配呢?Java语言规定:else与最近的没

23、有配上else的if相配,故上述else与第二个if相配。若要使它与第一个if相配,必须修改代码如下:if (a1) / 加上一对,形成一条复合语句 if (b10) System.out.println(a+b); else / 此处的else与第一个if相配 System.out.println(a-b);2.3.1 2.3.1 分支语句分支语句【例2.4】设计一个Java程序,判断某一年份是否闰年。LeapYear.javapublic class LeapYear public static void main(String args)/ args0表示命令行的第一个参数并把它由字符串

24、转换为整型int year = Integer.parseInt(args0);int leap;/ 1表示是闰年,0表示不是闰年if(year % 4 = 0)/ 判断能否被4整除if (year %100 =0)if (year %400=0)leap = 1;else leap = 0;else leap =1;/ 是闰年else leap = 0;if (leap=1)System.out.println(year +年是闰年);else System.out.println(year +年不是闰年);2.3.1 2.3.1 分支语句分支语句右击“LeapYear.java”,选择“R

25、un As”“Run Configurations”命令,弹出窗口如图2.1所示,在“Main”标签页的“Project”栏中选择“MyProject_02”,单击“Main class”栏右侧的“Search”按钮,弹出对话框中选“LeapYear”。2.3.1 2.3.1 分支语句分支语句程序运行结果:2016年是闰年按照上面同样的方式,在“Program argumentds”栏输入“2015”,单击“Run”按钮运行程序,结果为:2015年不是闰年2.3.1 2.3.1 分支语句分支语句2switch语句语句当程序有多个分支(通常超过两个)时,使用switch语句比使用多个嵌套的if语

26、句更简明些。switch语句的语法格式如下:switch() case : case : case : default:其中:最终值的类型必须是int型或者是能自动转换成int型的类型,如byte、short、char、int,否则必须进行强制类型转换,但Java7开始增强了switch语句功能,也允许值是java.lang.String的字符串类型。2.3.1 2.3.1 分支语句分支语句【例2.5】用switch语句判断当前的季节。TestSwitch.javapublic class TestSwitch public static void main(String args) /声明变

27、量xString x = args0;/ 直接用字符串型的args0参数作switch的控制表达式,无须转换类型switch (x) case 春天:System.out.println(春天般的温暖);break;case 夏天:System.out.println(夏天一样火热);break;case 秋天:System.out.println(秋风扫落叶一般);break;default:System.out.println(严冬一样残酷无情!);2.3.2 2.3.2 循环语句循环语句循环语句一般应包括如下4部分内容:(1)初始化部分:用来设置循环的一些初始条件,比如设置循环控制变量的

28、初始值。(2)循环条件:这是一个布尔表达式,每一次循环都要对该表达式求值,以判断是否继续循环。(3)循环体:这是循环操作的主体内容,可以是一条语句,也可以是多条。(4)迭代部分:通常属于循环体的一部分,用来改变循环控制变量的值,从而改变循环条件表达式的布尔值。2.3.2 2.3.2 循环语句循环语句1while语句语句while语句的语法格式是:while() 其中:是循环继续下去的条件,循环体中的可以是任意合法的Java语句。while语句的语义是:语句的语义是:(1)第第1步步:计算的值,若值是false,则整个while语句执行结束,程序将继续执行紧跟在该while循环体之后的语句,而循

29、环体内的语句一次都没有得到执行。若值是true,则转第2步。(2)第第2步步:依次执行循环体中的、,再转第1步。2.3.2 2.3.2 循环语句循环语句2do while语句语句dowhile语句的语法格式是:do while();其中:是循环继续下去的条件,循环体中的、可以是任何合法的Java语句。do while语句的语义是:(1)第第1步步:依次执行循环体中的、。(2)第第2步步:计算的值,若值是false,则整个do while语句执行结束,程序继续执行紧跟在该do while语句之后的语句。若值是true,转第1步。2.3.2 2.3.2 循环语句循环语句【例2.6】设计一个Java

30、程序,打印出1*2*3*n之积,变量n的初始值在程序中指定。MultiplyCalculate.javapublic class MultiplyCalculate public static void main(Stringargs)long s =1;int k = Integer.parseInt(args0);/ 把字符串转换为整型for (int i = 1;i k;i+)s = s * i ;System.out.println(1 * 2 * 3+* +k+ = + s);/ 打印相乘的结果用之前介绍的操作方法(见前图2.1)打开“Run Configurations”窗口,配置

31、程序运行时的输入参数,在“Arguments”标签页的“Program arguments”栏输入“10”,然后单击“Run”按钮运行程序,结果为:1 * 2 * 3.* 10 = 3628802.3.2 2.3.2 循环语句循环语句3for语句语句for语句与while语句一样,也是先判断循环条件,再执行循环体。它的语法格式是:for (e1; e2; e3) 其中:e1是用逗号分隔的Java中任意表达式的列表,可默认不写,但其后的分号不能省略;e2是布尔表达式,表示循环继续执行的条件,若该部分默认,则表示条件永远为真,成为死循环,e2后的分号同样不能省略;e3也是用逗号分隔的Java中任意

32、表达式的列表,同样可以缺省不写。2.3.2 2.3.2 循环语句循环语句for语句的语义是:语句的语义是:(1)第)第1步步:首先从左到右依次执行e1中用逗号分隔的各个表达式,这些表达式仅在此执行一次,以后不再执行,通常用于变量初始化赋值。(2)第)第2步:步:计算布尔表达式e2的值。若值为false,则整个for循环语句执行结束,程序继续执行紧跟在该for语句之后的语句;若值为true,则依次执行循环体中的、。(3)第)第3步:步:从左到右依次执行e3中用逗号分隔的各个表达式,再转第2步。2.3.2 2.3.2 循环语句循环语句【例2.7】设计一个Java程序,输出所有的水仙花数。所谓水仙花

33、数,是指一个3位数,其各位数字的立方和等于该数自身,例如,153 = 13+53+33。TestNum.javapublic class TestNum public static void main(String args)int i = 0;/ 百位数int j = 0;/ 十位数int k = 0;/ 个位数int n = 0;int p = 0;for( int m = 100; m 1000; m+)i = m /100;/ 得到百位数n = m %100;j = n /10;/ 得到十位数k = n %10;/ 得到个位数p = i*i*i+j*j*j+k*k*k;if (p=m)

34、System.out.println(m);/ 打印水仙花数2.3.2 2.3.2 循环语句循环语句程序运行结果:1533703714072.3.3 2.3.3 流程跳转语句流程跳转语句(1)break语句语句:从switch语句、循环语句或标号标识的代码块中退出。例如,以下while循环语句用于计算从1加到100的值,至101时自动退出:int a = 1,result = 0;while (true) result += a+;if (a = 101) break;System.out.println(result);(2)continue语句语句:跳过本次循环,立即开始新的一轮循环。2.

35、3.3 2.3.3 流程跳转语句流程跳转语句【例2.8】打印100200之间能被3整除的数,每10个数一行。TestContinue.javapublic class TestContinue public static void main(String args) int n = 0;int i = 0;for (n = 100; n = 200; n+) if (n % 3 != 0)continue;/ 不能被3整除,结束本次循环i+;System.out.print(n + );if (i % 10 = 0) / 每10个数一行System.out.println();程序运行结果:1

36、02 105 108 111 114 117 120 123 126 129 132 135 138 141 144 147 150 153 156 159 162 165 168 171 174 177 180 183 186 189 192 195 198 (3)return语句语句:退出本方法,跳到上层调用方法。2.4 2.4 数组数组2.4.1 一维数组一维数组1一维数组的定义一维数组的定义一维数组的定义格式有如下两种:格式1: ;格式2: ;其中:可以是Java中任意的数据类型,为用户自定义的一个合法的变量名, 指明该变量是一个数组类型变量。Java在定义数组时并不为数组元素分配内存

37、,仅为分配一个引用变量的空间。例如下面的语句:int a ; String person;int b100;/ 错误,定义数组时不能指定其长度2.4.1 2.4.1 一维数组一维数组2创建一维数组对象创建一维数组对象在Java语言中,使用new关键字创建一维数组对象,格式为:数组名 = new 元素类型 元素个数;例如下面的语句:int Array = new int100;/ 创建一个int型数组,存放100个int类型的数据Java虚拟机首先在堆区中为数组分配内存空间,如图2.2所示,创建了一个包含100个元素的int型数组,数组成员都是int类型(4个字节),因此整个数组对象在堆区中占4

38、00个字节。2.4.1 2.4.1 一维数组一维数组3一维数组初始化一维数组初始化一维数组的初始化有如下两种方式。(1)静态初始化静态初始化:指的是在定义数组的同时就为数组元素分配空间并赋值,它的格式如下: = ,;或者 = ,;Java编译程序会自动根据个数算出整个数组的长度并分配相应的空间,例如下面的语句:int Array = 1,2,3,4;数组成员是引用类型的也可静态初始化,代码如下:Point Pa = new Point(1,4), new Point(3,9), new Point(15,18);class Point int x, y;Point(int a, int b)

39、x = a;y = b;2.4.1 2.4.1 一维数组一维数组初始化后的内存布局,如图2.3所示。2.4.1 2.4.1 一维数组一维数组(2)动态初始化动态初始化:指的是数组定义、分配空间与赋值的操作分开进行,例如下面的语句:int a = new int3;a0 = 1; a1 = 5; a2 = 9;同样,数组成员是引用类型的也可动态初始化,例如下面的代码:Point Pa = new Point3;Pa0 = new Point(1,4);Pa1 = new Point(3,9);Pa2 = new Point(15,18);2.4.1 2.4.1 一维数组一维数组【例2.9】输入一

40、组非0整数到一维数组中,设计一个Java程序,求出这一组数的平均值,并分别统计出这一组数中正数和负数的个数。TestAverage.javapublic class TestAverage public static void main(String args)int i = args.length;/ 获取命令行参数的长度int arr = new int10;int num =0;int k =0; int p =0;for(int j =0;ji;j+)arrj= Integer.parseInt(argsj);if (arrj 0)k+;/ 负数的个数加一elsep+;/ 正数的个数加

41、一num = num + arrj;/ 计算累加和System.out.println(正数的个数+p);System.out.println(负数的个数+k);System.out.println(平均值是+num/i);/ 计算平均值2.4.1 2.4.1 一维数组一维数组用之前介绍的操作方法(见前图2.1)打开“Run Configurations”窗口,配置程序运行时的输入参数,在“Arguments”标签页的“Program arguments”栏输入“3 8 4 -5 6 7 8 -4 11 12”,然后单击“Run”按钮运行程序,结果为:正数的个数8负数的个数2平均值是52.4.

42、2 2.4.2 多维数组多维数组1二维数组的定义二维数组的定义二维数组的定义格式如下:格式1: ;格式2: ;与一维数组的情形类似,定义二维数组时不需要给出数组大小。int a ; String names;int b100100;/ 错误,定义数组时不能指定其长度2.4.2 2.4.2 多维数组多维数组2创建二维数组对象创建二维数组对象与创建一维数组对象一样,创建二维数组对象同样使用new关键字,格式如下:数组名 = new 数组元素类型 数组元素个数 数组元素个数;例如下面的语句:int a = new int23;/ 创建一个int型的二维数组和一维数组一样,若没有对二维数组成员进行显式

43、初始化,则会进行隐式初始化,会根据创建的数组类型初始化对象,内存布局如图2.4所示。2.4.2 2.4.2 多维数组多维数组3二维数组初始化二维数组初始化和一维数组一样,二维数组的初始化也分静态初始化和动态初始化两种。(1)静态初始化静态初始化在下面的语句中,定义String类型数组alphabet的同时就初始化其成员,即静态初始化,如下:String alphabet = a,b,c, d,e,f, g,h,i, j,k,l;二维数组的第二维长度可以各不相同,例如下面的语句:String alphabet = a,b,c,d, e,f, g,h, i,j,k;2.4.2 2.4.2 多维数组

44、多维数组和一维数组一样,二维数组成员是引用类型的,也可静态初始化。下面的代码片段创建的引用类型二维数组的内存布局,如图2.5所示。Point pt = new Point(1, 2), new Point(3, 4), new Point(5, 6), new Point(7, 8), new Point(9, 10), new Point(11, 12);class Point int x, y; Point(int a, int b) x = a; y = b; 2.4.2 2.4.2 多维数组多维数组(2)动态初始化动态初始化二维数组的动态初始化有两种方式。方式方式1: = new ;例如:int arr = new int35;方式方式2:从高维向低维依次进行空间分配,此时分配的数组空间可以是任意形状,步骤如下。 由于二维数组首先是个一维数组,故先对该一维数组进行空间分配,亦即先对最高维进行空间分配,格式为: = new ;例如:int c = new int3 ; 每个元素又是一个一维数组,故再对每个元素用new语句进行空间分配,格式与一维数组相同。例如下面的语句:c0 = new int4;c1 = new int3;c2 = new int5;

温馨提示

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

评论

0/150

提交评论