第二章 标识符、关键字和数据类型 a
内容 标识符与关键字 基本数据类型 类型转换运算 输入、输出数据 a
任务:圆周长与面积的计算 任务描述 编写程序 ComputeArea,从键盘上输入圆的半径,在控制台输出圆的周长和面积 要求:圆的周长只保留整数部分,舍掉小数部分 1.用r表示圆的半径 2.用area表示圆的面积 3.用perimeter表示圆的周长 4.确定r的取值 5.用3.14*r*r求出圆的面积,并用area记录该面积 6.输出圆的面积 7.用2*3.14*r求出圆的周长,并用perimeter记录该周长 8.输出圆的周长 9.用int_perimeter表示整数的周长 10.对周长取整数,并用int_perimeter记录周长的整数部分 11.输出圆周长的整数部分
2.1 标识符与关键字-标识符 用来标识类名、变量名、方法名、类型名、数组名、文件名的有效字符序列称为标识符。简单说,标识符就是一个名字,命名规则如下。 其余部分 首字母 变 量 名 任意多的: 1、数字 2、字母 3、下划线‘_’ 4、‘$’ 符号 1、字母 2、下划线‘_’ 3、‘$’ 符号 标识符不能是关键字 标识符不能是true、false和null
× × × × 2.1 标识符与关键字-标识符 检查下面这些是否是合法的变量名 principal $lastname zip code 123rate × discount% × cost_price × marks_3 city int
int double class extends 2.1 标识符与关键字-关键字 Java语言中被赋予特定意义的单词,共计约50个 if int for double class extends try a
2.2 基本数据类型 byte short 整数类型 字符类型 char Java 基本数据类型 int double 浮点类型 long float boolean 逻辑类型 a
变量的声明和赋值 使用变量的步骤: 第一步:声明一个变量 第二步:赋值 第三步:使用变量 数据类型 变量名 = 数值; 数据类型 变量名 = 数值; int money = 1000; 数据类型 变量名; 变量名 = 数值; int money; money = 1000 ; 使用变量的步骤: 第一步:声明一个变量 第二步:赋值 第三步:使用变量 根据类型开辟空间 将数据存入空间 取出数据使用
true false 2.2 基本数据类型-逻辑类型 例如:boolean sex=true; 逻辑常量 逻辑变量 逻辑常量只有两个值: 使用关键字boolean声明逻辑变量 声明时也可以赋给初值 true false 例如:boolean sex=true; a
2.2 基本数据类型-整数类型 整数 类型 int类型 short 类型 byte类型 long类型 常量:不存在short型常量表示法,但可以把一定范围内的int型常量赋值给short型变量。 变量:使用关键字short声明 例如: short x=12;//2个字节 常量:用后缀L来表示,例如108L 变量:使用关键字long声明 例如:long width=12L;//8个字节 常量:123(十进制),077(八进制),0x3ABC(十六进制) 变量:使用关键字int来声明int型变量,声明时也可以赋给初值, 例如: int x= 12;//4个字节 整数 类型 常量:不存在byte型常量表示法,但可以把一定范围内的int型常量赋值给 byte型变量 变量:使用关键字byte声明 例如:byte x= 12;//1个字节 整数常量,默认是int类型。如果要表示成byte类型的常量,则需要进行强制数据类型转换。 同理,如果要表示成short类型的常量,则也需要进行强制数据类型转换。 如果要表示成long类型的常量,则有两种方法: 方法一:100L 添加后缀L表示 方法二:(long)100 使用强制数据类型转换 a
2.2 基本数据类型-字符类型 常量:‘A’,‘?’,‘9’,‘好’,‘\t’,‘き’等,即用单引号扩起的Unicode表中的一个字符 变量:使用关键字char来声明char型变量,例如:char ch=‘A’;//内存分配2个字节,占16位 转义字符常量:有些字符不能通过键盘输入或有特殊含义,就需要使用转义字符常量, 如:\n(换行),\t(水平制表),\’(单引号)等 转义字符表示 \转义字符,如:\n(换行) \u****(*表示Unicode表位置的十六进制表示),如:\u0041(字符A) a
2.2 基本数据类型-字符类型 与int类型转换 要查看字符在Unicode表中的整数值,可以使用int型显示转换,如(int)‘a’; 如果要得到一个0~65535之间的数所代表的Unicode表中相应位置上的字符,必须使用char型显示转换,如(char)65。
2.2 基本数据类型-字符类型 例2_1中,分别用类型转换来显示一些字符在Unicode表中的位置,以及Unicode表中某些位置上的字符 public class Example2_1 { public static void main(String[] args) { char chinaWord='你',englishWord='m'; int p1= 36328,p2=38358; System.out.println("汉字\'你\'在Unicode表中的顺序位置为:"+(int)chinaWord); System.out.println("字母\'m\'在Unicode表中的顺序位置为:"+(int)englishWord); System.out.println("Unicode表中第36328个字符为:"+(char)p1); System.out.println("Unicode表中第38358个字符为:"+(char)p2); } a
2.2 基本数据类型-浮点类型 1. float型 常量:453.5439f(小数表示法),2e40f(2乘10的40次方,指数表示法)。需要特别注意:常量后面必须要有后缀“f”或“F”。 变量:使用关键字float来声明float型变量。例如:float x=22.76f, weight=1e-12F。 精度:float变量在存储float型数据时保留8位有效数字,实际精度取决于具体数值。对于float型变量,内存分配给4个字节,占32位。 2. double 型 常量:2389.539d(小数表示法),1e-90(1乘10的-90次方,指数表示法)。对于double常量,后面可以有后缀“d”或“D”,但允许省略该后缀。 变量:使用关键字double来声明double型变量。例如:double height=23.345,width=34.56D,length=1e12。 精度:对于double型变量,内存分配给8个字节,占64位,保留16位有效数字,实际精度取决于具体数值。 浮点类型常量,默认是double类型。 如果要表示成float类型的常量,则有两种方法: 方法一:100.5f 添加后缀f或F表示 方法二:(float)100.5 使用强制数据类型转换 a
课堂练习 输出Java课考试最高分:98.5 输出最高分学员姓名:张三 输出最高分学员性别:‘男’ public class Hello { public static void main(String[ ] args) { double score = 98.5; String name = "张三"; char sex = '男'; name=“李四”; sex=‘女’; System.out.println("本次考试成绩最高分: " + score); } 双引号 单引号 连接输出信息 演示示例:不同类型变量存取
常见错误 public class Hello { public static void main(String[ ] args) { String title; System.out.println( title ); } 先声明变量并赋值, 然后才能使用 代码错误 在环境中演示 String title = "Java"; //声明变量title并赋值 1 正确方案 2 String title; //声明变量title title = "Java" ; //赋值
常见错误 public class Hello { public static void main(String[ ] args) { int %hour = 18; System.out.println(%hour); } 代码错误 变量名不能以%开始
常见错误 public class Hello { public static void main(String[ ] args) { String name = "张三"; String name = "李四"; } 声明两个同名变量导致编译错误 正确方案 String name1 = "张三"; String name2 = "李四";
小结1 使用变量存储以下MP3信息,并打印输出 定义变量有哪两种方式? 品牌(brand):爱国者F928 重量(weight):12.4 电池类型(type):内置锂电池 价格(price):499 完成任务的第1、2、3步。
赋值运算符2-1 某班的A学员Java成绩是80分,B学员与A学员成绩相同,输出B学员成绩 aScore int aScore = 80; int bScore; aScore = bScore; System.out.println(bScore); aScore 80 赋值运算符 副本 bScore 80 代码错误 课本3.1.6 赋值运算符的结合方向是从右向左,即先把赋值运算符右侧的表达式计算完成后赋值给右侧的变量。 赋值运算符左侧必须是变量。 赋值运算符的优先级最低。 bScore = aScore ; //将右边的值给左边的变量
= 赋值运算符2-2 表达式举例 赋值运算符 变量名 表达式; Z = ( X * 2 ) + ( 5 – Y ) 表达式 表达式 表达式 变量名 表达式; = 表达式举例 Z = ( X * 2 ) + ( 5 – Y ) 表达式就是运算符(如加号、减号)与操作数(如b,3等)的组合。 完成任务的第4步。 表达式 表达式 表达式
+ * / % - 算术运算符3-1 基本的算术运算 某学员3门课成绩如右表所示,编程实现: 1、Java课和SQL课的分数之差 操作数 运算符 + - * / % 基本的算术运算 某学员3门课成绩如右表所示,编程实现: 1、Java课和SQL课的分数之差 2、3门课的平均分 课程 分数 STB 89 Java 90 SQL 60 课本3.1.1
算术运算符3-2 public class Computer { public static void main(String[ ] args) { int stb = 89; //STB分数 int java = 90; //Java分数 int sql = 60; //SQL分数 int diffen; //分数之差 double avg; //平均分 //省略输出成绩单代码…… diffen = java - sql; //计算java 课和sql课的成绩差 System.out.println("Java和SQL的成绩差:" + diffen); avg = (stb + java + sql) / 3; //计算平均分 System.out.println("3门课的平均分是: " + avg); } 声明变量 演示示例:算术运算符的使用
算术运算符3-3 下面代码片断的输出结果是什么? int num1 = 5; %:求余数 int num2 = 2; int a = num1 % num2; int b = num1 / num2; System.out.println(num1 + " % " + num2 + "= " + a); System.out.println(num1 + " / " + num2 + " = " + b); num1++; num2- -; System.out.println("num1 = " + num1); System.out.println("num2 = " + num2); %:求余数 输出 5 % 2= 1 5 / 2 = 2 /:求商 课本3.1.2 红色下面的内容,在学生完成代码的讲解之后。修改代码为: System.out.println("num1 = " + num1++); System.out.println("num2 = " + num2--); 在学生完成代码的讲解之后再次修改代码为: System.out.println("num1 = " + ++num1); System.out.println("num2 = " + --num2); 等价于:num1 = num1 + 1; 输出 num1 = 6 num2 = 1 等价于:num2 = num2 - 1;
小结2 根据天数(46)计算周数和剩余的天数 完成任务的第5、6、7、8步。
2.3 数据类型转换 某班第一次Java考试平均分81.29,第二次比第一次多2分,计算第二次考试平均分? double firstAvg = 81.29; //第一次平均分 double secondAvg; //第二次平均分 int rise = 2; secondAvg = firstAvg + rise; System.out.println("第二次平均分是:" + secondAvg);
类型提升规则 在某种条件下,系统自动完成类型转换 两种类型兼容 目标类型大于源类型 对于表达式 例如:int 和 double 兼容 目标类型大于源类型 例如:double 型 大于 int 型 对于表达式 如果一个操作数为double型,则整个表达式可提升为double型
double money=3000; 12L + 5.0/2 + 10 + ‘a’ 基本数据类型之间的转换 精度由低到高的排序 另外,同学需注意P34页的“算术混合运算的精度”问题 精度由低到高的排序 double money=3000; 12L + 5.0/2 + 10 + ‘a’
常见错误 下面语句正确吗? int 不可以自动转换成char int age = 19; char sex = ‘女’; char result = age + sex; int a = 10; int b = 10.2; double c = 10; c = a; int d = c; double不可以自动转化成int
2.3 数据类型转换 如何把高精度的值转换为低精度?
int age=(int)34.8; long y=(long)56.98F; 2.3 数据类型转换 byte short int long float double 精度由低到高的排序 由高到低进行转换时,需要强制类型转换 int age=(int)34.8; long y=(long)56.98F; 课本2.3 如果表达式中最高精度低于int型整数,则按int精度进行计算。结果是int型。(具体描述参加3.1.3的(4)的描述) a
去年Apple笔记本所占的市场份额是20,今年增长的市场份额是9.8,求今年所占的份额? 强制类型转换 强制类型转换 int b = (int)10.2; double a = 10; int c = (int)a; (类型名)表达式 去年Apple笔记本所占的市场份额是20,今年增长的市场份额是9.8,求今年所占的份额? int before = 20; //apple笔记本市场份额 double rise = 9.8; //增长的份额 int now = before + rise; //现在的份额 编译出错:不能完成 自动类型转换 演示出错信息及改后的结果,讲解当强制转换时,精度有损失 强制类型转换 更改为 int now = before + (int)rise; 演示示例:强制类型转换
2.3 数据类型转换 例题2:数据类型转换 class Example2_2 { public static void main(String[] args) { int c=2200; long d=8000; float f; double g = 12345789.12345789; c=(int)d; f=(float)g;//导致精度丢失 System.out.println("c="+c); System.out.println("d="+d); System.out.println("f="+f); System.out.println("g="+g); } a
实现一个数字加密器,确定加密前的整数,通过加密运算后,输出加密后的结果,加密结果仍为一整数。 小结3 实现一个数字加密器,确定加密前的整数,通过加密运算后,输出加密后的结果,加密结果仍为一整数。 加密规则是: 加密结果 = (整数*10+5)/2 + 3.14159 完成任务的第9、10、11步。
2.4 从命令行输入数据 可以使用Scanner类创建一个对象: Scanner reader=new Scanner(System.in); reader对象调用下列方法,读取用户在命令行输入的各种基本类型数据: nextBoolean() nextByte() nextShort() nextInt() nextLong() nextFloat() nextDouble() 上述方法执行时都会堵塞,程序等待用户在命令行输入数据回车确认 a
2.4 从命令行输入数据 例3:用户在键盘依次输入若干个数字,每输入一个数字都需要按回车键确认,在键盘输入数0结束整个的输入操作过程,程序将计算出这些数的和 修改任务的第4步,让圆半径是在程序运行时才由用户输入确认的 a
2.4 从命令行输出数据 System.out.println(),System.out.print() 可以使用“+”将变量、表达式、常数值连成字符串一起输出,如:System.out.println(m+"个数的和为"+sum); JDK1.5新增了和C语言中printf函数类似的输出数据的方法,格式:System.out.printf("格式控制部分",表达式1,表达式2,…表达式n) %d输出int类型数据值;%c输出char型数据;%f输出浮点型数据,小数部分最多保留6位;%s输出字符串数据。 输出数据时也可以控制数据在命令行的位置,例如:%md输出的int型数据占m列;%m.nf输出的浮点型数据占m列,小数点保留n位。例如:System.out.printf("%d,%f",12, 23.78); a
小结4 编写程序输出个人的基本信息 学校 专业 姓名 年龄 要求: 个人基本信息在运行时输入 数组放后面单独一部分
小结4 使用转义字符完成成绩单的输出,要求每一列左对齐。如下: 姓名 Java C# SQL HTML Dean 80 75 30 100 Sam 85 75 60 97 Cas 60 32 70 90 完成任务的第5、6、7、8步。
总结 标识符与关键字 基本数据类型 八种基本数据类型 变量的定义 类型转换运算 自动数据类型转换 强制数据类型转换 输入、输出数据 Scanner对象的使用以及对应的方法 System.out的println、print、printf方法 a
练习 public class error { public void Main(String args) { system.out.println("开始找错吧! }
谢谢听讲! 山东商业职业技术学院 2014年 济南 a