第2章基本数据类型与数组配合例子源代码一起使用课件制作人:张跃平导读主要内容标识符与关键字基本数据类型类型转换运算输入、输出数据数组重点和难点重点:标示符、Java语言的数据类型、数组难点:基本数据类型的精度和数组§2.
1标识符与关键字标识符用来标识类名、变量名、方法名、类型名、数组名、文件名的有效字符序列称为标识符,简单地说,标识符就是一个名字.
Java语言规定标识符由字母、下划线、美元符号和数字组成,长度不受限制.
标识符的第一个字符不能是数字字符.
标识符不能是关键字(关键字见下面的2.
1.
3节).
标识符不能是true、false和null(尽管true、false和null不是关键字).
关键字关键字就是具有特定用途或被赋予特定意义的一些单词,不可以把关键字作为标识符来用.
例如:boolean、byte、short、int、float、double、char、if、else等.
关键字都是小写的.
遇到大写肯定不是关键字.
§2.
2基本数据类型有8种基本数据类型:boolean、byte、short、int、long、float、double、char.
8种基本数据类型习惯上可分为以下四大类型:逻辑类型:boolean整数类型:byte、short、int、long字符类型:char浮点类型:float、double§2.
2.
1逻辑类型变量使用关键字boolean来声明逻辑变量,声明时也可以赋给初值.
常量true、false例如:booleanx,ok=true,关闭=false;§2.
2.
2整数类型int型变量:使用关键字int来声明int型变量,声明时也可以赋给初值.
例如:intx=12,平均=9898,jiafei;常量:int型常量共有三种表示方法:十进制:123,6000(十进制)八进制:077(八进制,是零开头);十六进制:0x3ABC(十六进制)对于int型变量,内存分配给4个字节(byte),占32位.
byte型变量:使用关键字byte来声明byte型变量.
例如:bytex=-12,tom=28,漂亮=98;常量:一定范围内的int型常量赋值给byte型变量.
对于byte型内存分配给1个字节,占8位.
short型变量:使用关键字short来声明short型变量.
例如:shortx=12,y=1234;常量:和byte型类似,Java中也不存在short型常量的表示法,但可以把一定范围内的int型常量赋值给short型变量.
对于short型变量,内存分配给2个字节,占16位.
long型变量:使用关键字long来声明long型变量.
常量:long型常量用后缀L来表示,例如108L(十进制)、07123L(八进制)、0x3ABCL(十六进制)例如:longwidth=12L,height=2005L,length;对于long型变量,内存分配给8个字节,占64位.
§2.
2.
3字符类型char类型常量:'A','b'9','好','\t','き','モ'等,即用单引号扩起的Unicode表中的一个字符.
变量:使用关键字char来声明char型变量,对于char型变量,内存分配给2个字节,占16位例如:charch='A',home='家',handsome='酷';转意字符常量:有些字符(如回车符)不能通过键盘输入到字符串或程序中,就需要使用转意字符常量,例如:\n(换行),\b(退格),\t(水平制表),\'(单引号)双引号),\\(反斜线)等.
Java语言使用Unicode标准字符集,最多可以识别65536个字符.
例子1§2.
2.
4浮点类型float型常量:453.
54F(小数表示法),2e40f(2乘10的40次方,指数表示法).
变量:使用关键字float来声明float型变量,例如:floatx=22.
76f,tom=1234.
987f,weight=1e-12F;精度:float变量在存储时保留8位有效数字.
对于float型变量,内存分配给4个字节,占32位.
需要特别注意的是float常量后面必须要有后缀f或F.
§2.
2.
4浮点类型double型常量:238.
539d,231.
987(小数表示法),1e-90(1乘10的-90次方,指数表示法).
对于double常量,后缀有"d"或"D",但允许省略后缀.
变量:使用关键字double来声明double型变量,例如:doubleheight=23.
345,width=34.
56D,length=1e12;对于double型变量,内存分配给8个字节,占64位.
精度:double变量在存储double型数据时保留16位有效数字,实际精度取决于具体数值.
特别注意一个具有小数部分的数据的缺省类型是double而不是float.
所以float常量后面必须要有后缀"f"或"F".
§2.
3类型转换运算Java中数据的基本类型(不包括逻辑类型)按精度从"低"到"高"排列:byteshortcharintlongfloatdouble规则:当把级别低的变量的值赋给级别高的变量时,系统自动完成数据类型的转换.
例如:floatx=100;当把级别高的变量的值赋给级别低的变量时,必须使用显示类型转换运算.
显示转换的格式:(类型名)要转换的值;例如:intx=(int)34.
89;当把一个int型常量赋值给一个byte和short型变量时,不可以超出这些变量的取值范围,否则必须进行类型转换运算;例如:byteb=128;(error)byteb=(byte)128(ok)下面的例子2使用了类型转换运算,运行效果如图2.
2.
例子2例题§2.
4输入、输出数据_12.
4.
1输入基本型数据可以使用Scanner类创建一个对象:Scannerreader=newScanner(System.
in);其中:reader对象调用下列方法,读取用户在命令行输入的各种基本类型数据:nextBoolean()、nextByte()、nextShort()、nextInt(nextLong()、nextFloat()、nextDouble().
上述方法执行时都会堵塞,程序等待用户在命令行输入数据回车确认.
例题例子3中,用户在键盘依次输入若干个数字,每输入一个数字都需要按回车键确认,在键盘输入数0结束整个的输入操作过程,程序将计算出这些数的和,运行效果如图2.
3.
例子3§2.
4输入、输出数据_22.
4.
2输出基本型数据java使用System类中的方法实现数据输出例如:System.
out.
println()或System.
out.
print()输出串值,表达式的值.
二者的区别是前者输出数据后换行,后者不换行.
如:System.
out.
println(m+"个数的和为"+sum);System.
out.
println(":"+123+"大于"+122);如果需要输出的字符串的长度较长,可以将字符串分解成几部分,然后使用并置符号:"+"将它们首尾相接,例如:System.
out.
println("你好,很高兴认识你");§2.
4输入、输出数据_2续JDK1.
5新增了和C语言中printf函数类似的输出数据的方法,格式如下:System.
out.
printf("格式控制部分",表达式1,表达式2,…表达式n)格式控制部分由格式控制符号:%d、%c、%f、%s和普通的字符组成,普通字符原样输出.
格式符号用来输出表达式的值.
%d输出int类型数据值;%c输出char型数据;%f输出浮点型数据,小数部分最多保留6位;%s输出字符串数据.
输出数据时也可以控制数据在命令行的位置,例如:%md输出的int型数据占m列;%m.
nf输出的浮点型数据占m列,小数点保留n位.
例如:System.
out.
printf("%d,%f",12,23.
78);§2.
5数组数组是相同类型的数据按顺序组成的一种复合数据类型.
通过数组名加数组下标,来使用数组中的数据.
下标从0开始排序.
2.
5.
1声明数组声明一维数组有下列两种格式:数组的元素类型数组名[];数组的元素类型[]数组名;例如:floatboy[];char[]cat;声明二维数组有下列两种格式:数组的元素类型数组名[][];数组的元素类型[][]数组名;例如:floata[][];Char[][]b;2.
5.
2为数组分配元素空间为数组分配元素的格式如下:数组名=new数组元素的类型[数组元素的个数]例如:boy=newfloat[4];说明:数组属于引用型变量,数组变量中存放着数组的首元素的地址,通过数组变量的名字加索引使用数组的元素(内存示意如图2.
4所示).
比如:boy[0]=12;boy[1]=23.
908F;boy[2]=100;boy[3]=10.
23f;注意:数组的声明和分配空间可以在声明时同时完成:floatboy[]=newfloat[4];2.
5.
3数组元素的使用数组元素的使用一维数组通过索引(下标运算)符访问自己的元素.
如:boy[0],boy[1]等.
需要注意的是索引从0开始,因此,数组若有4个元素,那么索引到3为止,如果程序使用了如下语句:boy[4]=384.
98f;程序可以编译通过,但运行时将发生ArrayIndexOutOfBoundsException异常,因此在使用数组时必须谨慎,防止索引越界.
注意下标2.
5.
4length的使用length字段的使用对于一维数组,"数组名.
length"的值就是数组中元素的个数;对于二维数组"数组名.
length"的值是它含有的一维数组的个数例如:floatboy[]=newfloat[4]boy.
length的值为4.
int[][]a=newint[3][8]a.
length的值是3.
a[0].
length的值是8a[1].
length的值是8a[2].
length的值是82.
5.
5数组的初始化数组初始化创建数组后,系统会给数组的每个元素一个默认的值例如,float型是0.
0.
如果需要赋值,就要为每个元素赋值:例如:floatboy[]=newfloat[4];boy[0]=12;boy[1]=23.
908F;boy[2]=100;boy[3]=10.
23f;在声明数组的同时也可以给数组的元素一个初始值,如:floatboy[]={21.
3f,23.
89f,2.
0f,23f,778.
98f};2.
5.
6数组的引用数组的引用数组属于引用型变量,两个相同类型的数组如果具有相同的引用,它们就有完全相同的元素.
.
下面的例子4使用了数组,请读者注意程序的输出结果,运行效果如图2.
7.
例子4数组属于引用型变量,两个相同类型的数组如果具有相同的引用,它们就有完全相同的元素.
重要结论对于inta[]={1,2,3},b[]={4,5};数组变量a和b分别存放着引用de6ced和c17164,内存模型如图2.
5所示进行赋值a=b;那么,a中存放的引用和b的相同,这时系统将释放最初分配给数组a的元素,使得a的元素和b的元素相同,a、b的内存模型变成如图2.
6所示.
§2.
6应用举例折半法:对于从小到大排序的数组,我们只要判断数据是否和数组中间的值相等,如果不相等,当该数据小于数组中间元素的值,就在数组的前一半数据中继续折半找,否则就在数组的后一半数据中继续折半找,如此这般,就可以比较快地判断该数据是否在数组中.
官方网站:点击访问华纳云活动官网活动方案:一、香港云服务器此次推出八种配置的香港云服务器,满足不同行业不同业务规模的客户需求,同时每种配置的云服务都有不同的带宽选择,灵活性更高,可用性更强,性价比更优质。配置带宽月付6折季付5.5折半年付5折年付4.5折2年付4折3年付3折购买1H1G2M/99180324576648直达购买5M/17331556710081134直达购买2H2G2M892444...
达州创梦网络怎么样,达州创梦网络公司位于四川省达州市,属于四川本地企业,资质齐全,IDC/ISP均有,从创梦网络这边租的服务器均可以备案,属于一手资源,高防机柜、大带宽、高防IP业务,一手整C IP段,四川电信,一手四川托管服务商,成都优化线路,机柜租用、服务器云服务器租用,适合建站做游戏,不须要在套CDN,全国访问快,直连省骨干,大网封UDP,无视UDP攻击,机房集群高达1.2TB,单机可提供1...
RAKsmart怎么样?RAKsmart发布了2021年中促销,促销时间,7月1日~7月31日!,具体促销优惠整理如下:1)美国西海岸的圣何塞、洛杉矶独立物理服务器低至$30/月(续费不涨价)!2)中国香港大带宽物理机,新品热卖!!!,$269.23 美元/月,3)站群服务器、香港站群、日本站群、美国站群,低至177美元/月,4)美国圣何塞,洛杉矶10G口服务器,不限流量,惊爆价:$999.00,...