第1章 Java概述
1.1 Java语言发展史和平台概述
A:Java语言发展史
詹姆斯·高斯林(James Gosling)1977年获得了加拿大卡尔加里大学计算机科学学士学位,1983年获得了美国卡内基梅隆大学计算机科学博士学位,毕业后到IBM工作,设计IBM第一代工作站NeWS系统,但不受重视。后来转至Sun公司,1990年,与Patrick,Naughton和Mike Sheridan等人合作“绿色计划”,后来发展一套语言叫做“Oak”,后改名为Java。
SUN(Stanford University Network,斯坦福大学网络公司)
B:Java语言版本
* JDK 1.1.4Sparkler宝石1997-09-12
* JAVASE 7.0 (1.7.0)Dolphin海豚
1.2 JVM,JRE,JDK的概述
1.2.1 什么是跨平台?
平台:指的是操作系统(Windows,Linux,Mac)
跨平台:Java程序可以在任意操作系统上运行,一次编写到处运行
原理:实现跨平台需要依赖Java的虚拟机 JVM (Java Virtual Machine)
1.2.2 JVM JRE JDK说明
A:什么是JVM
JVM是java虚拟机(JVM Java Virtual Machine),java程序需要运行在虚拟机上,不同平台有自己的虚拟机,因此java语言可以跨平台
B:什么是JRE
包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。
JRE:JVM+类库。
C:什么是JDK
JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了JRE。所以安装了JDK,就不用在单独安装JRE了。
其中的开发工具:编译工具(javac.exe) 打包工具(jar.exe)等
JDK:JRE+JAVA的开发工具。
D:为什么JDK中包含一个JRE
开发完的程序,需要运行一下看看效果。
E:JDK,JRE,JVM的作用和关系
JDK包含JRE 和开发工具包
JRE 包含 核心类库和JVM
1.3 常用dos命令
1.3.1 打开控制台
– win + R,然后cmd回车
1.3.2 常用命令
– d: 回车 盘符切换
– dir(directory):列出当前目录下的文件以及文件夹
– cd (change directory)改变指定目录(进入指定目录)
• 进入 cd 目录;cd 多级目录
• 回退 cd.. ;cd\
– cls : (clear screen)清屏
– exit : 退出dos命令行
1.4 下载安装JDK
请参考《JDK下载安装文档.doc》安装步骤
1.5 helloworld案例
1.5.1 执行流程
1.5.2 编写代码步骤
首先定义一个类
public class 类名
在类定义后加上一对大括号
{}
在大括号中间添加一个主(main)方法/函数
public static void main(String [] args){ }
在主方法的大括号中间添加一行输出语句
System.out.println(“HelloWorld”);
1.5.3 案例代码一
public class HelloWorld {
public static void main(String[] args) {
System.out.println("HelloWorld");
}
}
运行代码步骤:
• 在命令行模式中,输入javac命令对源代码进行编译,生成字节码文件
– javac 源文件名.java
• 编译完成后,如果没有报错信息,输入java命令对class字节码文件进行解释运行,执行时不需要添加.class扩展名
– java HelloWorld
1.5.4 HelloWorld案例常见问题
A:找不到文件
a:文件扩展名隐藏导致编译失败
b:文件名写错了
B:单词拼写问题
a:class写成Class
b:String写成string
c:System写成system
d:main写成mian
C:括号匹配问题
a:把类体的那对大括号弄掉一个
b:把方法体的那对大括号弄掉一个
c:把输出语句的那对小括号弄掉一个
D:中英文问题
a:提示信息:错误: 非法字符: \????的格式
注意:java编程中需要的基本上都是英文字符
第2章 环境配置
2.1 工具安装
2.1.1 Notepad软件的安装和配置
为了让我们写的程序错误看起来更直接,我们安装一款高级记事本软件。
Notepad软件的安装和配置
设置 – 首选项 – 新建 – 默认语言和编码
2.2 环境变量配置
2.2.1 案例说明
为什么要配置
– 程序的编译和执行需要使用到javac和java命令,所以只能在bin目录下写程序
– 实际开发中,不可能把程序写到bin目录下,所以我们必须让javac和java命令在任意目录下能够访问
如何配置
– 创建新的变量名称:JAVA_HOME
计算机-右键属性-高级系统设置-高级-环境变量-系统变量
– 为JAVA_HOME添加变量值:JDK安装目录
– 在path环境变量最前面添加如下内容
%JAVA_HOME%\bin;
2.3 注释
2.3.1 注释概述
A: 什么是注释
– 用于解释说明程序的文字
B: Java中注释分类
单行注释 格式: //注释文字
多行注释 格式: /* 注释文字 */
文档注释 格式:/** 注释文字 */
C: 注释的作用
a:解释说明程序 b:帮助我们调试错误
2.3.2 案例代码二
/*
注释:用于解释说明程序的文字
分类:
单行
多行
作用:解释说明程序,提高程序的阅读性
*/
//这是我的HelloWorld案例
public class HelloWorld {
/*
这是main方法
main是程序的入口方法
所有代码的执行都是从main方法开始的
*/
public static void main(String[] args) {
//这是输出语句
System.out.println("HelloWorld");
}
}
2.4 关键字
2.4.1 关键字概述
– 被Java语言赋予特定含义的单词
2.4.2 关键字特点
– 组成关键字的字母全部小写
– 常用的代码编辑器,针对关键字有特殊的颜色标记,非常直观
2.4.3 案例代码三:
/*
关键字:被Java语言赋予特定含义的单词
特点:
A:组成关键字的字母全部小写
B:常见的代码编辑器,针对关键字有特殊的颜色标记
*/
public class HelloWorld {
public static void main(String[] args) {
System.out.println("HelloWorld");
}
}
关键字举例:
第3章 语法格式
3.1 常量
3.1.1 常量概述
– 在程序执行的过程中,其值不可以发生改变的量
3.1.2 案例代码四:
/*
常量:在程序执行的过程中,其值不可以发生改变的量
常量分类:
A:字符串常量"HelloWorld"
B:整数常量12,-23
C:小数常量12.34
D:字符常量'a','0'
E:布尔常量true,false
F:空常量null(后面讲解)
*/
public class ChangLiang {
public static void main(String[] args) {
//字符串常量
System.out.println("HelloWorld");
//整数常量
System.out.println(12);
System.out.println(-23);
//小数常量
System.out.println(12.34);
//字符常量
System.out.println('a');
System.out.println('0');
//布尔常量
System.out.println(true);
System.out.println(false);
}
}
3.2 变量
3.2.1 变量概述
– 在程序执行的过程中,在某个范围内其值可以发生改变的量
– 从本质上讲,变量其实是内存中的一小块区域
3.2.2 变量定义格式
– 数据类型 变量名 = 初始化值;
– 注意:格式是固定的,记住格式,以不变应万变
3.2.3 变量图解
3.3 数据类型
3.3.1 计算机存储单元
变量是内存中的小容器,用来存储数据。那么计算机内存是怎么存储数据的呢?无论是内存还是硬盘,计算机存储设备的最小信息单元叫“位(bit)”,我们又称之为“比特位”,通常用小写的字母b表示。而计算机最小的存储单元叫“字节(byte)”,通常用大写字母B表示,字节是由连续的8个位组成。
除了字节外还有一些常用的存储单位,大家可能比较熟悉,我们一起来看看:
– 1B(字节) = 8bit 1KB = 1024B
– 1MB = 1024KB 1GB = 1024MB 1TB = 1024GB
3.3.2 数据类型概述和分类
A:为什么有数据类型
Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间
B:Java中数据类型的分类
基本数据类型
引用数据类型
面向对象部分讲解
3.4 标识符
3.4.1 案例代码五
/*
标识符:就是给包,类,方法,变量起名字的符号。
组成规则:
A:unicode字符
数字字符,英文大小写,汉字(不建议使用汉字)
B:下划线_
C:美元符$
注意事项
A:不能以数字开头
B:不能是java中的关键字
常见命名规则:
A:基本要求
见名知意
B:常见的命名
a:包(其实就是文件夹,用于对类进行管理)
全部小写,多级包用.隔开
举例:com,com.itheima
b:类
一个单词首字母大写
举例:Student,Car
多个单词每个单词的首字母大写
举例:HelloWorld
c:方法和变量
一个单词首字母小写
举例:age,show()
多个单词从第二个单词开始每个单词的首字母大写
举例:maxAge,getAge()
*/
public class BiaoZhiFu {
public static void main(String[] args) {
//定义变量
//数据类型 变量名 = 初始化值;
int a = 10;
//正确
int b2 = 20;
//错误
//int 2b = 30;
//不能是java中的关键字
//错误
//int public = 40;
}
}
3.5 定义变量
3.5.1 基本数据类型变量的定义和使用
变量的定义格式:
数据类型 变量名 = 初始化值;
基本数据类型:
byte,short,int,long,float,double,char,boolean
注意:
整数默认是int类型,定义long类型的数据时,要在数据后面加L。
浮点数默认是double类型,定义float类型的数据时,要在数据后面加F。
3.5.2 案例代码六
public class VariableDemo {
public static void main(String[] args) {
//定义byte类型的变量
byte b = 10;
System.out.println(10);
System.out.println(b);
//定义short类型的变量
short s = 100;
System.out.println(s);
//定义int类型的变量
int i = 10000;
System.out.println(i);
//定义long类型的变量
long l = 1000000000000000L;
System.out.println(l);
//定义float类型的变量
float f = 12.34F;
System.out.println(f);
//定义double类型的变量
double d = 12.34;
System.out.println(d);
//定义char类型的变量
char c = 'a';
System.out.println(c);
//定义boolean类型的变量
boolean bb = false;
System.out.println(bb);
}
}
3.5.3 变量定义的注意事项
3.5.4 案例代码七
/*
变量定义注意事项:
1:变量未赋值,不能直接使用
2:变量只在它所属的范围内有效
变量属于它所在的那对大括号
3:一行上可以定义多个变量,但是不建议
*/
public class VariableDemo2 {
public static void main(String[] args) {
//定义变量
int a = 10;
System.out.println(a);
int b;
b = 20; //变量在使用前赋值都是可以的
System.out.println(b);
{
int c = 100;
System.out.println(c);
}
//System.out.println(c);
/*
int aa,bb,cc;
aa = 10;
bb = 20;
cc = 30;
*/
/*
int aa = 10;
int bb = 20;
int cc = 30;
*/
int aa=10,bb=20,cc=30;
}
}
3.6 数据类型转换
3.6.1 隐式数据类型转换
取值范围小的数据类型与取值范围大的数据类型进行运算,会先将小的数据类型提升为大的,再运算
3.6.2 案例代码八
/*
+:是一个运算符,做加法运算的。
我们在做运算的时候,一般要求参与运算的数据类型必须一致。
类型转换:
隐式转换
强制转换
隐式转换
byte,short,char -- int -- long -- float -- double
*/
public class TypeCastDemo {
public static void main(String[] args) {
//直接输出了运算的结果
System.out.println(3 + 4);
//定义两个int类型的变量
int a = 3;
int b = 4;
int c = a + b;
System.out.println(c);
//定义一个byte类型,定义一个int类型
byte bb = 2;
int cc = 5;
System.out.println(bb + cc);
//我能不能不直接输出,用一个变量接受呢?
//用变量接受,这个变量应该有类型
//可能损失精度
//byte dd = bb + cc;
int dd = bb + cc;
System.out.println(dd);
}
}
3.6.3 强制类型数据转换
强制转换的格式
* b = (byte)(a + b);
强制转换的注意事项
* 如果超出了被赋值的数据类型的取值范围得到的结果会与你期望的结果不同
3.6.4 案例代码九
/*
强制转换:
目标类型 变量名 = (目标类型) (被转换的数据);
不建议强制转换,因为会有精度的损失。
*/
public class TypeCastDemo2 {
public static void main(String[] args) {
int a = 3;
byte b = 4;
int c = a + b;
//byte d = a + b;
byte d = (byte) (a + b);
}
}
第4章 Eclipse开发工具
4.1 Eclipse概述和安装
Eclipse是一个IDE(集成开发环境)IDE(Integrated Development Environment)
集成了代码编写功能,分析功能,编译功能,调试功能等一体化的开发软件。
Eclipse的特点描述:免费、纯Java语言编写、免安装、扩展性强
下载和安装、下载 http://eclipse.org/
安装:绿色版、解压就可以使用(Eclipse)
4.2 Eclipse的基本使用
4.2.1 Eclipse基本操作
选择工作空间 工作空间 其实就是我们写的源代码所在的目录
用Eclipse来完成一个HelloWorld案例
A:创建Java项目B:创建包C:创建类D:编写代码E:编译F:运行 右键 Runas
4.3 Eclipse工作空间的基本配置
A:行号的显示和隐藏
显示:在代码区域的最左边的空白区域,右键 -- Show Line Numbers即可。
隐藏:把上面的动作再做一次。
B:字体大小及颜色
a:Java代码区域的字体大小和颜色:
window -- Preferences -- General -- Appearance -- Colors And Fonts -- Java -- Java Edit Text Font
b:控制台
window -- Preferences -- General -- Appearance -- Colors And Fonts -- Debug -- Console font
c:其他文件
window -- Preferences -- General -- Appearance -- Colors And Fonts -- Basic -- Text Font
C:窗体给弄乱了,怎么办?
window -- Perspective -- Reset Perspective
D:控制台找不到了,怎么办?
Window--Show View—Console
4.4 Eclipse中辅助键和快捷键的使用
4.4.1 常用辅助键和快捷键概述
package com.itheima_02;
/*
* 内容辅助键:alt+/
* A:main方法
* main,然后alt+/,回车
* B:输出语句
* syso,然后然后alt+/,回车
*
* 快捷键:
* A:注释
* 单行选中内容,ctrl+/,再来一次就是取消
* 多行选择内容,ctrl+shift+/,ctrl+shift+\
* B:格式化
* ctrl+shift+f
*/
public class HelloWorld {
public static void main(String[] args) {
System.out.println("HelloWorld1");
System.out.println("HelloWorld2");
System.out.println("HelloWorld3");
System.out.println("HelloWorld4");
System.out.println("HelloWorld5");
}
}
4.5 Eclipse中项目的删除和导入
A:删除项目
选中项目 – 右键 – 删除从项目区域中删除从硬盘上删除
B:导入项目
在项目区域右键找到import找到General,展开,并找到Existing Projects into Workspace点击next,然后选择你要导入的项目注意:这里选择的是项目名称
第5章 运算符
5.1 算数运算符
• 运算符
对常量和变量进行操作的符号称为运算符
• 表达式
用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式。不同运算符连接的式子体现的是不同类型的表达式。
定义两个int类型的变量a,b,做加法(a + b)
• 常用运算符
算术 赋值 关系 逻辑 三元运算符
5.1.1 算数运算符的基本用法
5.1.2 算数运算符概述
package com.itheima_01;
/*
* 运算符:对常量和变量进行操作的符号
* 表达式:用运算符连接起来的符合java语法的式子。不同类型的运算符连接起来的式子是不同的表达式。
* 举例:定义两个int类型的变量a,b,
* a + b
*
* 运算符分类:
* 算术运算符,赋值运算符,关系运算符,逻辑运算符,三元运算符。
*
* 算术运算符:
* +,-,*,/的基本使用
*/
public class OperatorDemo {
public static void main(String[] args) {
// 定义两个变量
int a = 3;
int b = 4;
System.out.println(a + b);
System.out.println(a - b);
System.out.println(a * b);
System.out.println(a / b);
// 整数相除只能得到整数,要想得到小数,就必须有浮点数参与运算
System.out.println(3 / 4.0);
System.out.println(3.0 / 4);
}
}
5.1.3 算数运算符取余和除法的区别
%:取余运算符。得到的是两个相除数据的余数。
/:除法运算符。得到是两个相除数据的商。
使用场景: %:判断两个数据是否整除。
5.1.4 代码案例四
public class OperatorDemo2 {
public static void main(String[] args) {
int a = 5;
int b = 3;
System.out.println(a / b);
System.out.println(a % b);
}
}
5.1.5 字符和字符串参与加法操作
package com.itheima_01;
/*
* 整数的加法。
* 字符参与加法操作。拿字符在计算机中底层存储对应的数据值来参与运算的。
* '0'48
* 'a'97
* 'A'65
* 字符串参与加法操作。
* 这里的+其实不是加法,而是字符串连接符。
*/
public class OperatorDemo3 {
public static void main(String[] args) {
// 整数加法
int a = 10;
int b = 20;
System.out.println(a + b);
System.out.println("------------------");
// 字符参与加法操作
char c = '0';
char c2 = 'a';
System.out.println(a + c);
System.out.println(a + c2);
System.out.println("------------------");
// 字符串参与加法操作
System.out.println("hello" + a);
System.out.println("hello" + a + b); // "hello"+10,然后再和b进行拼接
System.out.println(a + b + "hello");
}
}
5.1.6 算数运算符++和- - 的用法
++,--运算符:对变量做加1或者减1的操作。
++或者--既可以放在变量的后面,也可以放在变量的前面。
单独使用的时候,++或者--无论是放在变量的前面还是后面,结果是一样的。
参与操作的时候:
如果++或者--在变量的后面,先拿变量参与操作,后变量做++或者--
如果++或者--在变量的前面,先变量做++或者--,后拿变量参与操作
5.1.7 代码案例六
public class OperatorDemo4 {
public static void main(String[] args) {
int a = 10;
System.out.println("a:" + a);
// 单独使用
// a++;
// ++a;
// System.out.println("a:" + a);
// 参与操作使用
// int b = a++;
int b = ++a;
System.out.println("a:" + a);
System.out.println("b:" + b);
}
}
5.2 赋值运算符
5.2.1 赋值运算符分类
基本的赋值运算符:=
扩展的赋值运算符:+=,-=,*=,/=,%=
+=: a+=20;相当于a = (a的数据类型)(a + 20);
5.2.2 代码案例七
package com.itheima_02;
/*
* 赋值运算符:
* A:基本=
* B:扩展+=,-=,*=,...
*
* +=:
* a+=20;
* 相当于
* a = (a的数据类型)(a + 20);
*/
public class OperatorDemo {
public static void main(String[] args) {
// 把10赋值给int类型的变量a
int a = 10;
// += 把左边和右边的数据进行运算,最后赋值给左边。左边的只能是变量
a += 10;// 相当于a = a + 10
System.out.println("a:" + a);
System.out.println("----------------------");
short s = 10;
// s += 20; // 相当于 s = s + 20;
s = (short) (s + 20);
System.out.println("s:" + s);
}
}
5.3 关系运算符
5.3.1 基本使用及注意事项
关系运算符包含以下内容:
==,!=,>,>=,<,<=
关系运算符的结果都是boolean型,也就是要么是true,要么是false。
注意事项:
关系运算符“==”不能误写成“=”。
5.3.2 代码案例八
package com.itheima_03;
/*
* 关系运算符:
* ==,!=,>,>=,<,<=
* 关系运算符的结果是boolean类型。
*
* 注意:
* 千万不要把==写成=
*/
public class OperatorDemo {
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = 10;
System.out.println(a == b);
System.out.println(a == c);
System.out.println("-----------------");
System.out.println(a != b);
System.out.println(a != c);
System.out.println("-----------------");
System.out.println(a > b);
System.out.println(a > c);
System.out.println("-----------------");
System.out.println(a >= b);
System.out.println(a >= c);
System.out.println("-----------------");
int x = 3;
int y = 4;
// System.out.println(x == y);
// System.out.println(x = y);// 把y赋值给x,把x的值输出
boolean bb = (x == y);
// 报错
// boolean cc = (x = y);
int cc = (x = y);
}
}
5.4 逻辑运算符
5.4.1 逻辑运算符概述
A:逻辑运算符有哪些
&,|,^,!
&&,||
B:案例演示
逻辑运算符的基本用法
C:注意事项:
a:逻辑运算符一般用于连接boolean类型的表达式或者值。
b:表达式:就是用运算符把常量或者变量连接起来的符合java语法的式子。
算术表达式:a + b
比较表达式:a == b(条件表达式)
D:结论:
&逻辑与:有false则false。
|逻辑或:有true则true。
^逻辑异或:相同为false,不同为true。
!逻辑非:非false则true,非true则false。
特点:偶数个不改变本身。
5.4.2 代码案例九
package com.itheima_04;
/*
* 逻辑运算符:用于连接关系表达式。
* &,|,^,!
* &&,||
*
* 与:&有false则false
* 或:|有true则true
* 异或:^ 相同则false,不同则true。(男女朋友)
* 非:!true则false,false则true
*/
public class OperatorDemo {
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = 30;
System.out.println((a > b) & (a > c));// false & false
System.out.println((a < b) & (a > c)); // true & false
System.out.println((a > b) & (a < c)); // false & true
System.out.println((a < b) & (a < c)); // true & true
System.out.println("---------------");
System.out.println((a > b) | (a > c));// false | false
System.out.println((a < b) | (a > c)); // true | false
System.out.println((a > b) | (a < c)); // false | true
System.out.println((a < b) | (a < c)); // true | true
System.out.println("---------------");
System.out.println((a > b) ^ (a > c));// false ^ false
System.out.println((a < b) ^ (a > c)); // true ^ false
System.out.println((a > b) ^ (a < c)); // false ^ true
System.out.println((a < b) ^ (a < c)); // true ^ true
System.out.println("---------------");
System.out.println((a > b)); // false
System.out.println(!(a > b)); // !false
System.out.println(!!(a > b)); // !!false
}
}
5.4.3 逻辑运算符&&与&的区别
A:&&和&的区别?
a:最终结果一样。
b:&&具有短路效果。左边是false,右边不执行。
&是无论左边是false还是true,右边都会执行
B:||和|的区别?
a:最终结果一样
b:||具有短路效果.左边是true,右边不执行
|是无论左边是false还是true,右边都会执行
5.4.4 代码案例十:
package com.itheima_04;
/*
* &&和&的结果一样
* ||和|的结果一样
*
* &&和&的区别:
* &&如果左边是false,右边不执行。
* &无论左边是true还是false,右边都会执行。
*/
public class OperatorDemo2 {
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = 30;
System.out.println((a > b) && (a > c));// false && false
System.out.println((a < b) && (a > c)); // true && false
System.out.println((a > b) && (a < c)); // false && true
System.out.println((a < b) && (a < c)); // true && true
System.out.println("---------------");
System.out.println((a > b) || (a > c));// false || false
System.out.println((a < b) || (a > c)); // true || false
System.out.println((a > b) || (a < c)); // false || true
System.out.println((a < b) || (a < c)); // true || true
System.out.println("---------------");
int x = 3;
int y = 4;
// System.out.println((x++ > 4) & (y++ > 5)); // false & false
System.out.println((x++ > 4) && (y++ > 5)); // false && false
System.out.println("x:" + x);
System.out.println("y:" + y);
}
}
5.5 三元运算符
5.5.1 三元运算符概述
A:格式
(关系表达式)?表达式1:表达式2;
如果条件为true,运算后的结果是表达式1;
如果条件为false,运算后的结果是表达式2;
B:示例:
获取两个数中大数。
int x=3,y=4,z;
z = (x>y)?x:y;//z变量存储的就是两个数的大数
5.5.2 代码案例十一
package com.itheima_05;
/*
* 三元运算符:
*
* 格式:
* (关系表达式)?表达式1:表达式2;
* 执行流程:
* A:计算关系表达式的值,看是true还是false
* B:如果是true,表达式1就是运算结果
* 如果是false,表达式2就是运算结果
*/
public class OperatorDemo {
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = (a > b) ? a : b;
System.out.println("c:" + c);
}
}
5.5.3 代码案例十二(比较两个数是否相同)
package com.itheima_05;
/*
* 三元运算符的练习
* 比较两个整数是否相同
*/
public class OperatorTest {
public static void main(String[] args) {
// 定义两个int类型的变量
int a = 10;
int b = 20;
boolean flag = (a == b) ? true : false;
// boolean flag = (a == b);
System.out.println(flag);
}
}
5.5.4 代码案例十三(获取三个数中的最大值)
package com.itheima_05;
/*
* 获取三个整数中的最大值
*/
public class OperatorTest2 {
public static void main(String[] args) {
// 定义三个int类型的变量
int a = 10;
int b = 30;
int c = 20;
// 先比较两个整数的大值
int temp = ((a > b) ? a : b);
int max = ((temp > c) ? temp : c);
System.out.println("max:" + max);
}
}
第6章 键盘录入
6.1 键盘录入的基本步骤
6.1.1 键盘录入数据概述
我们目前在写程序的时候,数据值都是固定的,但是实际开发中,数据值肯定是变化的,所以,把数据改进为键盘录入,提高程序的灵活性。
键盘录入数据的步骤:
A:导包(位置放到class定义的上面)
import java.util.Scanner;
B:创建对象
Scanner sc = new Scanner(System.in);
C:接收数据
int x = sc.nextInt();
6.1.2 代码案例十四
package com.itheima;
import java.util.Scanner;
/*
* 为了提高程序的灵活性,我们就把数据改进为键盘录入。
* 如何实现键盘录入呢?目前我们只能使用JDK提供的类Scanner。
* 这个使用的步骤,目前大家记住就可以了。
*
* 使用步骤:
* A:导包
* import java.util.Scanner;
* 类中的顺序:package > import > class
* B:创建对象
* Scanner sc = new Scanner(System.in);
* C:接收数据
* int i = sc.nextInt();
*/
public class ScannerDemo {
public static void main(String[] args) {
//创建键盘录入数据的对象
Scanner sc = new Scanner(System.in);
//接收数据
System.out.println("请录入一个整数:");
int i = sc.nextInt();
//输出数据
System.out.println("i:"+i);
}
}
6.2 键盘录入的练习
6.2.1 键盘录入两个数据并求和
键盘录入两个数据,并对这两个数据求和,输出其结果
键盘录入:
A:导包
B:创建对象
C:接收数据
6.2.2 代码案例十五
package com.itheima;
import java.util.Scanner;
public class ScannerTest {
public static void main(String[] args) {
// 创建对象
Scanner sc = new Scanner(System.in);
// 接收数据
System.out.println("请输入第一个数据:");
int a = sc.nextInt();
System.out.println("请输入第二个数据:");
int b = sc.nextInt();
// 对数据进行求和
int sum = a + b;
System.out.println("sum:" + sum);
}
}
6.2.3 键盘录入两个数据比较是否相等
键盘录入两个数据,比较这两个数据是否相等
6.2.4 代码案例十六
package com.itheima;
import java.util.Scanner;
/*
* 键盘录入两个数据,比较这两个数据是否相等
*/
public class ScannerTest2 {
public static void main(String[] args) {
// 创建对象
Scanner sc = new Scanner(System.in);
// 接收数据
System.out.println("请输入第一个数据:");
int a = sc.nextInt();
System.out.println("请输入第二个数据:");
int b = sc.nextInt();
// 比较两个数据是否相等
// boolean flag = ((a == b) ? true : false);
boolean flag = (a == b);
System.out.println("flag:" + flag);
}
}
6.2.5 键盘录入三个数据获取最大值
键盘录入三个数据,获取这三个数据中的最大值
6.2.6 代码案例十七
package com.itheima;
import java.util.Scanner;
/*
* 键盘录入三个数据,获取这三个数据中的最大值
*/
public class ScannerTest3 {
public static void main(String[] args) {
// 创建对象
Scanner sc = new Scanner(System.in);
// 接收数据
System.out.println("请输入第一个数据:");
int a = sc.nextInt();
System.out.println("请输入第二个数据:");
int b = sc.nextInt();
System.out.println("请输入第三个数据:");
int c = sc.nextInt();
// 如何获取三个数据的最大值
int temp = (a > b ? a : b);
int max = (temp > c ? temp : c);
System.out.println("max:" + max);
}
}
第03天 java基础知识
今日内容介绍
u 选择流程控制语句
u 循环流程控制语句
u 控制循环语句
第7章 选择流程控制语句
7.1 顺序结构的基本使用
7.1.1 顺序结构概述
是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的
7.1.2 顺序流程流程图
7.1.3 代码案例一
package com.itheima_01;
/*
* 顺序结构:从上往下,依次执行
*/
public class OrderDemo {
public static void main(String[] args) {
System.out.println("开始");
System.out.println("语句A");
System.out.println("语句B");
System.out.println("语句C");
System.out.println("结束");
}
}
7.2 If语句的格式
7.2.1 If语句格式1及执行流程
if语句第一种格式:
if(关系表达式) {
语句体
}
执行流程:
首先判断关系表达式看其结果是true还是false
如果是true就执行语句体
如果是false就不执行语句体
7.2.2 if语句格式1执行流程图
7.2.3 代码案例二
package com.itheima_02;
/*
* if语句有三种格式。
*
* if语句格式1:
* if(关系表达式) {
* 语句体;
* }
*
* 执行流程:
* A:首先判断关系表达式看其结果是true还是false
* B:如果是true,就执行语句体
* C:如果是false,就不执行语句体
*/
public class IfDemo {
public static void main(String[] args) {
System.out.println("开始");
// 定义两个变量
int a = 10;
int b = 20;
if (a == b) {
System.out.println("a等于b");
}
int c = 10;
if (a == c) {
System.out.println("a等于c");
}
System.out.println("结束");
}
}
7.2.4 If语句格式2及执行流程
if语句第二种格式:
if(关系表达式) {
语句体1;
}else {
语句体2;
}
执行流程
首先判断关系表达式看其结果是true还是false
如果是true就执行语句体1
如果是false就执行语句体2
7.2.5 if语句格式2执行流程图
7.2.6 代码案例三
package com.itheima_02;
/*
* if语句格式2:
* if(关系表达式) {
* 语句体1;
* }else {
* 语句体2;
* }
*
* 执行流程:
* A:判断关系表达式的值是true还是false
* B:如果是true,就执行语句体1
* C:如果是false,就执行语句体2
*/
public class IfDemo2 {
public static void main(String[] args) {
System.out.println("开始");
// 判断给定的数据是奇数还是偶数
// 定义变量
int a = 100;
// 给a重新赋值
a = 99;
if (a % 2 == 0) {
System.out.println("a是偶数");
} else {
System.out.println("a是奇数");
}
System.out.println("结束");
}
}
7.2.7 If语句格式3及执行流程
if语句第三种格式:
if(关系表达式1) {
语句体1;
}else if (关系表达式2) {
语句体2;
}
…
else {
语句体n+1;
}
执行流程
首先判断关系表达式1看其结果是true还是false
如果是true就执行语句体1
如果是false就继续判断关系表达式2看其结果是true还是false
如果是true就执行语句体2
如果是false就继续判断关系表达式…看其结果是true还是false
…
如果没有任何关系表达式为true,就执行语句体n+1
7.2.8 if语句格式3执行流程图
7.2.9 代码案例四
package com.itheima_02;
/*
* if语句格式3:
* if(关系表达式1) {
* 语句体1;
* }else if(关系表达式2) {
* 语句体2;
* }else if(关系表达式3) {
* 语句体3;
* }
* ...
* else {
* 语句体n+1;
* }
*
* 执行流程:
* A:首先判断关系表达式1看其结果是true还是false
* B:如果是true,就执行语句体1
* 如果是false,就继续进行关系表达式2的判断看其结果是true还是false
* C:如果是true,就执行语句体2
* 如果是false,就继续进行关系表达式...的判断看其结果是true还是false
* ...
* D:如果没有一个为true的,就执行语句体n+1
*
* if语句的三种格式:
* 第一种格式适合做一种情况的判断
* 第二种格式适合做二种情况的判断
* 第三种格式适合做多种情况的判断
*/
public class IfDemo3 {
public static void main(String[] args) {
// x和y的关系满足如下:
// x>=3 y = 2x + 1;
// -1<=x<3 y = 2x;
// x<=-1 y = 2x – 1;
// 根据给定的x的值,计算出y的值并输出。
// 定义变量
int x = 5;
/*
int y;
if (x >= 3) {
y = 2 * x + 1;
} else if (x >= -1 && x < 3) {
y = 2 * x;
} else if (x <= -1) {
y = 2 * x - 1;
}else {
y = 0;
}
*/
int y = 0;
if (x >= 3) {
y = 2 * x + 1;
} else if (x >= -1 && x < 3) {
y = 2 * x;
} else if (x <= -1) {
y = 2 * x - 1;
}
System.out.println("y的值是:"+y);
}
}
7.3 If语句的练习
7.3.1 if语句实现获取两个数据较大值
7.3.2 代码案例五
package com.itheima_02;
import java.util.Scanner;
/*
* 键盘录入两个数据,获取这两个数据的较大值
*
* 分析:
* A:看到键盘录入,我们就应该想到键盘录入的三步骤
* 导包,创建对象,接收数据
* B:获取这两个数据的较大值,其实就是判断两个数据谁大,把大的输出就可以了。
*
* 导包:
* A:手动导包
* import java.util.Scanner;
* B:鼠标点击红色叉叉,自动生成
* C:快捷键(推荐)
* ctrl+shift+o
*/
public class IfTest {
public static void main(String[] args) {
//创建对象
Scanner sc = new Scanner(System.in);
//接收数据
System.out.println("请输入第一个数据:");
int a = sc.nextInt();
System.out.println("请输入第二个数据:");
int b = sc.nextInt();
//采用if语句格式2实现
/*
if(a>b){
System.out.println("较大的值是:"+a);
}else {
System.out.println("较大的值是:"+b);
}
*/
//拿到较大的值之后,我未必想直接输出,所以我们定义变量接收这个较大的值
int max;
if(a>b){
max = a;
}else {
max = b;
}
//可能做其他的操作
//max += 100;
System.out.println("较大的值是:"+max);
}
}
7.3.3 if语句实现判断学生等级
7.3.4 代码案例六
package com.itheima_02;
import java.util.Scanner;
/*
* 键盘录入学生考试成绩,请根据成绩判断该学生属于哪个级别
* 90-100优秀
* 80-90好
* 70-80良
* 60-70及格
* 60以下不及格
*
* 分析:
* A:键盘录入学生考试成绩
* 三步骤
* B:通过简单的分析,我们决定采用if语句格式3来实现
*
* 程序一定要考虑周全了。
* 安全数据
* 边界数据
* 错误数据
*/
public class IfTest2 {
public static void main(String[] args) {
//创建对象
Scanner sc = new Scanner(System.in);
//接收数据
System.out.println("请输入学生的考试成绩:");
int score = sc.nextInt();
//if语句格式3
/*
if(score>=90 && score<=100){
System.out.println("你的成绩属于优秀");
}else if(score>=80 && score<90){
System.out.println("你的成绩属于好");
}else if(score>=70 && score<80){
System.out.println("你的成绩属于良");
}else if(score>=60 && score<70){
System.out.println("你的成绩属于及格");
}else {
System.out.println("你的成绩属于不及格");
}
*/
//我们发现程序不够健壮,加入错误数据的判断
if(score<0 || score>100){
System.out.println("你的成绩是错误的");
}else if(score>=90 && score<=100){
System.out.println("你的成绩属于优秀");
}else if(score>=80 && score<90){
System.out.println("你的成绩属于好");
}else if(score>=70 && score<80){
System.out.println("你的成绩属于良");
}else if(score>=60 && score<70){
System.out.println("你的成绩属于及格");
}else {
System.out.println("你的成绩属于不及格");
}
}
}
7.4 switch语句的格式及执行流程
7.4.1 格式解释:
switch表示这是switch语句
表达式的取值:byte,short,int,char
JDK5以后可以是枚举
JDK7以后可以是String
case后面跟的是要和表达式进行比较的值
语句体部分可以是一条或多条语句
break表示中断,结束的意思,可以结束switch语句
default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。
7.4.2 执行流程
首先计算出表达式的值
其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。
7.4.3 switch语句执行流程图
7.5 switch语句的练习
7.5.1 switch语句实现根据数字输出对应星期
7.5.2 代码案例七
package com.itheima_03;
import java.util.Scanner;
/*
* switch语句格式:
* switch(表达式) {
* case 值1:
* 语句体1;
* break;
* case 值2:
* 语句体2;
* break;
* ...
* default:
* 语句体n+1;
* break;
* }
* 格式解释:
* 表达式:byte,short,int,char
* JDK5以后可以是枚举
* JDK7以后可以是字符串
* case:就是要和表达式进行比较的值
* break:表示中断,结束的意思。
* default:表示所有的情况都不匹配的时候,就执行语句体n+1。和if语句的else相似。
* 执行流程:
* A:计算出表达式的值
* B:拿计算出来的值和case后面的值依次比较,一旦有对应的值,就执行该处的语句,在执行过程中,遇到 break,就结束。
* C:如果所有的case都不匹配,就会执行default控制的语句,然后结束。
* 需求:
* 根据键盘录入的数值1,2,3,…7输出对应的星期一,星期二,星期三…星期日。
*/
public class SwitchDemo {
public static void main(String[] args) {
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
//接收数据
System.out.println("请输入一个数字(1-7):");
int weekday = sc.nextInt();
//switch语句实现选择
switch(weekday) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期日");
break;
default:
System.out.println("你输入的数字有误");
break;
}
}
}