您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > Java面向对象程序设计第02章_基本类型、数组和枚举类型
信息工程学院本科课程第2章基本类型、数组、枚举类型主讲:赵建邦办公室:信息学院202E-mail:zhaojianbang@nwsuaf.edu.cn信息工程学院本科课程2本章主要内容2.1标示符和关键字2.2基本数据类型2.3从命令行输入输出数据2.4数组2.5枚举类型难点:数组信息工程学院本科课程32.1标识符和关键字标识符定义:用来识别类名、变量名、方法名、类型名、文件名、包名的有效字符序列规则:由字母、’$’、’_’和数字组成,长度不限第一个字符不能是数字不能是关键字以及“true、false和null”区分大小写关键字Java语言预留的特定意义单词,不能作为标识符使用世界语言“字母”表信息工程学院本科课程42.1.1标识符命名约定使用能表达明确意义的英文单词,并采用规范的单词缩写形式与单词分隔形式表示常量时标识符全部用大写字母和下划线表示,如PI,SALES_MAX表示类名或接口名时,标识符用大写字母开头,如CreditCard表示变量名和方法名,以小写字母开头,单词之间不要有分隔符,第二及后面单词第一个字符用大写字母,如authorName一般情况下,不建议使用数字作为标识符信息工程学院本科课程2.1.2关键字5类/接口abstractclassImplementsimportInterfacepackagestaticthrowvoid数据类型booleanbytechardoublefloatlongintshortenumconst流程控制breakcontinuecasedodefaultelsefinalforgotoifreturnswitchwhile访问范围privatepretectedpublicsynchronized对象实例newinstanceofthissuper异常处理catchtryfinallythrowthrows修饰断言nativetransientvolatilestrictfpassert信息工程学院本科课程62.2基本数据类型信息工程学院本科课程72.2.1逻辑类型常量:true、false变量声明:使用关键字boolean语法:booleanx,ok=true,关闭=false;注意:和C语言不同,Java的boolean和整型数据不能相互强制转换信息工程学院本科课程82.2.2整数类型int型常量:123,077(8进制),0xAbC(16进制)变量:intx=12,y;长度:32bit,7:0x00000007,-8:0xFFFFFFF8范围:byte型bytex=12,tom=28;byte只有一个字节范围:如果超出范围赋值:bytey=128;则系统报错772213131221信息工程学院本科课程92.2.2整数类型short型shortx=12,tom=28;short型有两个字节范围:可以将int强制转换成short,注意数据溢出问题long型long型常量用后缀名L表示:108L,07123L,0x3ABCLlongwidth=12L,height=2005L,length;对于long型变量,内存分配给8个字节,占64位。范围:15152216363221信息工程学院本科课程2.2.3字符类型常量:用单引号扩起的Unicode中的一个字符:‘A’、‘?’、‘!’、‘9’、‘\t’、‘き’、‘モ’等;变量:charhome='家',噢='O';对于char型变量,内存分配两个字节,最高位不是符号位,因此其取值范围:0~65535观察一个字符在Unicode中的位置,用int显示转换;得到数字所代表的Unicode表中对应字符,用char显示转换,如教材图2.1转意字符常量:\n(换行),\b(退格),\t(水平制表),\ˊ(单引号),\〞(双引号),\\(反斜线)等10信息工程学院本科课程2.2.4浮点类型float:单精度浮点型常量表示:453.5439f、21379.987F、231.0f(小数表示法)、2e40f(指数表示法)常量后面必须要有后缀”f”或”F”。变量:存储8位有效数字,内存分配4个字节1(符号)+8(指数)+23(小数)最小值:Float.MIN_VALUE=1.4E-45最大值:Float.MAX_VALUE=3.4028235E3811信息工程学院本科课程2.2.4浮点类型double:双精度浮点型常量:2389.539d,2318908.987,0.05(小数表示法),1e-90(1乘10的-90次方,指数表示法)。实型常量按照double型处理,后面可以有后缀“d”或“D”,但允许省略该后缀。变量:存储16位有效数字,内存分配8个字节,64bit最小值:Double.MIN_VALUE=4.9E-324最大值:Double.MAX_VALUE=1.7976931348E30812信息工程学院本科课程2.2.5基本数据类型的转换低精度-高精度系统自动完成数据类型的转换高精度-低精度必须使用类型转换运算,如:intx=(int)34.89;intz=(int)1999L;整数转换超出低精度取值范围取模运算:bytea=(byte)128;//a=-128byteb=(byte)(-129);//b=127double-float,必须进行强制转换floatf=(float)12.4;//floatf=12.4f;13byte1short2int4long8char2float4double8信息工程学院本科课程2.3从命令行输入输出数据输入基本类型数据importjava.util.Scanner;//导入所所要的类Scannerreader=newScanner(System.in);//生成一个Scanner对象,用来输入数据doublex=reader.nextDouble();/*reader对象可以调用nextBoolean()、*nextByte()、nextShort()、nextInt()、*nextLong()、nextFloat()、nextDouble()等*方法。*/14信息工程学院本科课程2.3从命令行输入输出数据输出基本类型数据用System.out.println()或System.out.print()可输出串值、表达式的值,二者的区别是前者输出数据后换行,后者不换行。允许使用并置符号:“+”将变量、表达式或一个常数值与一个字符串并置一起输出,如:System.out.println(m+个数的和为+sum);System.out.println(“:”+123+“大于”+122);printf()方法可以控制输出格式System.out.printf(“格式控制部分”,表达式,表达式…);15信息工程学院本科课程2.4数组数组的定义数组是相同类型的变量按顺序组成的一种复合数据类型,称这些相同类型的变量为数组的元素或单元。数组通过数组名加索引来使用数组的元素。索引从0开始。数组的声明分配内存数组的初始化16信息工程学院本科课程2.4.1数组的声明声明一维数组数组的元素类型数组名字[];或数组的元素类型[]数组名字;例如:floatboy[];或float[]boy;声明二维数组数组的元素类型数组名字[][];或数组的元素类型[][]数组名字;例如:charcat[][];或char[][]cat;与C++不同,Java不允许在声明数组时指定元素个数17信息工程学院本科课程2.4.2数组的创建数组的创建过程即为数组分配内存空间数组名字=new数组元素的类型[数组元素的个数];例如:boy=newfloat[4];boy是引用型变量,该变量保存已分配数组的首地址,通过数组名加索引使用数组元素数组的声明和创建可以一起完成floatboy[]=newfloat[4];charcat[][]=newchar[3][4];18信息工程学院本科课程2.4.2数组的创建二维数组的每个一维分量不必有相同的长度,可以分别制定其一维分量的长度,一维分量长度不需要统一。例如:inta[][]=newint[4][];a[0]=newint[6];a[1]=newint[5];……和C语言不同,Java允许使用int型变量的值制定元素的个数intx=5;intb[]=newint[x];19信息工程学院本科课程2.4.3数组元素的使用访问数组元素,注意防止索引越界例如:inta[][]=newint[2][3];第一个索引变化范围为:{0,1};第二个索引变化范围为:{0,1,2};length的使用floata[]=newfloat[13];//a.length=12intb[][]=newint[3][6];//b.length=3;//b[1].length=6;20信息工程学院本科课程2.4.4数组的初始化数组创建以后,系统会对每个数组默认初始化声明时初始化:floatboy[]={21.3f,23.89f,2.0f,23f,778.98f};inta[][]={{1},{1,1},{1,2,1},{1,3,3,1},{1,4,6,4,1}};21信息工程学院本科课程2.4.5数组的引用在函数中定义的一些基本类型的变量数据和对象的引用变量都在函数的栈内存中分配。堆内存用来存放由new创建的对象和数组。在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理。inta[]={1,2,3},b[]={4,5};a=b;22信息工程学院本科课程引用变量引用变量是普通的变量,定义时在栈中分配,引用变量在程序运行到其作用域之外后被释放。而数组和对象本身在堆中分配,即使程序运行到使用new产生数组或者对象的语句所在的代码块之外,数组和对象本身占据的内存不会被释放,数组和对象在没有引用变量指向它的时候,才变为垃圾,不能在被使用,但仍然占据内存空间不放,在随后的一个不确定的时间被垃圾回收器收走(释放掉)。这也是Java比较占内存的原因。23信息工程学院本科课程2.4.6元素的输出对于char型数组a,System.out.println()方法不会输出a的引用,需要用System.out.println(“”+a)来输出其引用通过Arrays类的toString(int[]a)方法可以得到数组的[a[0],a[1]…a[a.length-1]]格式字符串对于数组a={1,2,3}Arrays.toString(a)=“[1,2,3]”24信息工程学院本科课程2.4.7复制数组arraycopy()方法publicstaticvoidarraycopy(sourceArray,intindex1,copyArray,intindex2,intlength)可以将数组sourceArray从索引index1开始后的length个元素中的数据复制到数组copyArray中,copyArray数组从第index2元素开始存放这些数据。如果copyArray不能存放复制的所有数据,程序将报错25信息工程学院本科课程2.4.7复制数组copyOf()方法Arrays类调用copyOf方法复制整个数组中元素的值到另一个数组中。起始索引:0,拷贝的元素个数:newLengthpublicstaticdouble[]copyOf(double[]original,intnewLength);copyOfRange()方法Arrays类调用copyOfRange()方法复制数组中部分元素的值复制到另一个数组中,起始索引:from,拷贝的元素个数:to-frompublicstaticdouble[]copyOfRange(double[]orig
本文标题:Java面向对象程序设计第02章_基本类型、数组和枚举类型
链接地址:https://www.777doc.com/doc-4993029 .html