Java语言基础PPT.ppt
第2章 Java语言基础,与其他编程语言一样,Java也包含变量、表达式等基本编程要素。Java语言的基础编程知识:,数据类型变量运算符字符串数组控制结构,2.1 数据类型,Java属于强类型语言,每一个变量声明时必须指定一种类型。Java程序中所处理的数据是将各种数据类型实例化后的数据。数据类型实例化的方法:说明语句实例化数据的两种形式:变量与常量,数据类型,数据类型关键字 占用比特数 缺省数值布尔型boolean8false字节型byte80字符型char16 u0000 短整型short160整型int320长整型long640浮点型float320.0F双精度型double640.0D,2.1.1 整型,整型数据类型用来表示整数。Java中4种整型分别是:byte、short、int和long。通常情况下,int型是应用得最多的。如果要表示特别巨大的数,就要使用long型。而byte型和short型主要用于特定的场合,如占用大量存储空间的大数组或者底层的文件处理等。在Java中可以用3种进制来表示整数:十进制:int x=678;八进制:int y=0456;十六进制:int z=0 xa9bc;,2.1.2 浮点型,浮点型用来表示有小数部分的数值,包括float型和double型。这两种数据类型全部为有符号数。浮点型数据默认为double型,因此要使用float型字面常量时,必须添加后缀F或f,示例如下所示。float x=12.3456;/错误的情况float y=12.3456F;/正确的情况使用double型数据时,可以添加后缀D或d,也可以不用添加,例如:double d=12.3456789;/正确的情况double d=12.3456789D;/也是正确的情况,2.1.3 char型,char型用来表示字符。每个char型变量占两个字节。在Java中,字符的编码是采用Unicode编码。Unicode编码字符是用16位无符号整数表示的,有216个可能值,即065535。可以表示目前世界上的大部分文字语言中的字符。一般情况下,char类型数据被表示为用一对单引号包含的单个字符,例如:char c1=n;char c2=;转义字符:参见教材P29,2.1.4 boolean型,boolean型的取值范围很简单,非“True”即“False”,用来表示逻辑值的“真”或“假”。其字面常量也只有“True”和“False”两种选择,例如:boolean b1=True;boolean b2=False;在C+中用数值或指针可以代替boolean值,0相当于False,非0相当于True。在Java中没有这样的规定,boolean型的值不能与任何其他基本类型的值进行转换代替。,说明语句,基本数据类型说明语句:boolean b=true;short si=128;int i,j,k=-99;long l=123456789;char ch=J;char chc=中;float f=3.1415926f;double d=-1.04E-5;Java几乎是将字符串视为基本数据类型 String s=“你好!”;,2.1.5 基本数据类型值间的转换,在开发Java程序的过程中经常需要把不同基本数据类型的值进行相互转换。Java中基本数据类型的值进行转换主要包括3种情况:自动转换强制类型转换隐含强制转换,3、数据类型转换,同种数据类型转换:短类型 长类型:默认长类型 短类型:强制不同数据类型转换字符/数值:强制例:int a;long b;char c;b=a;a=(int)b;c=(char)a;a=(int)c布尔型与其他数据类型之间不能强制类型转换byte x=123;/隐含转换,byteshortintlongfloatdouble,数据类型转换,import java.io.*;public class a public static void main(String args)int i=65;char c=a,cc=刘;System.out.println(i);65 System.out.println(char)i);A System.out.println(c);a System.out.println(int)c);97 System.out.println(cc);刘 System.out.println(int)cc);21016 System.out.println(char)29579);王,2.2 变 量,变量主要用来保存数据,是用标识符命名的数据项,是程序运行过程中可以改变值的量。变量在程序中起着十分重要的作用,如存储数据、传递数据、比较数据、简练代码、提高模块化程度和增加可移植性等。要使用变量,首先要声明变量。,2.2.1 变量声明,变量类型 变量名变量声明包括两项内容:变量名和变量的类型。变量声明的位置决定了该变量的作用域。在程序中,通过变量名来引用变量包含的数据。变量的类型决定了它可以容纳什么类型的数值以及可以对它进行怎样的操作。,2.2.2 变量名和变量类型,在Java语言中,程序通过变量名来使用变量的值。变量名应满足如下3个要求:必须是一个合法的标识符。不能是关键字或者保留字(如true、false或者null)。在同一个作用域中必须是唯一的。Java语言规定标识符由字母、下划线(_)、美元符($)和数字组成,且第一个字符不能是数字。其中,字母包括大小写字母、汉字等。Java语言使用Unicode字符集,它包含65535个字符,适用于多种人类自然语言。,2.2.3 变量的初始化,变量可以在它们声明的时候初始化,也可以利用一个赋值语句来初始化。变量的数据类型必须与赋给它的数值的数据类型相匹配。1/整型int x=8,totle=1000;long y=12345678 L;byte z=55;short s=128;2/浮点型float f=234.5F;double d=-1.5E-8,square=95.8;3/其他类型char c=a;boolean t=true;,2.2.4 final变量,可以在任何作用域声明一个final变量。final变量的数值在初始化之后不能再进行改变。这样的变量和其他语言中的常量很相似。为了声明一个final变量,可以在类型之前的变量声明使用final关键字,例如:final float stuSum=48;这个语句声明了一个final变量并对它进行了初始化。如果在后面还想给stuSum赋其他的值,就会导致编译错误,因为final变量的值不能再改变。,2.3 运 算 符,有了数据,就可以对其进行操作。Java中的运算符主要分以下几类。,2.3.1 算术运算符,1加运算符“+”加法运算,就是将两个操作数进行求和操作,且只能对数值型数据进行。2减运算符“”减法运算功能,就是将两个操作数相减,只能对数值型数据进行,其一般形式如下:op1-op23乘法运算符“*”使用“*”运算符将进行乘法运算,但需要注意的是,此运算同样遵循类型自动提升的规则。,2.3.1 算术运算符,4除法运算符“/”使用“/”运算符将进行除法运算,此运算也满足类型提升规则。根据操作数的不同,除法又分为整数除和浮点除。int x=10/2;double y=20.0/5.0;5取余运算符“%”使用“%”运算符将进行求余运算(取模运算),实质就是将左边的操作数除以右边的操作数,余数便是得到的结果,此运算也遵循类型自动提升的规则。,2.3.1 算术运算符,6自增/自减运算符除了上述的运算符以外,还有自增和自减两种简单的算术运算符。它们分别是“+”和“。前缀形式为+op或op,它在加/减之后才计算运算对象的数值;后缀形式为op+或op,它在加/减之前就计算运算对象的数值。x=5;y=+x;z=x+;,2.3.2 关系和逻辑运算符,关系运算符用于比较两个值,并根据它们的关系给出相应的取值。例如,“!=”在两个运算对象不相等的情况下返回true。,2.3.3 位运算符,位运算符是对操作数以二进制位为单位进行的操作和运算,其结果均为整型量。位运算符分为移位运算符和逻辑位运算符。,2.3.4 赋值运算符,赋值是编程中最常用的运算之一,Java中的赋值运算有两种:普通赋值运算和运算赋值运算,下面将对这两种赋值运算符进行介绍。1普通赋值运算X=5;2运算赋值运算Y*=10;,程序举例2-1,public class Sample2_1 public static void main(String args)int x=12;byte y=12;x=1;y+=3;System.out.println(x=+x);System.out.println(y=+y);,2.3.5 其他运算符,2.3.5 其他运算符,1.三目条件运算符(?:)是一个条件运算符,相当于一个简化的if-else语句。D=表达式A?表达式B:表达式CA为真,返回表达式BA为假,返回表达式C总是返回B,C中的长类型 例:int x=5,y=8;long z=2;long k=x3?y:z;/k=82.“”运算符可以使用方括号来声明数组、创建数组以及访问数组中的元素。,2.3.5 其他运算符,3点运算符“.”点运算符“.”用来访问对象实例或者访问类的成员变量或成员方法。System.out.println(y=+y);4.“()”运算符当声明或调用一个方法的时候,可以在“()”之间列出方法的参数,也可以利用“()”来指定一个空的参数列表。,2.3.5 其他运算符,5.“(type)”运算符这个运算符可以将某个类型的值或对象转换为type类型。6.“new”运算符可以使用“new”运算符来创建一个新对象或者一个新数组。7.“instanceof”运算符“instanceof”运算符用来测试第一个运算对象是否是第二个运算对象的实例。a instanceof B,2.4 表达式和语句,表达式和语句都属于Java的语法,也是Java编程中最重要、最基础的部分。几乎所写的任何东西都是一个表达式;而语句则是完整的表达式单元。,2.4.1 表达式,表达式是由运算符、操作数和方法调用,按照语言的语法构造而成的符号序列。表达式可用于计算一个公式的值、为变量赋值以及辅助控制程序的执行流程。表达式主要用来进行计算,并返回计算结果。表达式返回数值的数据类型取决于在表达式中使用的元素。例如,如果aInt是整型,则表达式aInt=10返回一个整型的值。Java语言允许将多个子表达式构造成复合表达式。(x*y*z)/w在这个例子中,括号内各个运算对象的先后顺序不是很重要,因为乘法的结果跟顺序无关。但是对于其他表达式并不都是这样,例如:x+y/100它关系到是先除还是先加的问题。优先级参见教材P39,2.4.2 语句,语句是一个执行程序的基本单元,Java语言的语句可分为以下几类。表达式语句复合语句控制语句包语句和引入语句其中,表达式语句是用分号“;”结尾,具体包括如下几种。赋值表达式语句+、语句方法调用语句对象创建语句变量的声明语句,2.5 控 制 结 构,结构化程序设计原则是公认的面向过程编程应遵循的原则。Java语言虽然是面向对象的语言,但在局部的语句块内部,仍然需要借助于结构化程序设计的基本流程结构来组织语句,完成相应的逻辑功能。结构化程序设计的三种基本控制语句顺序 按语句书写的先后顺序执行选择 在若干路径中有条件地择一执行循环 当某条件成立时,反复执行一段代码,2.5.1 条件语句,1if条件语句基本语法:if()语句序列 2switch分支语句,2.5.1 条件语句,if(条件)语句块;else语句块;,多重嵌套的if语句 if(条件1)语句块1;else if(条件2)语句块2;else if(条件3)else 语句块n;,语句块用大括号括起的语句集合else与最近的if配合,1、条件语句,2、switch 开关语句,switch(表达式)case 判断值1:语句块1;break;case 判断值2:语句块2;break;default:语句块n;switch 的常量和表达式可以是整型、字符型及byte型任何两个case常量不可以有相同的值。先计算表达式的值,根据表达式取值的不同转向不同的分支。每个case分支中的语句块无须用花括号括起来。每个case分支都只是入口点break 语句是转移语句(跳出switch),程序举例2-2,public class Sample2_2 public static void main(String args)int day=3;switch(day)case 1:System.out.println(Monday);break;case 2:System.out.println(Tuesday);break;case 3:System.out.println(Wednesday);break;case 4:System.out.println(Thursday);break;case 5:System.out.println(Friday);break;case 6:System.out.println(Saturday);break;case 7:System.out.println(Sunday);break;,思考:下面程序输出结果?,public class LxSwitch public static void main(String args)int x=1,y=2,i=0,j=0;switch(x)case 1:switch(y)case 1:i+;break;case 2:j+;break;default:i+;j+;case 2:i+;j+;break;default:i+;j+;System.out.println(“i=+i);System.out.println(“j=+j);,2.5.2 循环语句,While(表达式)do 语句块;语句块;while(表达式);for(表达式1;表达式2;表达式3)语句块;表达式1:循环变量赋初值,可使用外部没有定义 的循环变量表达式2:循环条件表达式3:循环变量修正,2.5.2 循环语句,1while循环while循环适用于不知道代码需要被重复的次数,但有明确的终止条件的循环流程。其基本语法如下所示:while()语句序列 2do-while循环与while循环不同,do-while循环先执行一次循环体再计算条件表达式的值,所以不论条件表达式返回什么值,都将至少执行一次循环体,其语法为:do 语句序列 while(条件表达式);3for循环for循环通常用于明确知道循环体需要执行的次数的程序,此时使用for循环是最佳选择。,Java的循环语句,while语句当型循环:while(表达式)语句块;执行过程:先计算表达式若为真则执行语句块,并转回再计算表达式若为假则跳出循环,执行后面的语句。,Java的循环语句,do-while语句直到型循环:do 语句块;while(表达式);执行过程:先执行语句,再计算表达式若为真则转回再执行语句,若假则跳出循环循环体至少执行一次。,Java的for循环语句,例2-3:用while语句求100以内所有奇数的和,public class WhileTry public static void main(String args)int i,sum;sum=0;i=1;while(i=100)sum+=i;i+=2;System.out.println(sum=+sum);,例2-4:用for语句求100以内所有奇数的和,public class ForTry public static void main(String args)int i,sum;sum=0;for(i=1;i=100;i+=2)sum+=i;System.out.println(sum=+sum);,例2-5:编程输出下图,public class Loop1 public static void main(String args)int i,j,k;for(i=0;i=3;i+)for(j=0;j=2-i;j+)System.out.print();/画空格 for(k=0;k=2*i;k+)System.out.print(*);/画星号 System.out.println();/换行 for(i=0;i=2;i+)for(j=0;j=i;j+)System.out.print();/画空格 for(k=0;k=4-2*i;k+)System.out.print(*);/画星号 System.out.println();/换行,*,2.5.3 跳转语句,。break语句在Java中break语句有两个用途,一是在switch语句中,表示一个case的结束,退出switch;二是作为循环控制语句,在循环体中表示退出循环。第一种用途已经在前面进行了介绍,这里主要讨论第二种。continue语句continue也是循环控制语句,也起中断循环的作用,与break不同的是,continue只是中断当次循环。在循环体中,当continue执行时,本次循环结束,进入条件判断,如果条件满足,进入下一次循环。return语句return语句用于函数或方法的返回,其一般形式如下所示。return 表达式;,2.5.3 跳转语句-break,Java没有goto语句break 从一个封闭的语句块中,如switch、循环体中跳出来break 标号从包含本break语句的标号指示的封闭语句中跳出来。while(e1)aaa:while(e1)while(e2)while(e2)break;break aaa;,2.5.3 跳转语句-break,break语句:不带标号break 语句从循环体内跳出至后面语句,结束当前循环体。循环嵌套时,break 语句只跳出当前循环体。带标号的break语句采用 label:的形式定义标号跳出标号标志的循环体,2.5.3 跳转语句-continue,continue语句须用在循环结构中continue 不带标号提前结束本次循环,即跳过后面的循环体语句,回到循环的条件测试部分继续执行。continue 带标号跳过循环剩余语句,直接进入标号所指的循环体的下一轮循环。continue不是goto 语句,标号不能指向与本循环并列的其他循环,也不可指向非循环语句。循环的正常退出途径:符合结束条件,2.5.3 跳转语句-continue,label1:outer-iteration inner-iteration.break;/1.continue;/2.continue label1;/3.break label1;/4,例2-6:求2100的素数,每行打印5个数字,import java.io.*;public class prime public static void main(String args)First_Loop:for(int i=2,k=0;i100;i+)for(int j=2;j=Math.sqrt(i);j+)if(i%j=0)continue First_Loop;System.out.print(i+t);k+;if(k%5=0)System.out.println();/for/main/class,例2-7:输出所有1到300间的满足x2+y2=z2的整数x,y,z的组合(要求x,y,z各不相同),public class Test_key public static void main(String args)int x,y,z;int max=(int)(Math.sqrt(300);for(x=1;x300)break;if(z*z=x*x+y*y)System.out.println(x+t+y+t+z);,public class Test12public static void main(String args)int x,y,z,h;int max=(int)(Math.sqrt(300);for(x=1;x=max;x+)for(y=1;y=max;y+)if(y=x)continue;h=x*x+y*y;z=(int)Math.sqrt(h);if(z*z=h,34543551213681086108151791215125131291512162015817161220,例2-8 百钱买百鸡问题,公鸡每只5元,母鸡每只3元,小鸡3只一元,问一百元买一百 只鸡有几种解法。for(x=0;x=19;x+)for(y=0;y=33-x;y+)z=100-x-y;if(z%3=0,例2-9:用辗转相除法求二个正整数的最大公约数。,class GreatestCommonDivisorpublic static void main(String args)if(args.length2)System.out.println(请向应用程序传递二个参数:);System.exit(0);int a=Integer.parseInt(args0);int b=Integer.parseInt(args1);System.out.println(a+“和”+b+“的最大公约数为:+result(a,b);,Static int result(int m,int n)int r;r=m%n;while(r!=0)System.out.println(“m=+m+“n=+n+r=,r);m=n;n=r;r=m%n;return n;,例2-10 求fibonacci数列的前30个数,分析:设当前项为f,前一项为f1,前二项为f2。首先根据f1和f2推出f,再将f2作为f1,f作为f2,再推出f,如此一直递推下去:1 1 2 3 5第一次 f1+f2 f 第二次 f1+f2 f 第三次 f1+f2 f,递推法:递推是指在一个数的序列值中,下一项的值是在前一项的基础上推算出来的,即下一项对前一项有某种依赖关系。f1=1.0;f2=1.0;n=2;System.out.print(f1+”,”+f2);for(i=3;i=30;i+)f=f1+f2;if(n%4=0)System.out.println();System.out.print(“,”+f);f1=f2;f2=f;n+;,对例2-9进行简化,只设两个变量f1和f。递推过程如下:1 1 2 3 5第一次 f1+f f1 f+f1 f 第二次 f1+f f1,f1=1.0;f=1.0;n=2;for(i=1;i=15;i+)System.out.print(f1+”,”+f);f1=f1+f;f=f+f1;if(n%4=0)System.out.println();n+;,例2-11采用递归算法求n!,class Factorial static long fac(int n)if(n=1)return 1;else return n*fac(n-1);public static void main(String args)int k;long f;k=Integer.parseInt(args0);f=fac(k);System.out.println(f);,2.6 字 符 串,字符串指的是字符序列。Java中的字符串分为两类:字符串常量和字符串变量。字符串常量,包括直接字符串常量和String类的对象。字符串常量的值一旦创建不会再变动。字符串变量,指的是StringBuffer类的对象。创建字符串变量的值之后允许对其进行扩充、修改。Java语言为String类、StringBuffer类提供了许多方法,如比较串、求子串、检索串等,以提供各种串的运算与操作。,2.6.1 String类型,String类型建立的字符串不能更改,如果程序需要使用字符串常数,String类型比较合适。1String字符串创建创建String字符串的最简单方式是使用字符串文本。String aString1=“This is a string.”;String aString2=aString1;String aString3=new String(“java”);,2String类型字符串的操作,在Java中为String类定义了一些操作字符串的方法。1)操作符+:实现字符串的合并;2)Length()方法:计算字符串的长度;String str=“Java”;int l=str.length();3)getChars()方法:字符复制;getChars(int,int,char,int);str.getChars(1,3,char1,0);,4)compareTo()方法:,用于字符串比较;pareTo(str1);public class Sample2_6 public static void main(String args)String temp;String str=VC,Visual Stdio,AS,Java;int l=str.length;for(int i=0;i 0)temp=stri;stri=strj;strj=temp;for(int k=0;k l;k+)System.out.println(strk);,5)subString(),作用:提取字符串中的子串。格式:String substring(int begin,int end);例:public class Sample200 public static void main(String args)String str1=Java_Learning,str2;str2=str1.substring(4,9);System.out.println(str2);,作用:将字符串转换成字符数组例 class toCharArray public static void main(String args)String s1=We like apple.;char s2=s1.toCharArray();System.out.println(String.valueOf(s2,8,5);,toCharArray()方法,结果为:apple,2.6.2 StringBuffer类型,StringBuffer类用于处理可变的字符串,提供修改字符串的方法。生成StringBuffer对象后,可通过调用toString()方法将其转换为String对象。,StringBuffer有三个构造方法:StringBuffer();StringBuffer(int length);StringBuffer(String str);示例:StringBuffer s0=new StringBuffer();StringBuffer s1=new StringBuffer(512);StringBuffer s2=new StringBuffer(“Happy new year!”);,StringBuffer提供的方法,实现对字符串的修改,包括字符替换、插入字符、在末尾添加一个子串等。原因就是它使用了缓冲区。从StringBuffer类创建的对象都分配比给定字符串还多16个字节长度的缓冲区。StringBuffer类提供了方法来检测和获得缓冲区容量,在对字符修改过程中,如果缓冲区不够用,那么,系统会自动扩大缓冲区。,StringBuffer提供的主要方法:,字符设置和替换setCharAt(int index,char ch);此方法将指定的字符ch放到index指出的位置。例:StringBuffer s=new StringBuffer(“stadents”);s.setCharAt(2,u);上述语句将字符串s中第2个字符a替换为u。字符的插入insert(int offset,char ch);insert方法用来在字符串的指定位置插入字符ch。,例2-12:StringBuffer的insert方法的使用1,public class MyString public static void main(String arg)String s1=Wecome;StringBuffer sb1=new StringBuffer(s1);sb1.insert(2,l);System.out.println(sb1);程序结果:打印“Welcome”。,insert方法还允许插入字符串、布尔量、数组和各种类型的数据,甚至插入一个对象。即按照入口参数的不同,StringBuffer提供了以下insert方法:insert(int offset,char c);insert(int offset,boolean b);insert(int offset,char str);insert(int offset,double d);insert(int offset,float f);insert(int offset,int i);insert(int offset,long l);insert(int offset,Object obj);insert(int offset,String str);,用append方法在字符串末尾添加内容,随着入口参数的不同,append方法可以用来添加字符串、各种类型的数据和数组等:append(boolean b);append(char c);append(char str);append(char str,int offset,int len);append(double d);append(float f);append(int i);append(long l);append(Object obj);append(String str);,toString()方法将可变字符串转化为不变字符串,下面的程序段中用了append方法和toString方法,将字符串修改后转化为字符串常量。char c=e;StringBuffer s=new StringBuffer(We ar);s.append(c);s.append(students.);s.toString();结果:S成为字符串常量,其值为We are student,StringBuffer类提供了length()方法检查缓冲区中字符串的长度,用charAt(int index)方法得到入口参数所指位置的字符用capacity()方法获取缓冲区长度。public class MyString public static void main(String args)String s1=I like apple.;StringBuffer sb1=new StringBuffer(s1);System.out.println(sb1.length();System.out.println(sb1.capacity();,结果:13 29,例2-13:StringBuffer的length、capacity、charAt方法使用,public class MyString public static void main(String args)String s1=beautiful;StringBuffer sb1=new StringBuffer(s1);System.out.println(第四个字符为:+sb1.charAt(4);/取出对象第4个字符 System.out.println(length=+sb1.length();/返回对象的当前长度 System.out.println(capacity:+sb1.capacity();/返回对象的整个容量,结果:第四个字符为:tlength=9capacity:25,2.7 数组,数组是相同类型的数据元素按顺序组成的一种复合数据类型,元素在数组中的相对位置由下标来指明。数组中的每个元素通过数组名加数组下标进行引用。数组作为一种特殊的数据类型具有以下特点:一个数组中所有的元素应该是同一类型;数组中的元素是有顺序的;数组中的一个元素通过数组名和数组下标来确定。数组在其他语言中是相同数据类型的元素的集合;而在Java中,数组是独立的类,有自身的方法,不是变量的集合一个数组是数组类的一个对象。数组是通过new运算符来动态创建,并分配与数组下 标数和维数、数组数据类型相匹配的内存空间。数组一经被分配了适当的空间,则其所有元素都初始化为默认值。数组有一维数组和多维数组之分。,2.7.1 一维数组,1、一维数组的声明(declaration)与创建(creating)同其他变量一样,在使用数组前,必须先声明它。数组声明的格式为:类型 数组名;其中类型指出了数组中各元素的数据类型,包括基本类型和复合类型。数组名为一个标识符。“”部分指明该变量是一个数组类型变量。例如:int list;,例如:int list;,int list;声明了一个整型数组,数组中的每个元素为整型数。数组声明时,也可以将“”放在类型之后,例如:int list;它的效果和上面的例子一样。在声明数组时,不直接指出数组中元素的个数(即数组长度)。数组声明之后尚不能立即被访问,因为还没有为数组元素分配内存空间。如果试图在声明后直接给数组中的任一元素赋值,编译器将要提示如下信息:Variable list may not have been initialized.,用new关键字来创建数组,在数组声明之后为数组元素分配存储空间,同时对数组元素进行初始化。new语句指明了分配类型以及由一个正整数表示的数组长度,其格式如下:数组名=new类型 数组长度;例如:list=new int3;可以为整型数组list分配3个整数元素所占据的内存空间,并使每个元素初值为0。,把数组的声明和创建合在一起,为简化起见,还可以把数组的声明和创建合在一起,如:类型 数组名=new 类型 数组长度;例如:int list=new int3;这个语句等同于下面两个语句:int list;list=new int3;在实际应用中,用户应根据具体情况来对数组元素重新进行赋值。数组一旦创建之后,就不能再改变其长度。,2、一维数组的初始化,数组的初始化方式有两种。一种方式是在声明数组的同时进行初始化。例如:int a=1,2,3,4,5;创建了数组a,并且为数组每个元素赋值即初始化,使a0=1,a1=2,a2=3,a3=4,a4=5应该注意的是,“”里的每一个数组元素的数据类型必须是相同的。另一种方式是在声明之后再创建数组,然后为每个元素赋值。,例2-14 自动初始化数组,下面的代码在整型数组month_days中保存了一年中每月的天数。class Array2 public static void main(String args)int month_days=31,28,31,30,31,30,31,31,30,31,30,31;System.out.println(May has+month_days4+ays.);运行结果:May has 31 days.,3、一维数组元素的使用,数组元素的标识方式为:数组名下标 其中下标为非负的整型常数或表达式,其数据类型只能为byte,short,int,而不能为long。如a3,bi(i为整型),ci*5等。下标的取值范围从0开始,一直到数组的长度减1。Java在对数组元素操作时会对数组下标进行越界检查,以保证安全性。若在Java程序中超出了对数组下标的使用范围(例如:数组的最大下标为5,但是在程序中存取了下标为8或-4的元素),则在运行此程序时将出现如下错误信息:Exception in thread main java.lang.ArrayIndexOutOfBoundsException,数组属性