PART1:变量与数据类型
-
Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存总分配了不同大小的内存空间。
- 整数默认:int
- 小数默认:double
-
-
使用变量注意事项:
- 作用域:变量定义在哪一级大括号中,哪个大括号的范围就是这个变量的作用域。相同的作用域中不能定义两个同名变量。
- 初始化值:没有初始化值不能直接使用。
- 在一行上建议只定义一个变量:可以定义多个,但是不建议。
+
是一个运算符, 我们应该能够看懂,做数据的加法。- boolean类型不能转换为其他的数据类型。
- 默认转换:
byte,short,char—int—long—float—double
- byte,short,char相互之间不转换,他们参与运算首先转换为int类型
- 强制转换:目标类型 变量名=(目标类型)(被转换的数据);
面试题:
byte b1=3,b2=4,b;
b=b1+b2;
b=3+4;
哪句是编译失败的呢?为什么呢?
思考题:
byte b = 130;有没有问题?如果我想让赋值正确,可以怎么做?结果是多少呢?
练习:byte b = 300;
请写出下列程序结果
System.out.println(’a’);
System.out.println(’a’+1);
System.out.println(”hello”+’a’+1);
System.out.println(’a’+1+”hello”);
System.out.println(”5+5=”+5+5);
System.out.println(5+5+”=5+5”);
PART 2:算术、赋值运算符:
1.算术运算符:
+,-,*,/都是比较简单的操作,简单演示即可
+的几种作用:
- 加法
- 正数
- 字符串连接符
除法的时候要注意一个问题: - 整数相除,只能得到整数
- 要想得到小数,可以*1.0
/和%的区别:
++和--的应用
- 单独使用效果相同
- 参与运算使用,在操作数的前后效果不同
符号:
- = , +=, -=, *=, /=, %=
- =为基本的赋值运算符,其他的为扩展的赋值运算符
如下操作写出结果
int a,b; a = b = 10;
System.out.println(a); System.out.println(b);
int a = 10; a += 20; System.out.println(a);
面试题
short s=1, s = s+1; short s=1, s+=1;
上面两个代码有没有问题,如果有,那里有问题
PART 3:关系、逻辑、位运算符
关系运算符:
- 注1:比较运算符的结果都是boolean型,也就是要么是true,要么是false。
- 注2:比较运算符“==”不能误写成“=”。
逻辑运算符:
- 逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6 。
- “&”和“&&”的区别:
- 单&时,左边无论真假,右边都进行运算;
- 双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
- “|”和“||”的区别同理,双或时,左边为真,右边不参与运算。
位运算符:
三目运算符:
- 格式:
(关系表达式)?表达式1:表达式2;
- 如果条件为true,运算后的结果是表达式1;
- 如果条件为false,运算后的结果是表达式2;
- 示例:
int x=3,y=4,z; z = (x>y)?x:y;//z变量存储的就是两个数的大数。
条件运算符练习:
- 获取两个整数中的最大值
- 获取三个整数中的最大值
- 比较两个整数是否相同
注意:
- 目前在写案例的时候,如果我没有说明数据是什么类型的,默认是int类型的。
PART 4:Scanner if语句
键盘录入数据概述
- 我们目前在写程序的时候,数据值都是固定的,但是实际开发中,数据值肯定是变化的,所以,我准备把数据改进为键盘录入,提高程序的灵活性。
如何实现键盘录入数据呢?(目前先记住使用)
- 导包(位置放到class定义的上面):
import java.util.Scanner;
- 创建对象:
Scanner sc = new Scanner(System.in);
- 接收数据:
int x = sc.nextInt();
流程控制语句:
- 在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。也就是说程序的流程对运行结果有直接的影响。所以,我们必须清楚每条语句的执行流程。而且,很多时候我们要通过控制语句的执行顺序来实现我们要完成的功能。
流程控制语句分类
- 顺序结构
- 选择结构
- 循环结构
顺序结构:
- 是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,自上而下,依次执行,程序中大多数的代码都是这样执行的。
- 总的来说:写在前面的先执行,写在后面的后执行。
选择结构:
也被称为分支结构。
选择结构有特定的语法规则,代码要执行具体的逻辑运算进行判断,逻辑运算的结果有两个,所以产生选择,按照不同的选择执行不同的代码。
Java语言提供了两种选择结构语句
- if语句
- switch语句
if语句:
if语句有三种格式
if语句第一种格式:
if(关系表达式) {
语句体
}
执行流程
- 首先判断关系表达式看其结果是true还是false
- 如果是true就执行语句体
- 如果是false就不执行语句体
注意事项:
- 关系表达式无论简单还是复杂,结果必须是boolean类型
- if语句控制的语句体如果是一条语句,大括号可以省略;如果是多条语句,就不能省略。建议永远不要省略。
- 一般来说:有左大括号就没有分号,有分号就没有左大括号
if语句第二种格式:
if(关系表达式) {
语句体1;
}else {
语句体2;
}
执行流程
- 首先判断关系表达式看其结果是true还是false
- 如果是true就执行语句体1
- 如果是false就执行语句体2
我们前面讲解过三元运算符,它根据比较判断后,给出的也是两个结果,所以,这种情况和if语句的第二种格式很相似,他们在某些情况下应该是可以相互转换的。
if语句第二种格式和三元运算符
- 三元运算符的操作都可以使用if语句改进,反之不成立
- 什么时候不成立呢?
- 当if语句控制的语句体是一条输出语句的时候,就不成立。因为三元运算符是一个运算符,必须要求有一个结果返回。
- 而输出语句却不能作为一个返回结果。
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。
PART 5:switch语句 for循环
switch语句格式:
switch(表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
// ...
default:
语句体n+1;
break;
}
格式解释
- switch表示这是switch语句
- 表达式的取值:byte,short,int,char
- JDK5以后可以是枚举
- JDK7以后可以是String
- case后面跟的是要和表达式进行比较的值
- 语句体部分可以是一条或多条语句
- break表示中断,结束的意思,可以结束switch语句
- default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。
执行流程
- 首先计算出表达式的值
- 其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
- 最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。
注意事项
- case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的。
- default可以省略吗?
- 可以省略。一般不建议。除非判断的值是固定的(单选题)。
- break可以省略吗?
- 可以省略,一般不建议。否则结果可能不是你想要的。
- default的位置一定要在最后吗?
- 可以出现在switch语句任意位置。
- switch语句的结束条件
- 遇到break
- 执行到程序的末尾
switch语句练习:
- 模拟做单项选择题,根据你的选择,给出对应的答案。(表达式是字符的情况)
- 键盘录入字符串,根据给定的字符串,来输出你选择的字符串是什么?(表达式是字符串的情况)
- 用switch语句实现键盘录入月份,输出对应的季节
- 看程序写结果
选择结构(各自使用场景):
- 在做判断的时候,我们有两种选择,if语句和switch语句,那么,我们到底该如何选择使用那种语句呢?
- if语句使用场景:
- 针对结果是boolean类型的判断
- 针对一个范围的判断
- 针对几个常量值的判断
- switch语句使用场景:
- 针对几个常量值的判断
循环结构:
- 循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。
循环语句的组成
- 初始化语句:
- 一条或者多条语句,这些语句完成一些初始化操作。
- 判断条件语句:
- 这是一个boolean表达式,这个表达式能决定是否执行循环体。
- 循环体语句:
- 这个部分是循环体语句,也就是我们要多次做的事情。
- 控制条件语句:
- 这个部分在一次循环体结束后,下一次循环判断条件执行前执行。通过用于控制循环条件中的变量,使得循环在合适的时候结束。
for循环语句格式:
for(初始化语句;判断条件语句;控制条件语句) {
循环体语句;
}
执行流程
- A:执行初始化语句
- B:执行判断条件语句,看其结果是true还是false
- 如果是false,循环结束。
- 如果是true,继续执行。
- C:执行循环体语句
- D:执行控制条件语句
- E:回到B继续
注意事项
- 判断条件语句的结果是一个boolean类型。
- 循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不能省略。建议永远不要省略。
- 一般来说:有左大括号就没有分号,有分号就没有左大括号。
for循环练习:
- 请在控制台输出数据1-10。
- 请在控制台输出数据10-1。
- 求出1-10之间数据之和。
- 求出1-100之间偶数和。
- 求出1-100之间奇数和。
- 求5的阶乘。
- 在控制台输出所有的”水仙花数”。
- 统计”水仙花数”共有多少个。
- 请在控制台输出满足如下条件的五位数:
- 个位等于万位。
- 十位等于千位。
- 个位+十位+千位+万位=百位。
- 请统计1-1000之间同时满足如下
条件的数据有多少个:
- 对3整除余2
- 对5整除余3
- 对7整除余2
选择结构(各自使用场景):
- 在做判断的时候,我们有两种选择,if语句和switch语句,那么,我们到底该如何选择使用那种语句呢?
- if语句使用场景:
- 针对结果是boolean类型的判断
- 针对一个范围的判断
- 针对几个常量值的判断
- switch语句使用场景:
- 针对几个常量值的判断
循环结构:
- 循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。
循环语句的组成
- 初始化语句:
- 一条或者多条语句,这些语句完成一些初始化操作。
- 判断条件语句:
- 这是一个boolean表达式,这个表达式能决定是否执行循环体。
- 循环体语句:
- 这个部分是循环体语句,也就是我们要多次做的事情。
- 控制条件语句:
- 这个部分在一次循环体结束后,下一次循环判断条件执行前执行。通过用于控制循环条件中的变量,使得循环在合适的时候结束。
for循环语句格式:
for(初始化语句; 判断条件语句; 控制条件语句) {
循环体语句;
}
执行流程
- A: 执行初始化语句
- B: 执行判断条件语句,看其结果是true还是false
- 如果是false,循环结束。
- 如果是true,继续执行。
- C: 执行循环体语句
- D: 执行控制条件语句
- E: 回到B继续
注意事项
- 判断条件语句的结果是一个boolean类型。
- 循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不能省略。建议永远不要省略。
- 一般来说:有左大括号就没有分号,有分号就没有左大括号。
for循环练习:
- 请在控制台输出数据1-10。
- 请在控制台输出数据10-1。
- 求出1-10之间数据之和。
- 求出1-100之间偶数和。
- 求出1-100之间奇数和。
- 求5的阶乘。
- 在控制台输出所有的”水仙花数”。
- 统计”水仙花数”共有多少个。
- 请在控制台输出满足如下条件的五位数:
- 个位等于万位。
- 十位等于千位。
- 个位+十位+千位+万位=百位。
- 请统计1-1000之间同时满足如下条件的数据有多少个:
- 对3整除余2。
- 对5整除余3。
- 对7整除余2。
点赞评论加关注,下期出练习答案