




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据类型、变量、数组 第03章 数据类型、变量、数组 数据类型、变量、数组 lJava 语言强类型语言。 lJava 的安全和健壮性部分来自于强类型语言。 l每个变量有类型,每个表达式有类型,而且 每种类型是严格定义的。 l所有的数值传递,不管是直接的还是通过方 法调用经由参数传过去的都要先进行类型相 容性的检查。 lJava编译器对所有的表达式和参数都要进行 类型相容性的检查以保证类型是兼容的。 l任何类型的不匹配都是错误的,在编译器完 成编译以前,错误必须被改正。 数据类型、变量、数组 lJava定义了8个简单(或基本)的数据类型。 l使用简单数据类型可以构造数组或类的类 型来使用它们。
2、lJava是完全面向对象的,但简单数据类型不 是。这样做的原因是出于效率方面的考虑。 lJava可移植性的要求,所有的数据类型都 有一个严格的定义的范围。 数据类型、变量、数组 lJava 定义了4个整数类型: byte,short,int,long。 lJava 不支持无符号的整数。 l长整型 64 9,223,372,036,854,775,808 9,223,372,036,854,775,807 l整型 32 2,147,483,648 2,147,483,647 l短整型 16 32,768 32,767 l字节型 8 128127 数据类型、变量、数组 l有符号的8位类型。 l数的
3、范围是 -128127。 l从网络或文件处理数据流的时候,字节类型 的变量特别有用。 l处理未加工的二进制的数据时,它们也是有 用的。 l例如:byte b,c; 数据类型、变量、数组 l有符号的16位类型。 l数的范围是 32,76832,767 。 l可能是Java中使用得最少的类型。 l例如: short s; short t; 数据类型、变量、数组 l最常用的整数类型是 int。它是有符号的32位 类型。 l数的范围是 -2,147,483,6482,147,483,647。 l包含 byte,short,int 及字面量数字,在进行 计算以前,所有表达式的类型被提升到 int。 l整
4、型是最通用并且有效的类型。 数据类型、变量、数组 l有符号的64位类型 l数的范围是 9,223,372,036,854,775,808 9,223,372,036,854,775,807 l对于那些整型不足以保存所要求的数值时是 有用的。 数据类型、变量、数组 / Compute distance light travels using long variables. class Light public static void main(String args) int lightspeed; long days; long seconds; long distance; / approx
5、imate speed of light in miles per second lightspeed = 186000; days = 1000; / specify number of days here seconds = days * 24 * 60 * 60; / convert to seconds distance = lightspeed * seconds; / compute distance System.out.print(In + days); System.out.print( days light will travel about ); System.out.p
6、rintln(distance + miles.); 数据类型、变量、数组 In 1000 days light will travel about 160 miles. 数据类型、变量、数组 l浮点数字,也就是人们知道的实数(real)。 lJava实现了标准(IEEE-754)的浮点型和运 算符集。 l单精度浮点型(float)及双精度(double) 浮点型: DOUBLE 64 1.7E3081.7E+308 float 32 3.4E0383.4E+038 数据类型、变量、数组 l占用32位存储空间的单精度(single- precision)值。 l比双精度更快且只占用双精度一半的
7、空间。 l当值很大或很小时,它将变得不精确。 l例子: Float hightemp,lowtemp; 数据类型、变量、数组 l占用64位的存储空间。 l数学函数,如 sin( ),cos( ),和 sqrt( ) 均返回双精度的值。 l当你需要保持多次反复迭代的计算的精 确性时,或在操作值很大的数字时,双 精度型是最好的选择。 数据类型、变量、数组 / Compute the area of a circle. class Area public static void main(String args) double pi,r,a; r = 10.8; / radius of circle
8、 pi = 3.1416; / pi,approximately a = pi * r * r; / compute area System.out.println(Area of circle is + a); 数据类型、变量、数组 lJava 使用 Unicode 码代表字符。 lJava 中的 char 类型是16位,其范围是0 65,536,没有负数的char。 l有关 Unicode 码的更多信息可在网址上 找到。 数据类型、变量、数组 / Demonstrate char data type. class CharDemo public static void main(Strin
9、g args) char ch1,ch2; ch1 = 88; / code for X ch2 = Y; System.out.print(ch1 and ch2:); System.out.println(ch1 + + ch2); 数据类型、变量、数组 ch1 and ch2:X Y 数据类型、变量、数组 / char variables behave like integers. class CharDemo2 public static void main(String args) char ch1; ch1 = X; System.out.println(ch1 contains
10、+ ch1); ch1+; / increment ch1,像整数一样进行运算操作 System.out.println(ch1 is now + ch1); 数据类型、变量、数组 ch1 contains X ch1 is now Y 数据类型、变量、数组 l表示逻辑值的简单类型。 l值只能是真或假。 l当用方法 println ( ) 输出布尔的值时,显 示的是true或false。 l布尔变量的值本身就足以用来控制if语句。 l关系运算符(例如 9 is + (10 9); 数据类型、变量、数组 b is false b is true This is executed. 10 9 is
11、 true 数据类型、变量、数组 l任何一个数字的值就是一个整数字面量。 l十进制(decimal,基数是10)。 l八进制(octal,基数是8): 前导为 0 l十六进制(hexadecimal,基数是16): 前导为 0 x 或 0X lLong 字面量:后面加 l 或 L。 数据类型、变量、数组 l标准记数法(Standard notation): 由整数部分加小数点加小数部分组成。 例如2.0,3.14159,和 0.6667 l科学记数法(Scientific notation): 是浮点数加一表明乘以10的指定幂次的后缀, 指数是紧跟E或 e 的一个十进制的数字,它可 以是正值或
12、是负值。例子如6.022E23, 314159E-05,及2e+100。 lJava中的浮点字面量默认是双精度。 l为了指明一个浮点字面量,你必须在字面量 后面加 F 或 f。 数据类型、变量、数组 l布尔型字面量仅仅有2个逻辑值,真或假。 lJava 中,真字面量的值不等于 1,假字面 量的值也不等于 0 。 数据类型、变量、数组 l可见的 ASCII 字符都能直接被包括在单 引号之内,例如 a,z,and 。 l八进制,使用反斜线加3个阿拉伯数字。 例如,141 是字母 a。 l十六进制,使用反斜线和 u(u)加4个 十六进制阿拉伯数字。例如,u0061因 为高位字节是零,代表ISO-La
13、tin-1字符 集中的 a。 数据类型、变量、数组 ddd 八进制字符(ddd) uxxxx 十六进制Unicode码字符 单引号 双引号 反斜杠 r 回车键 n 换行 f 换页 t 水平制表符 b 退格 数据类型、变量、数组 l字符串字面量语言将一系列字符用双引号 括起来。 l为字符串定义的字符转义序列和八进制/十 六进制记法在字符串内的工作方法一样。 l例如: Hello World twonlines This is in quotes 数据类型、变量、数组 l变量是 Java 程序的一个基本存储单元。 l变量由一个标识符,类型及一个可选初 始值的组合定义。 l所有的变量都有一个作用域,
14、定义变量 的可见性,生存期。 数据类型、变量、数组 l所有的变量必须先声明再使用。 l基本的变量声明方法如下: type identifier = value,identifier = value . ; l变量声明的例子: int a, b, c; / declares three ints, a, b, and c. int d = 3, e, f = 5; / declares three more ints, initializing / d and f. byte z = 22; / initializes z. double pi = 3.14159; / declares an
15、approximation of pi. char x = x; / the variable x has the value x. lJava允许任何合法的标识符具有任何它们声明的类 型。 数据类型、变量、数组 l允许在变量声明时使用任何有效的表达式来动态地 初始化变量。 l例如: 例 P37 / Demonstrate dynamic initialization. class DynInit public static void main(String args) double a = 3.0, b = 4.0; / c is dynamically initialized double
16、 c = Math.sqrt(a * a + b * b); System.out.println(Hypotenuse is + c); 数据类型、变量、数组 lJava 允许变量在任何程序块内被声明。 l一个程序块定义了一个作用域(scope)。 l一个作用域决定了哪些对象对程序的其他部 分是可见的,它也决定了这些对象的生存期。 l在一个作用域中定义的变量对于该作用域外 的程序是不可见(即访问)的。 l作用域规则为封装提供了基础。 l作用域可以进行嵌套。外面的作用域包含内 部的作用域。内部作用域定义的对象对于外 部是不可见的。 数据类型、变量、数组 / Demonstrate block
17、scope. class Scope public static void main(String args) int x; / known to all code within main x = 10; if(x = 10) / start new scope int y = 20; / known only to this block / x and y both known here. System.out.println(x and y: + x + + y); x = y * 2; / y = 100; / Error! y not known here / x is still k
18、nown here. System.out.println(x is + x); 数据类型、变量、数组 x and y: 10 20 x is 40 数据类型、变量、数组 l变量可以在程序块内的任何地方被声明,但是只有 在他们被声明以后才是合法有效的。 l例如: / This fragment is wrong! count = 100; / oops! cannot use count before it is declared! int count; l变量在其作用域内被创建,离开其作用域时被撤消。 l在一个方法内定义的变量在几次调用该方法之间将 不再保存它们的值。 l在块内定义的变量在离
19、开该块时也将丢弃它的值。 l一个声明定义包括一个初始化,那么每次进入声明 它的程序块时,该变量都要被重新初始化。 数据类型、变量、数组 / Demonstrate lifetime of a variable. class LifeTime public static void main(String args) int x; for(x = 0; x byte , 257 mod 256 = 1 System.out.println(i and b + i + + b); System.out.println(nConversion of double to int.); i = (int)
20、 d; / 323.142 - 323 System.out.println(d and i + d + + i); System.out.println(nConversion of double to byte.); b = (byte) d; / 323.142 - 323 mod 256 - 67 System.out.println(d and b + d + + b); 数据类型、变量、数组 Conversion of int to byte. i and b 257 1 Conversion of double to int. d and i 323.142 323 Conver
21、sion of double to byte. d and b 323.142 67 数据类型、变量、数组 l对中间值的精确要求有时超过任何一个操作数的 范围。例: byte a = 40; byte b = 50; byte c = 100; int d = a * b / c; /自动提升byte型或short型操作数到int型。 l自动类型提升有好处,也会引起编译错误。例如: byte b = 50; /表达式求值时自动提升为int b = b * 2; / Error! Cannot assign an int to a byte! l使用一个显式的强制类型转换, byte b = 5
22、0; b = (byte)(b * 2); 数据类型、变量、数组 lbyte 型和 short 型提升到 int 型。 l如果一个操作数是 long 型,整个表达 式将被提升到 long 型。 l如果一个操作数是 float 型,整个表达 式将被提升到 float 型。 l如果有一个操作数是 double 型,计算 结果就是 double 型。 数据类型、变量、数组 class Promote public static void main(String args) byte b = 42; char c = a; short s = 1024; int i = 50000; float f
23、= 5.67f; double d = .1234; double result = (f * b) + (i / c) - (d * s); / b-float : float, c-int : int, s-double : double / float + int - double double System.out.println(f * b) + + + (i / c) + - + (d * s); System.out.println(result = + result); 数据类型、变量、数组 l数组(array)是相同类型变量的集合。 l可以使用共同的名字引用它。 l数组可被定
24、义为任何类型。 l可以是一维或多维。 l数组是通过下标来访问它。 数据类型、变量、数组 l一维数组实质上是相同类型变量列表。 l一维数组的声明格式是: type var-name ; int month_days ; l用运算符 new 分配地址并把它赋给数组的形式如 下: var-name = new typesize; month_days = new int12; l你可以在方括号内指定它的下标来访问数组中特定 的元素。所有的数组下标从零开始 month_days1 = 28; / 值28赋给数组的第2元素 数据类型、变量、数组 / Demonstrate a one-dimension
25、al array. class Array public static void main(String args) int month_days; month_days = new int12; month_days0 = 31; month_days1 = 28; month_days2 = 31; month_days3 = 30; month_days4 = 31; month_days5 = 30; month_days6 = 31; month_days7 = 31; month_days8 = 30; month_days9 = 31; month_days10 = 30; mo
26、nth_days11 = 31; System.out.println(April has + month_days3 + days.); 数据类型、变量、数组 April has 30 days. 数据类型、变量、数组 lint month_days = new int12; l数组可以在声明时被初始化。 l在花括号之内用逗号分开的表达式的列表。 逗号分开了数组元素的值。 lJava 会自动地分配一个足够大的空间来保存 你指定的初始化元素的个数,而不必使用运 算符 new。 数据类型、变量、数组 / An improved version of the previous program. c
27、lass AutoArray public static void main(String args) int month_days = 31, 28, 31, 30, 31, 30, 31, 31, 30, 31,30, 31 ; System.out.println(April has + month_days3 + days.); Ans: 同上题 April has 30 days. 数据类型、变量、数组 例 P45 运用一维数组来计算一组数字的平均数 class Average public static void main(String args) double nums = 10
28、.1, 11.2, 12.3, 13.4, 14.5; double result = 0; int i; for(i=0; i5; i+) result = result + numsi; System.out.println(Average is + result / 5); Ans: Average is 12.3 数据类型、变量、数组 l在Java中,多维数组实际上是数组的数组。 l下面语句定义了一个名为 twoD 的二维数组变量。 int twoD = new int45; l该语句分配了一个4行5列的数组并把它分配给数组 twoD。 l二维数组(4 行5 列)的概念性表示 数据类型
29、、变量、数组 / Demonstrate a two-dimensional array. class TwoDArray public static void main(String args) int twoD= new int45; int i, j, k = 0; for(i=0; i4; i+) for(j=0; j5; j+) twoDij = k; k+; for(i=0; i4; i+) for(j=0; j5; j+) System.out.print(twoDij + ); System.out.println(); 数据类型、变量、数组 0 1 2 3 4 5 6 7 8
30、 9 10 11 12 13 14 15 16 17 18 19 数据类型、变量、数组 l当你给多维数组分配内存时,你只需指定 第一个(最左边)维数的内存即可。 l你可以单独地给余下的维数分配内存。 l例如 int twoD = new int4; twoD0 = new int5; twoD1 = new int5; twoD2 = new int5; twoD3 = new int5; l程序定义了一个二维数组,它的第二维的 大小可以是不相等的。 数据类型、变量、数组 / Manually allocate differing size second dimensions. class T
31、woDAgain public static void main(String args) int twoD = new int4; twoD0 = new int1; twoD1 = new int2; twoD2 = new int3; twoD3 = new int4; int i, j, k = 0; for(i=0; i4; i+) for(j=0; ji+1; j+) twoDij = k; k+; for(i=0; i4; i+) for(j=0; ji+1; j+) System.out.print(twoDij + ); System.out.println(); 数据类型、变量、数组 0 1 2 3 4 5 6 7 8 9 l不规则多维数组在某些情况下使用效率 较高。 l稀疏矩阵。 数据类型、变量、数组 / Initialize a two-dimensional array. class Matrix public static void main(String args) double m = 0*0, 1*0, 2*0, 3*0 , 0*1, 1*1, 2*1, 3*1 , 0*2, 1*2, 2*2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- tt付款外贸合同范例
- oemodm委托加工合同范例
- 农村房屋个人转让合同范例
- 60岁解聘合同范例
- 假买卖合同范本
- 关于借款合同范例
- 临时家具租赁合同范例
- 枇杷种植收购协议书范本
- 房屋装修拆除合同范本
- 煤场场地出租合同
- LY/T 2499-2015野生动物饲养场总体设计规范
- 爱德华阀门检修工艺(2)2
- GB/T 13701-1992单标准气体质谱法铀同位素分析
- AMOLED技术宝典(十年OLED技术经验总结)
- 7S稽核查检表-仓库
- 小学科学《噪音的危害与防治》优质课件
- 病理学-第3章 局部血液循环障碍
- 湖北省黄石市基层诊所医疗机构卫生院社区卫生服务中心村卫生室信息
- 打印版医师执业注册健康体检表(新版)
- 时代与变革-为人生而艺术
- 人教八年级下册英语U5Do-you-remember-what-you-were-doing?课件
评论
0/150
提交评论