




已阅读5页,还剩87页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java程序设计 第二章 类型、变量和表达式 1 2 学习目标 掌握八个原始类型 理解标识符、变量和常量 能够熟练的进行变量和常量的声明 理解显式和隐式的类型转换 辨认、描述并使用Java运算符 掌握表达式中运算符的执行顺序 使用赋值语句,掌握赋值兼容性 2 2.1 认识程序 什么是程序?,有一个著名的公式说: 3 程序=数据结构+算法” 什么是数据结构? 简单的数据结构就是众所周知的整型、实型这样的 数据表示,复杂的数据结构可以是由简单的数据结 构组合而成,如数组。 什么是算法? 算法就是用什么样的方法处理给定的数据从 而得到所需的结果。 3 2.1 一个计算圆面积的程序 面积a= r2 中,计算过程可以这样描述 : u第一步:给出圆的半径; u第二步:将半径值带入圆面积计算公式,计算 出圆面积,用a保存结果。 4 / 程序2-1:一个计算圆面积的程序 public class ComputeArea public static void main(String args) int r = 10; double area=3.14*r*r; System.out.println(area); 4 5 2.2变量 在程序中表示数据有两种方法, u一种是在表达式中直接用原始值来表示,如表示 数值5、-6、7.86等,它们被称为“字面量( literal) u另外一种是用一个特定的名字来间接表示,被称 为“变量” u间接表示的最大优点在于可以重复使用一个名字来表 达某种类型的数值。 注 u在Java语言中,所有的变量必须要首先声明,然 后才能使用,而且访问一个未经初始化的局部变 量,将导致编译错误。 5 6 2.2.1标识符 在Java编程语言中,标识符是赋予变量、类或方 法的名称。 u标识符可从一个字母、下划线(_)或美元符号($)开 始,随后可跟除了在Java中作为运算符之外的任何 可见字符所构成的连续字符串,但不能被空格或制 表符隔开。 u标识符是大小写区别对待的并且未规定最大长度 u标识符不能是关键字 6 7 表2-1 有效与无效标识符 有效标识符无效标识符 Identifier userName User_name _sys_varl $change 1User 220 user name user u float a0f, b=0.1f; u char c1, c2, c3=c; u double d1=1.0d; u boolean mycom=true; u Date d1,d2; u HelloWorld h1,h2; 12 13 为什么要进行变量声明 u变量就是一个保存有值的内存位置的名字表示 u声明变量,就是分配内存 u通过类型声明,可以明确的知道每个变量占据 内存的大小; u通过声明,对非局部变量定义了一个初值; u重要的也在于可以重复使用一个名字来表达某 种类型的数值。 13 14 逻辑类型 u boolean truth = true; /声明一个布尔类型的变量 truth,并初始化其值为true 字符类型 u 使用char类型可表示单个字符。一个char代表一个16 -bit无符号的(不分正负的)Unicode字符。一个 char文字必须包含在单引号内( )。 u a u t 一个制表符 u u? 一个特殊的Unicode字符。?应严格按 照四个16进制数字进行替换 14 15 文本类型char和String String u不是一个基本数据类型,它是一个类 u具有用双引号(”)引用的多个文字字符 u“The quick brown fox jumped over the lazy dog.” u可按如下情形使用: uString greeting = “Good Morning! n”; uString err_meg = “ Record not found !”; Char和String类型变量的声明和初始化如下所示: uchar ch = A; / declares and initializes a char variable uchar ch1,ch2 ; / declares two char variables u/ declare two String variables and initialize them uString greeting = “Good Morning ! n“ ; uString err_msg = “Record Not Found !“ ; uString str1,str2 ; / declare two String variables 15 16 小测验 指出下面的错误声明,说明原因 char ch = AB; u解释:单引号内只能包含一个字符 char ch1= “A”; u解释:双引号表示界定的是一个字符串常量 char ch2=100 16 17 整数类byte, short, int, long u2 十进制值是2 u077 首位的0表示这是一个八进制的数值 u0xBAAC 首位的0x表示这是一个16进制的数值 默认整数类文字属int类型,除非在其后直接跟着一 个字母“L”或者“l”,L表示一个long值。 ubyte smallOne=7; ushort count=10000; uint score=100; ulong bigone=999999999L,largeOne; 17 18 课堂练习 下面的哪些答案可以用以表示八进制值8。 u 010 0x10 08 0x8 18 19 课堂练习 写出下面的输出结果 int color=10; System.out.printf(“10的8进制表示是%on“,color); System.out.printf(“10的10进制表示是%dn“,color); System.out.printf(“10的16进制表示是%xn“,color); System.out.printf(“10的2进制表示是%sn“, Integer.toBinaryString(color); System.out.printf(“10的8进制表示是%sn“, Integer.toOctalString(color); System.out.printf(“10的16进制表示是%sn“, Integer.toHexString(color); 19 JAVA中Printf支持的格式 u%c 单个字符 u%d 十进制整数 u%f 十进制浮点数 u%o 八进制数 u%s 字符串 u%u 无符号十进制数 u%x 十六进制数 u% 输出百分号% printf的格式控制的完整格式: u% - 0 m.n l或h 格式字符 20 java中二进制、八进制、十六制相互转换 十进制转成十六进制: Integer.toHexString(int i) 十进制转成八进制 Integer.toOctalString(int i) 十进制转成二进制 Integer.toBinaryString(int i) 十六进制转成十进制 Integer.valueOf(“FFFF“,16).toString() 八进制转成十进制 Integer.valueOf(“876“,8).toString() 二进制转十进制 Integer.valueOf(“0101“,2).toString() 21 22 浮点float和double 如果一个数字文字包括小数点或指数部分,或者 在数字后带有字母F或f(float)、D或d( double),则该数字文字为浮点。 u 3.14 一个简单的浮点值(a double) u 4.02E23 一个大浮点值 u 2.718F 一个简单的float值 u 123.4E+306D 一个大的带冗余D的double值 以下是有关浮点数类型变量的声明和初始化: u float pi=3.1415926 , score; u double weight=123.4E+36D; 22 23 2.2.5 变量初始化 八种基本数据类型变量的默认值如下: ubooleanfalse ubyte0 ucharu0000,空,Unicode码的0000 ushort0 uint0 ulong0L ufloat0.0f udouble 0.0 初始化 u成员变量自动初始化 u局部变量必须在使用之前显示初始化 23 24 课堂练习 进行下列变量说明 u初始值为0的int变量a u初始值为1000的long变量b u初始值为3.4的float变量c u初始值为4的char变量ch u初始值为true的boolean变量e 24 25 课堂练习 下面程序的运行结果是什么? public class Demo public static void main(String args) int i; System.out.println(i); 可能尚未初始化的变量i 25 26 课堂练习 替换下面的代码段到上述程序,分析现象。 ufloat f=10.0f; udouble d=100.0d; uf=d; uSystem.out.println(“f=“+f); 可能损失精度 26 27 课堂练习 u int a=10; u char c=a; u a=c+a; u System.out.printf(“c=%c“,a); 27 28 2.2.6 转义字符 表2-4 其它转义字符 转义字符作用Unicode转义字符作用Unicode uf换页u ”“u0022n换行u u0027r回车u000D b退格u0008t横向跳格 u0009 28 29 / 程序2-2:转义字符的应用 public class EscapeDemo public static void main(String args) System.out.println(“这是u03c0”); System.out.println(“下面的数据输出是按照制表位控制的,每2个一行。”); System.out.print(10+“t”+20+“n”+30+“t”+40+“n”); 29 30 课堂练习 System.out.printf(“hellonworldn“); 30 31 2.2.7 常量 字面常量和标识符常量。 常量用法通常用在开发中用标识符来表示一个 固定值,便于在程序中通过名称来引用。 u 声明同时初始化 final int MAX_SPEED=200; u 先声明,随后初始化 final int MAX_SPEED; . . . MAX_SPEED=200; 作为一种良好的编码习惯,常量名的定义一般 均用大写来表示。 31 32 2.2.8 引用类型 除去基本类型之外的所有类型都是引用类型;引用对象的变量 就是引用变量。/下面的例子创建了一个新的类型,如Card public class Card char suit; String rank; 声明一个变量 u Card c = new Card(); 访问成员 uc.rank = “K”; 32 33 2.3 运算符和表达式 表达式就是由变量、对象、运算符和方法调用 构成的式子,表达式应该按照Java语法来构造 ,才可以被编译系统理解、执行,每个表达式 都有一个某种类型的结果。 u如: uint a=0,b=0,max=0; u umax=ab?a:b; ua+(ab?a:b); 33 34 2.3.1 运算符 表2-4 运算符的结合方向 Separator () ; , R to L + - + - ! (data type) L to R * / % L to R + - L to R L to R = instanceof L to R = != L to R s = “s=“ + 4*5; 根据Java语言规范,在进行算术运算中需要注意以下几个 问题: (1)整数除。两个操作数为整数,结果得到一个整数,结 果截取商的整数部分。如果需要保留,应该对算术表达式 进行强制类型转换。1/2的结果是0 u(float)1/2)的结果是0.5 u(float)(1/2)的结果则是0。 (2)浮点除。两个操作数有一个为浮点数或两个都为浮点 数,结果得到一个浮点数。 38 (3)求余(取模运算)。浮点数也可以求余, 但取余无法得出准确的结果。如10.1%3.3的结 果可能为0.20000052。若%的两侧有负数,则 运算结果的正负取决于第一个数; 15%-4 -15%4 39 40 强制类型转换 一种类型就是一些可能的值的集合 某些类型比另外一些类型“大”-(值更多) u每一个int都是一个long,long就是较大的类型 u包含子集 long int int long 40 41 强制类型转换(cont.) 向宽的方向是自动的 uint i=32;/没有 ulong x=32;/int to long ulong x=i; /int to long 向窄的方向必须强制说明 uint i=32L;/error uint i=(int)32L;/long to int ubyte j=(byte)i; 类型转换可能丢失信息 int long byte short float double char Widening 自动转换 强制转换 narrowing 41 42 强制类型转换 u 在赋值的信息可能丢失的地方,编译器需要程 序员用类型转换(typecast)的方法确认赋值 。例如,它可以“挤压”一个long值到一个int变 量中。显式转型做法如下: u long bigValue =99L; u int squashed =(int) (bigValue); 在上述程序中,期待的目标类型被放置在圆括 号中,并被当作表达式的前缀,该表达式必须 被更改。一般来讲,建议用圆括号将需要转型 的全部表达式封闭。否则,转型操作的优先级 可能引起问题。 42 43 算术表达式的结果类型 结果类型 操作数的类型 long操作数必须是整数类型,而且至少一个操作 数类型是long int操作数必须是整数类型 double至少一个操作数类型是double float至少一个操作数类型是float ,操作数不能有 类型double 43 44 练习题 long bigval = 6; int smallval = 99L; double z = 12.414F float z1 = 12.414; 下面的代码段执行后 uint i = 10; uint n = i+%5; ui和n的值分别是多少? /6 是一个int类型,允许 /99L是long类型, 不合法 /12.414F是float类型,允许 /12.414是double类型,不合法 i=11,n=0 44 45 设 int a=1和double d=1.0,写出下列表达式的结 果 a=46/9 a=46%9+4*4-2 a=45+43%5*(23*3%2) a=45+1+45*50%(-a) d=1.5*3+(+d) d=1.5*3+d+; a%=3/a+3 5 15 48 异常 6.5 5.5 1 45 46 下列类型转换合法吗? char c=A; i= (int)c; boolean b=true; i=(int)b; float f=1000.34f; int i=(int)f; double d=1000.34; i= (int)d; int i=1000; char c=(char)i; int i=1000; boolean b=(boolean)i 46 47 2.3.3关系和条件(逻辑)表达式 运算符 运算用法功能 大于op1op2假如op1大于op2,返回结果是 true =大于等于op1=op2假如op1大于等于op2,返回结果 是true 2 u . u red=color u yellow=color u blue=color 57 58 2.3.5 赋值运算符 += -= *= /= %= uint j = i 6 ? i-1 : i+; uSystem.out.println(i+”, ”+j); 输出7,6 60 61 public static void main(String args) int c=8; switch (cy 0 e= ab? a:b; e= ec? e:c; e= ed? e:d; 69 70 课堂练习 下面表达
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 室内钓鱼馆管理制度
- 家属等候区管理制度
- 库房门进出管理制度
- 形象岗卫生管理制度
- 影像科台账管理制度
- 微型消防台管理制度
- 快消品应急管理制度
- 快餐店后厨管理制度
- 总分包劳务管理制度
- 患者等候室管理制度
- 2024年北京市普通高中第一次合格性学业水平考试英语试题
- 总复习(教案)2023-2024学年数学 四年级下册 北师大版
- 工程量计算书(全部)
- 经侦总论试题
- 陕西省安康市教育联盟2023-2024学年高一下学期期末考试数学试卷
- 2023-2024学年景德镇市珠山区数学五年级第二学期期末监测试题含解析
- 小镇文旅康养项目可研报告【健康养老】【旅游康养】
- 2024广西公需课高质量共建“一带一路”谱写人类命运共同体新篇章答案
- EHS专项施工EHS管理组织机构
- 2024年南安市国有资本投资运营有限责任公司招聘笔试冲刺题(带答案解析)
- T/CEC 143-2017 超高性能混凝土电杆完整
评论
0/150
提交评论