1、第02讲 Java基本语法,王伟,本讲教学目标,掌握Java的数据类型、变量常量 掌握运算符及优先级 掌握各种控制语句,知识回顾/本讲先行知识,什么是JDK、JRE 什么是JAVASE、JAVAEE、JAVAME? 如何输出helloworld,本讲内容,Java的变量、常量 Java的运算符 Java的语句,电脑使用内存来记忆计算时所使用的数据 内存如何存储数据?内存像旅馆 数据各式各样,要先根据数据的需求(即类型)为它申请一块合适的空间,1、开房间(单人间、双人间、总统套间) 2、入住,回顾内存如何存放数据,1000*(1+5%),1000,1050,变量:一个数据 存储空间的表示,对于专
2、业程序员,数据存入内存不算完: 怎么找到存入的数据?存进去还能改吗?,98.76,不同数据存入具有不同 内存地址的空间,相互独立,变量,在银行存1000元钱,银行一年的利息5%,那一年之后钱变成了多少?,内存地址不好记,怎么办? 通过内存中小房间的别名找到数据存储的位置变量是存储数据的一个基本单元,房间,房间名字,房间类型,入住的客人,变量,变量名,变量类型,变量值,为什么需要变量,对应,1、字母 2、下划线_ 3、$ 符号,首字母,任意多的: 1、数字 2、字母 3、下划线_ 4、$ 符号,其余部分,变 量 名,Java语言中,变量命名要符合一定规则 money,score,name,sex
3、,变量命名规范: 简短且能清楚地表明变量的作用,通常第一个单词的首字母小写,其后单词的 首字母大写。例如:myScore,变量命名规则2-1,变量命名规则2-2,检查下面这些是否是合法的变量名,principal,cost_price,marks_3,$lastname,city,123rate,discount%,zip code,City,int,变量应用,1、在内存中存储本金1000元 2、显示内存中存储的数据的值,public class HelloWorld public static void main(String args) int money = 1000; /存数据,数据类
4、型,变量名,内存空间存的数值,System.out.println(money); /使用数据,变量的声明和赋值,使用变量的步骤: 第一步:声明一个变量第二步:赋值第三步:使用变量,数据类型 变量名 = 数值;,根据类型开辟空间,将数据存入空间,取出数据使用,数据类型 变量名; 变量名 = 数值;,int money = 1000;,int money; money = 1000 ;,12,常量,常量是一种标识符,它的值在运行期间恒定不变 常量标识符在程序中只能被引用,而不能被重新赋值,13,常量的优点,如果不使用常量,直接在程序中填写数字或字符串,将会有什么麻烦?,public static
5、 double toRadians(double ang) return ang / 180.0 * 3.14159265358979323846; public static double toDegrees(double ang) return ang * 180.0 / 3.14159265358979323846; ,public static final double PI = 3.14159265358979323846; / 圆周率 public static double toRadians(double ang) return ang / 180.0 * PI; public
6、 static double toDegrees(double ang) return ang * 180.0 / PI; ,程序的可读性变差:用户很难理解数字或字符串的意思,程序的可维护性变差:如果数值改变,则需要在很多地方改动,既麻烦又易出错,使用常量可以增强程序的可读性、可维护性,14,Java中常量的定义规则,加入final 关键字代表常量, 加入static 关键字代表类变量 尽量使用含义直观的常量来表示那些将在程序中多次出现的数字或字符串,public class Student public static final int FEMALE = 1; /代表女性 public st
7、atic final int MALE = 2; /代表男性 private int sex; /性别 public void setSex(int sex) if(sex=FEMALE)System.out.println(“这是一名女学生“); else if(sex = MALE)System.out.println(“这是一名男学生“); this.sex = sex; ,数据类型,Java基本数据类型,整型字面值,在Java中有3种方法表示整数 十进制(09):不需要任何解释 int i = 99; 八进制(07):在数的前面放置一个0(零) int six = 06; /值为6 i
8、nt nine = 011; /值为9 十六进制(09,af):在数前放置0x或者0X int x = 0x0001; int y = 0Xb; int z = 0x7FFff; 在数字后面加上L或l,类型定义为long long jo = 1109L; long so = 0xFFFL;,浮点字面值,浮点字面值默认为double double d = 333242.00; double e = 987.44d; double f = 423.22D; float类型需要在字面值后面加F或f float jo = 1109.32F; float so = 4423.00f;,布尔字面值,布尔值
9、只能定义为true或false 一定注意使用布尔值的表达式 int x = 1; if(x) /编译错误 int y = 1; if(x+y) boolean b = false; if(b=true) if(b=true) ,字符字面值,char字面值表记为单引号内的单个字符,字符实际上只是一个16位无符号整数,不能直接输入的字符可以用转义字符 char a = a; char b = 98; System.out.println(b); char n = u004E; System.out.println(n); char d = ”; 尽管字符串不是基本类型,但它能表现为字面值 Stri
10、ng s = “Hello”; String hi = “Hello”+”World”; 字符串可以和其他基本数据类型连接,返回字符串类型,基本数据类型转换,Boolean类型不可转换为其它的数据类型 整型、字符型、浮点型在混合运算中相互转换,转换时遵循以下原则 容量小的类型字段转化为容量大的类型,数据类型按容量大小排序(小 - 大) byte short (char) intlongfloat double 容量大的数据类型转换为容量小的数据类型,要加上强制转换符,但可能造成精度降低或溢出,使用时要注意 多种类型的数据混合运算时,系统首先自动的将所有数据转化为容量最大的那种数据类型,然后再进
11、行计算,涉及byte、short和char类型的运算,Java中涉及byte、short和char类型的运算操作首先会把这些值转换为int类型,然后对int类型值进行运算,最后得到int类型的结果。因此,如果把两个byte类型值相加,最后会得到一个int类型的结果,class Test public static void main(String args)byte b1=10,b2=20;byte b3=b1+1;/此处即报错,应改为byte b3=(byte)(b1+1);b3=b1+b2;/此处即报错,应改为byte b3=(byte)(b1+b2); ,运算符,算术运算符 关系运算符
12、逻辑运算符 赋值运算符,某班的A学员Java成绩是80分,B学员与A学员成绩相同,输出B学员成绩,int aScore = 80; int bScore; aScore = bScore; System.out.println(bScore);,bScore = aScore ; /将右边的值给左边的变量,赋值运算符,aScore,bScore,80,80,副本,赋值运算符2-1,代码错误,变量名 表达式;,赋值运算符2-2,=,Z = ( X * 2 ) + ( 5 Y ),表达式,表达式,表达式,赋值运算符,表达式举例,算术运算符,基本的算术运算,关系运算符,常用的关系运算符有哪些: ,=
13、,=,大象的寿命 乌龟的寿命 真篮球的大小 = 地球的大小 假,由此看出,关系运算符的作用:用来做比较运算 比较后结果:boolean类型,逻辑运算符,程序流程,顺序执行 System.out.print(“hello“); System.out.print(“world“); 无条件分支 return,break,continue,throw,. 条件分支 if.else,switch.case,. 循环 while,do.while,for.each,if条件结构,if条件结构是根据条件判断之后再做处理,if ( 条件 ) /语句 ,if ( 明天下雨 ) 我就带伞去上课; ,基本的if条
14、件结构,如何使用if条件结构,if-else条件结构,if ( 条件 ) /语句1 else /语句2 ,if ( 明天下雨) 我不上课; else 我去上课; ,结合问题4,多重if结构就是在else部分中还包含其他if块,多重if结构,if ( 条件 ) /语句 else if ( 条件 ) /语句 else /语句 ,可以有多个,可以省略,多重if结构,如何使用多重if结构,使用多重if结构解决问题,int score = 70; /考试成绩if ( score = 90 ) System.out.println(“优秀“); else if (score = 80 ) System.o
15、ut.println(“良好“); else if (score = 60 ) System.out.println(“中等“); else System.out.println(“差“);,大于等于90分,大于等于60分,小于80分,小于60分,大于等于80分,小于90分,switch (表达式) case 常量 1:语句;break;case 常量 2:语句;break;default:语句; ,switch结构,switch结构,计算表达式的值,如果等于常量1,如果等于常量2,如果没有找到匹配的值,常见错误,String day = “星期一“; switch (day)case “星期
16、一“:System.out.println(“星期一:青菜 “);break;case “星期二“:System.out.println(“星期二:鱼 “);break;default: ,switch后面小括号中表达式的值必须是整型或字符型,代码错误,比较switch和多重if结构,相同点不同点 switch多重if,都可以实现多分支结构,只能处理等值的条件判断,且条件是整型变量或字符变量的等值判断,处理在else部分还包含其它if结构,特别适合某个变量处于某个区间时的情况,while循环,特点:先判断,再执行,while ( 循环条件 ) 循环操作,符合条件,循环继续执行;否则,循环退出,
17、循环中被重复执行的操作,int i = 1; while ( i = 30 ) System.out.println(“hello“);i +; ,编码规范:缩进、换行,怎样使用while循环,录入班级人数和学员成绩,计算班级学员的平均成绩,循环条件:目前录入的成绩数目小于总人数 循环操作:录入学生成绩,并累加求和,while(i=stuNum)System.out.print(“请输入学号“ + i + “的成绩:“);score = input.nextInt();sum = sum + score;i+; avg = sum / stuNum ;,do-while循环,do 循环操作 w
18、hile ( 循环条件 );,先执行一遍循环操作,符合条件,循环继续执行;否则,循环退出,特点:先执行,再判断,while循环和do-while循环的区别 语法不同初始情况不满足循环条件时 while循环一次都不会执行 do-while循环不管任何情况都至少执行一次,do 循环操作 while( 循环条件 );,while ( 循环条件 ) 循环操作,先判断,再执行,先执行,再判断,比较while和do-while,for循环的语法和执行顺序,什么是for循环,for( ; ; ); ,条件为true,循环体被执行,for ( int i = 0 ; i 100 ; i+ ) System.o
19、ut.println(“hello“); ,代码规范:格式对齐、代码的缩进,表达式1,表达式2,表达式3,循环操作,参数初始化,条件判断,更新循环变量,1,2,4,3,为什么需要break语句,int i = 2; switch(i)case 1: System.out.println(“星期一“);break;case 2: System.out.println(“星期二“);break;/其他语句,遇到break,立即跳出switch语句,回顾break用于switch语句,描述4000米长跑比赛,for (int i = 0; i10; i+) 跑400米;,if(不能坚持)break;
20、 /退出比赛,第8圈, 快累死了 我要退出,break语句,break:改变程序控制流 用于do-while、while、for中时,可跳出循环而执行循环后面的语句,while() break; ,跳出整个循环,break通常在循环中与条件语句一起使用,为什么需要continue语句,循环录入Java课的学生成绩,统计分数大于等于 80分的学生比例,1、通过循环,获得分数大于等于80分的学生人数num2、判断:如果成绩80,不执行num+,直接进入下一次循环,continue语句,continue :只能用在循环里 continue 作用:跳过循环体中剩余的语句而执行下一次循环,while()
21、 continue; ,继续下一次循环,通常与条件语句一起使用,加速循环,for(int i = 0; i10;i+)跑400米;if(!口渴)continue; /不喝水,继续跑接过水壶,喝水; ,示例,循环总结,int i=0; int sum=0; while( i10 )sum=sum+i;i+; ,int i=0; int sum=0; dosum=sum+i;i+;while(i10);,int sum=0;for(int i=0;i10;i+)sum=sum+i;,1,2,3,4,1,2,3,4,1,2,3,4,while和for相同,先进行判断,后执行循环体内容 do-while是先执行,后判断,至少执行一次,指出各种循环结构的执行顺序,控制流语句小结,顺序结构:语句顺序执行 分支结构:语句在满足条件下执行 if, if-else, if-else if-else, switch循环结构:语句在满足条件下循环执行多次 while, do-while, for跳转语句 break, continue,程序调试,调试 程序员70%时间在做的事情 调试史话调试的主要方法,bug 缺陷,找出并解决bug的过程,debug 调试,小结,变量、常量、数据类型 运算符有哪些 语句结构有哪几种,实验,本讲结束,谢谢大家,