Java程序设计 第2章 基本数据类型及操作
学习目标 编写Java程序执行简单的计算 理解标识符、变量、常量 使用赋值语句和赋值表达式 掌握Java的基本数据类型 使用操作符和表达式 了解操作数计算顺序,操作符优先级和结合规则 使用JOptionPane输入对话框和控制台获取输入 熟悉Java文件、编程风格和命名规则 理解语法错误、运行时错误和逻辑错误
例 计算圆的面积 编写程序,给定半径,计算圆的面积 Example:ComputeArea.java 读入半径值 计算面积 面积=半径×半径×π 显示面积 Example:ComputeArea.java
标识符 Java中使用标识符(identifier)来命名变量、常量、方法、类、包等实体。 标识符命名规则 标识符是由字母、数字、下划线(_)、美元符号($)组成的字符序列。 标识符必须以字母、下划线(_)、美元符号($)开头。不能以数字开头。 标识符不能是保留字。 标识符不能为true、false或null。 标识符可以为任意长度。 例如:$2, area, radius, showMessageDialog是合法的标识符;2A, d+4是非法的标识符
Java保留字 abstract continue for new switch assert default if package synchronized boolean do goto private this break double implements protected throw byte else import public throws case enum instanceof return transient catch extends int short try char final interface static void class finally long strictfp volatile const float native super while
变量 变量(variable)用于保存数据输入、数据输出和中间值。可以向变量赋予类型匹配的值。 声明变量语法 datatype variableName; 或者 datatype v1, v2, … , v3; 例如: int x; double radius, area;
赋值语句 语法 variable = expression; 例如: x = 1; x = 5 * (3 / 2) + 3 * 2; x = y + 1; area = radius * radius * 3.14159;
赋值表达式 语法 variable = expression 赋值表达式的结果等于表达式的值。赋值表达式是右结合的。 例如: i = j = k = 1; 等价于 k = 1; j = k; i = j;
同时完成变量声明和初始化 语法 方法中的变量在使用前必须赋值。 datatype variable = expression; 例如: int x = 1; int x = 1, y = 2; 方法中的变量在使用前必须赋值。 int x, y; y = x + 1; //error
常量 常量(constant)是一旦初始化后就不能再改变的数据。 语法 使用常量的好处 final datatype CONSTANT_NAME = value; 例如: final double PI = 3.14159; 使用常量的好处 避免重复输入 便于程序修改 便于程序阅读 Example:ComputeAreaConst.java
Java数据类型 byte short 整数类型 int long 字符类型 char 基本类型 float 浮点类型 double 逻辑类型 boolean 类(class) 引用类型 接口(interface) 数组(array)
数值数据类型 整数 浮点数 byte 8位带符号整数(-128 到 127) short 16位带符号整数(-32768 到 32767) int 32位带符号整数(-2147483648 到 2147483647) long 64位带符号整数(-9223372036854775808 到 9223372036854775807) 浮点数 float 32位浮点数(负数 -3.4×1038到-1.4×10-45 正数 1.4×10-45到3.4×1038 ) double 64位浮点数(负数 -1.8×10308到-4.9×10-324 正数 4.9×10-324到1.8×10308)
数字操作符 加(+)、减(-)、乘(*)、除(/)、求余(%) 整数相除的结果还是整数,省略小数部分。 int a = 34 + 1; // 35 double b = 34.0 – 0.1; // 33.9 long c = 300 * 30; // 9000 double d = 1.0 / 2.0; // 0.5 int e = 1 / 2; // 0 byte f = 20 % 3; // 2 整数相除的结果还是整数,省略小数部分。 int i = 5 / 2 // 2 int j = -5 / 2 // -2
数字字面值 字面值是直接出现在程序中的常量值。 整数字面值 浮点数字面值 int i = 34; long k = 100000; 以0开头表示八进制,如035;以0x或0X开头表示十六进制,如0x1D,0X1d;以1-9开头表示十进制,如29 后缀字母:以l或L结尾表示long 类型,如29L;其它表示int类型。 浮点数字面值 浮点数是包含小数点的十进制数,后跟可选的指数部分。如 18. 1.8e1 .18E2 后缀字母:以d或D结尾或者无后缀表示double类型;以f或F结尾表示float类型
简捷操作符 常用简洁操作符 递增和递减运算符:++, -- 前缀表示先加(减)1后使用 后缀表示先使用后加(减) 1 操作符 举例 等价于 操作符 举例 等价于 += i += 8 i = i + 8 -= f -= 8.0 f = f - 8.0 *= i *= 8 i = i * 8 /= i /= 8 i = i / 8 %= i %= 8 i = i % 8 递增和递减运算符:++, -- 前缀表示先加(减)1后使用 后缀表示先使用后加(减) 1
数字类型转换 如果二元操作符的两个操作数的数据类型不同,那么根据下面的规则对操作数进行转换: 如果有一个操作数是double类型,另一个操作数转换为double类型。 否则,如果有一个操作数是float类型,另一个操作数转换为float类型。 否则,如果有一个操作数是long类型,另一个操作数转换为long类型。 否则,两个操作数都转换为int类型。 byte i = 100; long k = i * 3 + 4; double d = i * 3.1 + k / 2;
强制类型转换 将值赋值给较大取值范围的变量时,自动进行类型转换。 byte → short → int → long → float → double 将值赋值给较小取值范围的变量时,必须使用强制类型转换(type casting)。 语法 (datatype)variableName 例如: float f = (float)10.1; // 10.1 int i = (int)f; // 10 int j = (int)-f; // -10
注意 整数操作时,除数不能为0。 浮点数操作上溢至Infinity,下溢至0。 整数除0产生ArithmeticException异常。 0.0除0.0等于NaN Example:IntegerDemo.java, DoubleDemo.java
字符数据类型 char表示16位的单个Unicode字符。 char类型的字面值 可以用\uxxxx形式表示。如:'\u7537', '\u5973' 转义字符表示:\n \t \b \r \f \\ \' \" 例如: char letter = 'A'; char numChar = '4';
字符串 String表示一个字符序列。 字符串的字面值是由双引号界定的零个或多个字符。 连接运算:+, += "Welcom to java!" "" 连接运算:+, += 加号用于连接两个字符串。如果其中一个不是字符串,则先将该操作数转换成字符串,再执行连接操作。 String message = "Welcome " + "to " + "java"; // Welcome to Java String s = "Chapter" + 2; // Chapter2 String s1 += "Supplement" + 'B'; // SupplementB message += " and Java is fun"; // Welcome to Java an Java is fun System.out.println("i + j = " + i + j);
从输入对话框获得输入 获取输入字符串 字符串转换成数字类型 String string = JOptionPane.showInputDialog( null, "Prompting Message", "Dialog Title", JOptionPane.QUESTION_MESSAGE)); String string = JOptionPane.showInputDialog("Prompting Message"); 字符串转换成数字类型 int i = Integer.parseInt(string); double d = Double.parseDouble(string); 消息 标题 图标
例 计算还贷金额 用户输入利率、年数、贷款总额,程序计算每月分期付款金额和总金额。 每月分期付款计算公式: Example:ComputeLoan.java
例 整钱兑零 编写程序,把给定的钱数分成较少的货币单位。可用的货币单位为: dollar(1元) quarter(2角5分) dime(1角) nickel(5分) penny(1分) Example:ComputeChange.java
例 显示当前时间 编写程序,显示当前的格林威治标准时间(Greenwich Meridian Time, GMT),格式为: 时:分:秒 Example:ShowCurrentTime.java
从控制台获取输入 标准输入/输出流 Scanner类 System.out 标准输出流 System.in 标准输入流 Scanner scanner = new Scanner(System.in); double d = scanner.nextDouble(); 方法: nextByte() nextShort() nextInt() nextLong() nextFloat() nextDouble() next() 读入一个字符串 Example:TestScanner.java, ComputeLoanAlternative
编程风格 良好的编程风格有利于减少错误,产生容易阅读、易于理解的代码。 注释 命名 类和方法前使用文档注释 方法步骤前使用行注释。 命名 变量和方法名使用小写,如果有多个单词,第一个单词首字母小写,其它单词首字母大写。 类名的每个单词的首字母大写。 常量使用大写,单词间以下划线分隔。 缩进、空格、块样式(在eclipse中使用ctrl+shift+f)
编程错误 语法错误(syntax error) 运行时错误(runtime error) 逻辑错误(logic error) 在编译期间产生的错误。 运行时错误(runtime error) 导致程序非正常终止的错误。 逻辑错误(logic error) 程序不能按预期的方式执行。 Example:ShowSyntaxErrors.java, ShowRuntimeErrors.java, ShowLogicErrors.java
调试 逻辑错误通常称为bug。查找并修正这些错误的过程称为调试(debug)。 在Eclipse中进行调试 阅读程序 使用打印语句输出中间结果 使用调试器 在Eclipse中进行调试 双击编辑窗口左侧灰色边界添加断点 在编辑窗口右键菜单中选择"调试方式"->"Java应用程序"