零、今日内容
1.运算符
2.scanner
3.练习[重点]
复习
过电影(回忆一天讲的内容)
byte8位 short16位 int32位 long64位
float32位 double 64位
1.声明(定义)变量的语法格式
- 数据类型 变量名;
2.写出所有基本数据类型
- byte,short,int,long
- float,double
- boolean
- char
3.类名,变量名的命名规范
- 类名: 首字母大写,见名知意
- 变量: 首字母小写,见名知意
4.代码的执行顺序
- (宏观)编写代码,编译代码,执行代码
- 具体的代码内部去看,如何执行?
- 从main方法开始执行,在主方法内部从上至下,逐行执行
5.数据类型转换的原则
- 小向大默认进行
- 大向小强制进行
- int变量转成char类型需要强制进行!!
- char变量转成int类型默认 进行!!
一、运算符
之前讲的数据类型+变量名;
- 数据类型定义变量数据的性质
- 变量是存储数据
定义好变量后,就需要对其运算使用!
运算符号有哪些?
- 算术运算
- 赋值运算
- 关系运算
- 逻辑运算
- 三目(三元)运算
1.1 算术运算
算术运算就是常见的数学运算
+ - * /(除) %(取余) ++(自增) --(自减)
package com.qf;
/**
* --- 天道酬勤 ---
*
* @author QiuShiju
* @date 2024/2/21
* @desc 算术运算
*
* 运算符有执行顺序
* 先乘除后加减
* 有括号先算括号里面的!
*
*/
public class Demo1 {
public static void main(String[] args) {
/**
* + 加法
* 1) 数字相加
* 2) 遇到字符串后续全部拼接
*/
int a = 1;
int b = 2;
int c = a + b;// 数字做加法
System.out.println(c );
System.out.println(1 + 1 + "1" + 1 + 1 );
System.out.println("a + b = " + c );
String name = "ClearLove";
int age = 31;
double salary = 10000.0;// 薪水
String address = "上海";
System.out.println("姓名:"+name+",年龄:"+age+",薪水:"+salary+",战队地址:"+address );
/**
* - 减法
* 1) 只能做数字相减
*/
System.out.println(10 - 11 );
int d = 2;
int e = 3;
System.out.println(d - e );
/**
* * 乘法
* 1) 只能数字相乘
*/
int f = 2;
double g = 3.0;
System.out.println("2 * 3.0 = " + f * g);// 6.0
/**
* /除法
* 1) 只能数字相除
* 2) 整数相除结果取整,舍弃小数,不是四舍五入
*/
System.out.println(10 / 2 );// 5
System.out.println(10 / 2.0 );// 5.0
System.out.println(10 / 3 );// 3!!!取整,舍弃小数
System.out.println(10 / 4 );// 2!!!取整,舍弃小数,不是四舍五入
System.out.println(10.0 / 3 );
/**
* % 取余
* 1) 两数相除的余数
* 2) 常用场景就是判断奇偶性
*/
System.out.println(10 % 3 );// 余1
System.out.println(10 % 2 );// 余0
}
}
自增自减
/**
* ++ 自增1
* -- 自减1
*/
int i = 1;
i++; // 自增1
System.out.println(i );//2
int x = 1;
int y = x++; // ++在后,先使用后自增
System.out.println("x = " + x );// 2
System.out.println("y = " + y );// 1
int x2 = 1;
int y2 = ++x2; // ++在前,先自增后使用
System.out.println("x2 = " + x2 );// 2
System.out.println("y2 = " + y2 );// 2
练习
public static void main(String[] args) {
int a = 5;
int b = ++a;
System.out.println(a); // 输出什么?
System.out.println(b); // 输出什么?
int x = 10;
int y = x--;
System.out.println(x); // 输出什么?
System.out.println(y); // 输出什么?
int m = 3;
int n = m++;
System.out.println(m); // 输出什么?
System.out.println(n); // 输出什么?
int p = 8;
int q = --p + p++;
System.out.println(p); // 输出什么?8
System.out.println(q); // 输出什么?14
}
总结
- ++在后,先使用后自增
- ++在前,先自增后使用
1.2 赋值运算
赋值就是 = ,将值赋值给变量的过程
= , += , -= , *= . /=
package com.qf;
/**
* --- 天道酬勤 ---
*
* @author QiuShiju
* @date 2024/2/21
* @desc 赋值运算
*/
public class Demo3 {
public static void main(String[] args) {
/**
* = 赋值运算
* 将右边的数据赋值给左边变量
*/
int a = 1;// 将1赋值给变量a
int b = a;// 将变量a赋值给变量b
/**
* += 相加后再赋值
* 1) 简化写法
* 2) 可以默认进行类型转换,不需要强制转换
*/
int c = 1;
c += 2;// 相当于 c = c + 2
System.out.println("c = " + c );
short s = 1;
// s += 2; // 默认转换,写法简单
// 类型不同的数据运算后,结果会向大的转换
s = (short)(s + 2);
System.out.println(s );
}
}
1.3 关系运算
关系运算主要是指数据之间的大小相等关系
> >= < <= ==(相等) !=(不等)
关系运算完的结果是布尔值: true,false
package com.qf;
/**
* --- 天道酬勤 ---
*
* @author QiuShiju
* @date 2024/2/21
* @desc 关系运算
*/
public class Demo4 {
public static void main(String[] args) {
int a = 1;
int b = 2;
int c = 1;
// 关系运算完的结果是布尔值: true,false
System.out.println(a > b );// false
System.out.println(a == b );// F
System.out.println(a == c );// 判断是否相等 T
System.out.println(a != c );// 判断是否不相等 F
// 字符串只能判断相等和不等,不能比较大小
System.out.println("a" == "a" );
System.out.println("a" != "b" );
}
}
这些关系运算将来常用于if,for等语句中
1.4 逻辑运算
逻辑运算就是: 与&,或|,非!
package com.qf;
/**
* --- 天道酬勤 ---
*
* @author QiuShiju
* @date 2024/2/21
* @desc 逻辑运算
*/
public class Demo5 {
public static void main(String[] args) {
/**
* & 与,和的意思
* 写法:
* boolean 变量 = 布尔表达式1 & 布尔表达式2;
* 作用:
* 判断两边式子,整体结果两边式子决定
* 全对才对,一错就错
* 简单点,就是条件同时成立才可以!!!!
*
* 例如登录时要求用户名和密码同时正确才算成功
*/
System.out.println(1 > 0 & 1 > 0 );// T & T = T
System.out.println(1 > 0 & 1 < 0 );// T & F = F
System.out.println(1 < 0 & 1 > 0 );// F & T = F
System.out.println(1 < 0 & 1 < 0 );// F & F = F
System.out.println("--- 华丽分割线 ---" );
/**
* | 或
* 一对就对,全错才错
*
* 简单点总结,有一个条件成立,结果就对!!
*/
System.out.println(1 > 0 | 1 > 0 );// T | T = T
System.out.println(1 > 0 | 1 < 0 );// T | F = T
System.out.println(1 < 0 | 1 > 0 );// F | T = T
System.out.println(1 < 0 | 1 < 0 );// F | F = F
System.out.println("--- 华丽分割线 ---" );
/**
* ! 非,取反
* 颠倒黑白,对true和false取反的
*/
System.out.println(!true );// false
System.out.println(!(1 < 0) );// true
}
}
&和|可以升级使用: 短路与&&,短路或||
/**
* && 短路与
* 因为一错就错,全对才对
* 所以,当第一个式子结果为错的时候,已经能够决定整体结果时,
* 后续的式子不再执行,即短路了
*/
int i = 1;
// System.out.println(1 < 0 && ++i > 0 );
// System.out.println(i );
System.out.println(1 < 0 && 1/0>0 );
// 因为1<0结果为false,所以&&就短路了后面代码不再执行
/**
* ||
* 或运算是一对就对,全错才错
* 如果第一个式子是对的话,后面式子不执行
*/
System.out.println(1 > 0 || 1/0>0 );
// 因为1>0结果为true,所以||就短路了后面代码不再执行
要求: 以后写代码遇到逻辑运算的,统一使用&&,||
1.5 三目运算
三目运算,就是三元运算,语法
数据类型 变量名 = 布尔表达式 ? 前面对执行此处 : 前面错执行此处;
public static void main(String[] args) {
int a = 1 > 0 ? 1 : 0;
System.out.println(a );
int x = 1;
int y = 2;
String s = x > y ? "x大于y" : "x不大于y";
System.out.println(s );
}
练习
设置两个数字,获得较大的数字并输出出来。(不考虑相等)
// 设置两个数字,获得较大的数字并输出出来。(不考虑相等)
int i = 11;
int j = 2;
String r1 = i > j ? "i大,i="+i : "j大,j="+j;
System.out.println(r1 );
设置两个数字,将其比较的结果输出(a>b,a<b,a==b)
// 设置两个数字,将其比较的结果输出(a>b,a<b,a==b)
int a = 3;
int b = 3;
String r2 = (a > b) ? ("a > b"): (a < b ? "a < b" : "a == b");
System.out.println(r2 );
二、Scanner
2.1 介绍
以前写的题目,数据都是固定写死的,没有交互性.
使用Scanner就可以做到从外部输入数据,再通过运算 出结果.
2.2 使用[固定格式]
- 先导包
- 创建Scanner对象
- 调用方法
- 键盘输入
- 获得数据
- 进行运算
三、练习
编写一个程序,从用户输入的两个数字中获得较大的数字并显示出来。
编写一个程序,从用户输入的三个数字中找到最小的数字并显示出来。
编写一个程序,计算用户输入的3个数字的平均值并显示出来。
编写一个程序,接收用户输入的半径,并计算圆的面积和周长。
编写一个程序,从用户输入的摄氏温度中将其转换为华氏温度,并显示结果
F = C × 1.8 + 32。
编写一个程序,计算一个数的平方和立方,并将结果显示出来。
编写一个程序,从用户输入的两个数字中获得较大的数字并显示出来。
package com.qf.lianxi;
import java.util.Scanner;
/**
* --- 天道酬勤 ---
*
* @author QiuShiju
* @date 2024/2/21
* @desc 练习题1
*/
public class Demo8 {
// 编写一个程序,从用户输入的两个数字中获得较大的数字并显示出来。
// ps: 不考虑相等的情况
public static void main(String[] args) {
System.out.println("--- 比较两数大小 ---" );
Scanner scanner = new Scanner(System.in);
System.out.println("请输入第一个数字a:" );
int a = scanner.nextInt();
System.out.println("请输入第二个数字b:" );
int b = scanner.nextInt( );
String r = a > b?"a大,a="+a:"b大,b="+b;
System.out.println("结果: "+ r );
}
}
编写一个程序,从用户输入的三个数字中找到最小的数字并显示出来。(不考虑相等)
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入第一个数字a:");
int a = scanner.nextInt( );
System.out.println("请输入第二个数字b:");
int b = scanner.nextInt( );
System.out.println("请输入第三个数字c:" );
int c = scanner.nextInt( );
String s = (a < b) ? (a < c ? "a小,a=" + a : "c小,c=" + c) : (b < c ? "b小,b=" + b : "c小,c=" + c);
System.out.println("结果是:" + s );
}
编写一个程序,计算用户输入的3个数字的平均值并显示出来。
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入第一个数字a:");
int a = scanner.nextInt( );
System.out.println("请输入第二个数字b:");
int b = scanner.nextInt( );
System.out.println("请输入第三个数字c:" );
int c = scanner.nextInt( );
// 计算用户输入的3个数字的平均值并显示出来。
double avg = (a + b + c) / 3.0;
System.out.println("三个数平均数:" + avg );
}
编写一个程序,从用户输入的摄氏温度中将其转换为华氏温度,并显示结果
F = C × 1.8 + 32。
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入摄氏温度:");
double c = scanner.nextDouble( );
double h = c * 1.8 + 32;
System.out.println("摄氏温度"+c+"度 = " + h+"华氏度" );
}
四、总结
运算符
- 算术
- 正常用
- 特殊的: / ,整数相除取整, ++和-- 注意前+还是后+(i++,++i)
- 赋值
- 特殊的+= , 好处是默认进行类型转换
- 关系
- 一般用在后面if,for中
- 逻辑
- && 和,一错就错全对才对
- || 或,一对就对,全错才错
- 建议使用短路&&,||
- 三目
- 后续使用的都是最简单的方式,不会嵌套
- 多条件判断的建议使用if-else
Scanner
- 不需要特别深究,能用就行,固定格式
要求:
- 重复(模仿,照抄)2遍
- 课上知识点
- 重点是题目
- 作业