Download presentation
Presentation is loading. Please wait.
1
于波
2
教学目标 JAVA开发环境配置与开发工具安装 Java基本数据类型基础运算符 程序控制语句(if..else) 程序控制语句(switch)
程序控制语句(while) 程序控制语句(for) 数组 综合训练
3
Java历史 Sun Microsystems于1991年开始研发一种交互式电视点播项目,由此项目产生了Java语言,1995年5月23日正式发布。 Java是一种面向对象、独立于平台、安全的编程语言。
4
Java历史 1995年5月23日,Java语言诞生 1996年1月,第一个JDK-JDK1.0诞生
1997年4月2日,JavaOne会议召开,参与者逾一万人,创当时全球同类会议规模之纪录 1997年9月,JavaDeveloperConnection社区成员超过十万 1998年2月,JDK1.1被下载超过2,000,000次 1998年12月8日,JAVA2企业平台J2EE发布 1999年6月,SUN公司发布Java的三个版本:标准版、企业版和微型版(J2SE、J2EE、J2ME) 2000年5月8日,JDK1.3发布 2000年5月29日,JDK1.4发布 2001年6月5日,NOKIA宣布,到2003年将出售1亿部支持Java的手机 2001年9月24日,J2EE1.3发布 2002年2月26日,J2SE1.4发布,自此Java的计算能力有了大幅提升 2004年9月30日18:00PM,J2SE1.5发布,是Java语言的发展史上的又一里程碑事件。为了表示这个版本的重要性,J2SE1.5更名为J2SE5.0 2007年1月,J2SE1.6发布 更名为Java SE 6.0
5
Java虚拟机 JVM(Java Virtual Machine):Java虚拟机
在真实的机器中用软件模拟实现的一种虚拟机器(类似于模拟器) JVM能够读取Java编译后的(字节码)程序并且解释成当前平台的机器语言得以执行 Java虚拟机实现了:CPU、寄存器、垃圾回收堆、错误报告机制和高精度计时等等
6
Java虚拟机 Java程序通过虚拟机实现跨平台
7
Java版本 Java SE:Java Platform Standard Edition
Java EE:Java Platform Enterprise Edition Java ME:Java Platform Micro Edition
8
Java特点 面向对象 跨平台、一次编写到处运行 半编译半解释 分布式 Everything is object
通过JVM 实现Write once run everywhere 半编译半解释 通过编译器将源程序编译成字节码(bytecode)程序,然后JVM解释执行字节码 分布式 可以开发基于网络的分布式程序
9
Java特点 安全 没有指针 健壮 自动垃圾回收机制来管理内存 异常处理机制
10
Java开发环境 JDK(Java Development Kit): Java开发工具包 bin目录:存放可执行文件;
lib目录:存放Java的类库文件; demo目录:存放演示程序; jre目录:存放Java运行环境文件;
11
Java开发环境 配置环境变量 path配置系统公共路径 classpath配置类路径
12
JDK编译和运行工具 javac.exe Java编译器,用于将java源程序编译成为字节码(Byte Code) 格式: 例:
Javac Test.java
13
JDK编译和运行工具 java.exe:字节码解释器。用于启动JVM,解释执行 Java 字节码程序 格式: java 类名称 [参数]
例: java Test (注意不需要输入扩展名)
14
JDK编译和运行工具 Javadoc.exe 将你的程序输出注释文档。 格式: javadoc 源程序名 例子:
javadoc Test.java
15
开发Java程序步骤 创建Java源程序 Java源程序一般用java作为扩展名,是一个文本文件,用Java语言写成,可以用任何文本编辑器创建与编辑。 编译源程序 Java编译器,“javac.exe”,读取你的Java源程序并翻译 成Java虚拟机能够明白的指令集合,且以字节码的形式保存在文件中。字节码文件以class为扩展名。 运行class(字节码)文件 Java解释器读取字节码,取出指令并且翻译成当前平台(操作系统)能执行的机器代码,完成运行过程。
16
编译运行流程
17
JVM任务 加载代码——类加载器 校验代码——字节码校验器 执行代码——解释器
18
字节码校验器 1. 类符合JVM规范的格式 字节码校验器对代码进行四次校验,它可以保证: 2. 没有访问权限的违例
3. 代码没有引起上溢与下溢 4. 所有代码的参数类型正确 5. 无非法数据类型转换
19
第一个Java程序 public class Test { public static void main(String[ ] args)
System.out.println("欢迎来到 Java 世界!"); } //注意Java是大小写敏感的编成语言
20
第一个Java程序注解 /** 定义了一个公共的类名字叫Test public关键字代表类是公共的,允许其它类访问的
class关键字用于定义类 Test是类名 */ public class Test { 这个是主方法是程序运行的入口方法 public static void main(String[ ] args) System.out.println(“欢迎来到 Java 世界!”);//在屏幕上输出括号内的信息 }
21
复习与训练 练习Java开发环境搭建 编写一个简单的Java程序在控制台输出Hello World.
22
IDE集成开发环境 IDE (Integrated Development Environment) 集成开发环境 是能够提高软件开发效率的软件开发工具,它集成编辑、编译、调试、运行、打包等功能,java常用的IDE有Eclipse、JBuilder、Net Bean、JCreator等
23
变量 数据类型: 表示符号: 变量:存储数据的基本单元 如何创建一个变量 数据类型 标识符 [=值];
24
数据类型 原始数据类型(8种) 引用数据类型 类 接口 数组 整 型 byte short int long
浮点型 float double 字符型 char 布尔型 boolean 引用数据类型 类 接口 数组
25
整型 1.整型变量的值可以是8进制、10进制和16进制 int a=10; int b=012; int c=0xff;
2.变量的值要符合相应的赋值范围 类型 大小 取值范围 byte 8bit -27~27-1 short 16bit -215~215-1 int 32bit -231~231-1 long 64bit -263~263-1
26
整型 字面量类型 整型字面量默认类型为int 如: 32 15 222 都是int类型 如需表示long类型字面量需 在后面加L或l
27
浮点型 普通形式 科学计数法 浮点型字面量默认类型为double如:33.33 12.35D
科学计数法 1E7 5E E E7 浮点型字面量默认类型为double如: D 如需表示float类型字面量需在字面量后面加F或f 如:33.5f f 类型 大小 取值范围 float(单精度) 32bit 表示约7~8位有效数字 (之后变为科学技术法表示) double(双精度) 64bit 表示约15~16位有效数字
28
字符型 char类型用于存储单个字符,如字母、数字或者其他符号 使用单引号括起来 char类型16bit,采用Unicode字符集编码
转译字符: 字符 含义 \n 换行 \r 回车 \t 制表符 \\ 反斜杠 \” 双引号 \uxxxx Unicode字符集中对应的字符
29
布尔型boolean 代表真true或假false 取值范围只有true或false; boolean不可以与其他数据类型转换
30
标识符 标识符作用 标识符的规则 开头字符:只能是英文字母、下划线 _ 、或美元符号 $。 后续字母:可以是以上三种再加上数字
不能是关键字或保留字
31
关键字 关键字:是SUN公司提前定义好的,拥有特定功能的保留字,不允许成为类名、变量名或方法名。
32
Sun命名规范 类命名: 变量、方法命名 首字母大写,单词与单词之间首字母大写。 例:Student SellPerson
首字母小写,单词与单词之间首字母大写。 例:identityCard firstName getName
33
数据类型转换 自动类型转换 两种类型兼容; 目标类型大于源类型; 强制类型转换 两种类型不兼容 目标类型小于源类型
34
常量 常量:对于在程序运行过程中一直不变的值,可以使用一种特殊的变量——常量。 声明常量 注意: final 类型 常量名=初始值;
final float PI= f; 注意: 常量名要求全部大写,单词与单词下划线以分割。 如 final MAX_VALUE=255;
35
String 字符串类型 String类,是sun公司提供的基础类库中的一个普通的Java类,来自java.lang包,String类型变量可以用于存储字符串 如 String name=“tom”; String schoolName=“沈阳职业技术学院软件学院”;
36
基本数据类型与字符串转换 字符串转换成基本数据类型 基本数据类型与字符串拼接就会变成字符串 如: int a=5;
String b=“10”+a; 字符串转换成基本数据类型 String a=“25”; int b=Integer.parseInt(a);
37
局部变量 什么是局部变量 局部变量特点 局部变量声明周期与作用域 使用前必须付初值 声明在类中,方法之内的变量就叫做局部变量。
当程序执行到声明变量的代码时,局部变量产生了,当程序执行过局部变量所在作用域后局部变量消亡,作用域指的是局部变量所在的语句块(花括号)。 局部变量特点 使用前必须付初值
38
复习与训练 练习在IDE(Eclipse)上创建项目,创建、编辑、运行类
39
表达式 表达式:是包括运算符和操作数的程序语句。 运算符:是一个符号,用于操作计算一个或多个操作数以得出结果。
操作数:参数运算的变量或字面量。 运算符分类 算数运算符 * / % 比较(关系)运算符 > >= < <= != == 逻辑运算符 & | ! ^ && || 赋值运算符 = += -= *= \= 位运算符 ~ & | ^ << >> >>> 三元运算符 ?:
40
算数运算符 符号 名称 作用 + 加法运算符 进行加法运算 如 int a=3+2; - 减法运算符 进行减法运算 如 int b=5-3;
* 乘法运算符 进行乘法运算 如 int c=5*3; / 除法运算符 进行除法运算 如 int d=10/3; % 取余运算符 进行取余运算 如 int e=5%3; ++ 递增运算符 将某个数+1如a++或++a,++写在左边是先自加在赋值,写在右边是先赋值在自加 -- 递减运算符 将某个数-1如a--或--a,--写在左边是先自减在赋值,写在右边是先赋值在自减
41
表达式数据类型 表达式结果数据类型取决于表达式中数据类型级别最高的数据类型。
只有byte 和short例外,它们运算后结果会自动提升为int类型。
42
比较运算符 符号 名称 作用 > 大于 比较大小,返回布尔值boolean >= 大于等于 < 小于 <= 小于等于
!= 不等于 比较是否不等,返回布尔值boolean == 等于 比较是否相等,返回布尔值boolean
43
逻辑运算符 符号 名称 作用 & 逻辑与 与符号两边的条件都为真,结果为真 | 逻辑或 或符号两边的条件至少有一边为真,结果为真 ! 逻辑非
将结果取反 ^ 逻辑异或 异或符号两边的值不等结果为真 && 短路与 短路与符号左边条件为假后不在计算右边 || 短路或 短路或符号左边条件为真后不在计算右边
44
赋值运算符 符号 名称 作用 = 等于 x=y 把变量y的值赋给x += 加等于 x+=y 同等于 x=x+y -= 减等于
*= 乘等于 x*=y 同等于x=x*y; \= 除等于 x/=y 同等于x=x/y;
45
按位运算符 符号 名称 作用 ~ 按位取反 将一个整数以二进制形式进行按位取反 & 按位与 将两个数以二进制形式进行按位进行与运算 |
按位或 将两个数以二进制形式进行按位进行或运算 ^ 按位异或 将两个数以二进制形式进行按位进行异或运算 << 左移 将一个数以二进制形式进行左移 >> 右移 将一个数以二进制形式进行右移 >>> 无符号右移
46
三元运算符 ?: 条件式?值1:值2 如果条件式成立,则表达式值为值1,否则为值2 例:
String result=age>=18?”成年人”:”未成人”;
47
运算符的优先级 表达式通常由多个运算符组成。优先级的规则决定每个运算符在任何给定表达式中的计算顺序。 顺序 运算符 1. 括号( ) 2.
++、- -和 ! 3. 算术运算符,如 *、/、%、+ 和 - 4. 比较运算符,如 >、>=、<、<=、== 和 != 5. 逻辑运算符,如 &、^、|、&&、|| 6. 条件运算符和赋值运算符,如 ? :、=、*=、/=、+= 和 -=
48
条件语句if 单if条件分支语句格式 if(条件表达式) { 动作…. } 练习 //该条件表达式结果必须是boolean型的
例: int x=10; int y=5; if(x>y) System.out.println(x); 练习 4.1判断一个数是不是奇数 4.2判断一个学生成绩是不是及格
49
条件语句if 二选一条件分支语句格式 if(条件表达式) 练习 4.3判断一个数是奇数还是偶数 4.4判断一个学生成绩是及格还是不及格 {
动作1 } else 动作2 练习 4.3判断一个数是奇数还是偶数 4.4判断一个学生成绩是及格还是不及格
50
条件语句if 多选一条件分支语句格式 if(条件表达式1) { 动作1 } else if(条件表达式2) 动作2 …… else 动作3
练习 4.5编写一个程序,输入一个学生成绩,判断是优秀、良好、及格还是不及格 4.6编写一个猜数字游戏,随机产生一个整数,让用户来猜,用户输入的数如果大于这个整数,则输出提示大了,如果用户输入的数与该整数一致,则输出猜对了,如果用户输入的数小于该整数则提示小了。
51
嵌套if语句 嵌套if分支语句格式 if(条件表达式) { 动作 }
52
多分支语句switch 练习 4.7输入一个学生成绩,用switch语句判断是优秀、良好、及格还是不及格 switch多分支语句格式:
4.9假定某年的1月1日是星期一,这一年中的第x天是星期几?保证x的范围是1~365,否则输出错误信息,要求使用switch语句 例子: int x=10;int y=5;int z; char operator='*'; switch(operator) { case '+': z=x+y; break; case '-': z=x-y; case '*': z=x*y; default: z=x/y; } System.out.println(z); switch多分支语句格式: switch(表达式) { case value1: 动作1 break; case value2: 动作2 …... default: 动作3 } //表达式的结果只能为byte、 short、int、char其中一种
53
循环语句while while循环语句语法 练习 4.10编写一个程序计算1+2+3+…+98+99+100的和
{ 循环体语句 } //条件表达式结果必须是boolean值 例: int x=0;//初始化变量 while(x<5)//循环条件 System.out.println(x);//循环内容 x++;//变量自加 练习 4.10编写一个程序计算1+2+3+… 的和 4.11编写一个程序计算 …+97+99的和
54
循环中断语句 break continue 结束整个循环。 结束本次循环,继续下一次循环判断 练习
4.12编写一个猜数字游戏,随机产生一个整数,让用户来猜,用户输入的数如果大于这个整数,则输出提示大了,如果用户输入的数小于该整数则提示小了,如果用户输入的数与该整数一致,则输出猜对了,猜对了后退出游戏,猜错了就重新猜
55
循环语句do while do while 首先都执行一次, 才判断循环条件是否成立。 int x=0;//初始化变量 do {
System.out.println(x); x++; }while(x<5);//循环条件
56
循环语句for for语法 练习 4.13编写一个程序计算1+2+3+…+98+99+100的和
4.14编写一个程序计算 …+97+99的和 4.15编写一个程序,判断任意一个整数是不是质数 4.16编写一个程序,求任意两个数的最大公约数 4.17编写一个程序,求任意两个数的最小公倍数 4.18敲七 for语法 for(初始表达式;循环条件表达式;递增表达式) { 循环体语句 } 例 for(int i=0;i<5;i++) System.out.println(i);
57
嵌套循环 循环嵌套 练习 4.19用循环在屏幕上画下面这样一个图形 * ** for(int i=0;i<2;i++) *** {
4.20用循环在屏幕上输出一个99乘法表 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 … … 循环嵌套 for(int i=0;i<2;i++) { for(int j=0;j<3;j++) System.out.println("hello"); }
58
嵌套循环中断语句 break 标签:结束标签指定循环 continue 标签: 结束一次指定标签循环,进行下一次循环判断 练习
4.21编写一个程序,列出1~100中的所有质数。
59
数组 什么是数组? 如何声明和创建一个数组? 动态创建方式 静态创建方式 数组的内存模型
60
概念 数组的基本概念 数组内元素的赋值 取出数组内元素的值 数组的元素-element 数组的长度-length 数组的类型-type
数组的下标-index 数组内元素的赋值 取出数组内元素的值
61
使用数组 如何遍历数组? 使用数组常见的错误 NullPointerException
ArrayIndexOutOfBoundException
62
练习 5.1给定一维数组,计算出数组中的平均值、最大值、最小值。 int[] x={32,2,5,1,9,4}; 5.2对上面数组进行排序
5.3查找数组中是否含有某个元素,含有返回下标,不含有返回-1,比如查找5,返回下标2
63
数组复制 数组的克隆 数组元素的复制 数组工具类
64
多维数组 创建多维数组 动态创建 静态创建 锯齿数组 数组行的长度不同,我们称之为锯齿数组。 多维数组遍历
65
练习 使用二维数组在屏幕上打印出杨辉三角形。 1 1 1 1 2 1
66
命令行参数 在主方法中接受命令行参数 public static void main(String[] args) { }
Similar presentations