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