零、 复习昨日
一、运算符
二、键盘录入
三、练习
学习方法: 画面记忆, 过电影回忆
注意变量写法:
- 数据类型 变量名 = 值;
- 常用类型 int,double
类型转换
- 小向大 默认
- 大向小 强制
写题技巧
程序题,没有"标准答案", 只要结果符合预期
程序是调试出来的,不可能一次写对,边写边试
一定要去试着写,不能光看,根据错误的结果修正代码
要读代码,按照执行顺序读
“法无禁止皆可行” - “无所不用其极” - 大胆使用所学技术去试,新加内容变量等都可以,只要结果对
前提是得知道数据,变量,数据类型等知识
运算符
- 算术运算
- 赋值运算
- 关系运算
- 逻辑运算
- 三目运算
算术运算就是数学运算: + - *(乘) /(除) %(取余) ++(自增) --(自减)
package com.qf.operation;
/**
* --- 天道酬勤 ---
*
* @author QiuShiju
* @desc 算术运算
*/
public class Demo1 {
public static void main(String[] args) {
/**
* 算术运算符号
* + - * /
* % ++ --
*/
/**
* + 加法
* 1) 数字相加,
* 如果两边数字类型不一致,相加结果数据类型跟大范围的一致
* 2) 做字符串连接
*/
System.out.println(1 + 1 );// 常量相加
int sum1 = 2 + 2;// 常量相加赋值给变量
System.out.println(sum1 );
int a = 3; // 声明两个变量
int b = 3;
int sum2 = a + b; // 变量相加
System.out.println(sum2 );
// 两边数字类型不一致,相加结果数据类型跟大范围的一致
System.out.println(1 + 1.1 );// 2.1
int a2 = 2;
double b2 =2.2;
double sum3 = a2 + b2;
System.out.println(sum3 );// 4.2
// 加号可以做字符串连接
System.out.println("sum3 = " + sum3 );
// 前两个是数字相加结果是2
// 第三个1是字符串,就会拼接成"21"
// 只要遇到字符串,往后加法都是拼接
System.out.println(1 + 1 + "1" + 1 + 1 + 1 );// 21111
// ============================================
/**
* - 减法
* 只能做数字相减
*/
System.out.println(1 - 1);
int a3 = 2;
int b3 = 1;
System.out.println(a3 - b3 );
// ============================================
/**
* *乘法
* 只能数字相乘
*/
System.out.println(2 * 6 );
int a4 = 2;
double b4 = 2.2;
System.out.println(a4 * b4 );
// ============================================
/**
* / 除法
* 1)只能两数相除
* 2)除法如果两边都是整除,结果只能是整数,舍弃小数取值
* 3)数学常识,0不能做除数(分母)
*/
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 ); // 有bug,即异常
// ============================================
/**
* 取余 %
* 除不尽的余数
* -----
* 场景: 判断奇偶性
*/
System.out.println(10 % 2 );// 0
System.out.println(10 % 3 );// 1
/**
* 153,分别获得百位的1,十位5,个位3
*/
int num = 153;
int ge = num % 10;
int shi = num / 10 % 10;
int bai = num / 100;
System.out.println("个位:" + ge);
System.out.println("十位:" + shi);
System.out.println("百位:" + bai );
// ============================================
/**
* ++ 自增1
* -- 自减1
*/
int i = 1;
i++;
System.out.println(i );
/**
* 谁在前先用谁
* ------------
* ++在后,先使用后自增
* ++在前,先自增后使用
*/
int x = 1;
int r = x++;
System.out.println("r = " + r );// 1
System.out.println("x = " + x );// 2
int y = 1;
int r2 = ++y;
System.out.println("r2 = " + r2 );// 2
System.out.println("y = " + y );// 2
// ==================================
int q = 10;
int w = 10;
int e = 10;
q = w++;// q10 w11
e = --q;// q9 e9
w = ++q;// q10 w10
q = e--;// q9 e8
System.out.println("q = "+q);
System.out.println("w = "+w);
System.out.println("e = "+e);
}
}
赋值运算: 将一个值赋值给另外一个变量
- =
- -= , += , *= , /=
- int a = 1; // 将值1赋值给a变量
- int b = a;// 将变量a的值赋值给b变量
package com.qf.operation;
/**
* --- 天道酬勤 ---
* --- 代码敲烂 月薪过万 ---
*
* @author QiuShiju
* @desc
*/
public class Demo2 {
public static void main(String[] args) {
/**
* 赋值运算
* 右边赋值给左边
*/
int a = 1; // 1赋值给a
System.out.println("a = " + a);
int b = a;// 将a变量的值赋值给b
System.out.println("b = " + b);
/**
* += , -= , *= , /=
* 相当于是拆开,先运算再赋值c = c + 2
* 有好处
* 1) 简单
* 2) 会默认进行类型转换
*/
int c = 1;
c += 2;// 相当于是c = c + 2
System.out.println("c = " + c);
short s = 1;
s += 1; // 默认类型转换
s = (short)(s + 1);// 拆开写,就需要自己转换
}
}
关系运算,就是两个数字直接比大小
> 大于 < 小于 >= 大于等于 <= 小于等于 == 相等 != 不等
关系运算的结果是布尔值,只有true,false
package com.qf.operation;
/**
* --- 天道酬勤 ---
* --- 代码敲烂 月薪过万 ---
*
* @author QiuShiju
* @desc 关系运算
*/
public class Demo3 {
public static void main(String[] args) {
/**
* > 大于
* < 小于
* >= 大于等于
* <= 小于等于
* == 相等
* != 不等
* 关系运算的结果是布尔值,只有true,false
*/
System.out.println(1 > 0 );// true
System.out.println(1 < 0 );// false
int a = 1;
int b = 2;
System.out.println(a > b );// false
System.out.println(a < b );// true
int c = 2;
int d = 2;
boolean r = c == d;
System.out.println(r );// true
boolean r2 = c != d;
System.out.println(r2 );// false
}
}
逻辑运算
- 与 & , 2个必须满足
- 或 | , 二选一满足
- 非 ! , 取反
- 短路与 &&
- 短路或 ||
基础&(与) |(或) !(非) 演示
package com.qf.operation;
/**
* --- 天道酬勤 ---
* --- 代码敲烂 月薪过万 ---
*
* @author QiuShiju
* @desc 逻辑运算
*/
public class Demo4 {
public static void main(String[] args) {
/**
* 逻辑运算是与关系运算一起使用的:
* 逻辑运算的符号两边是关系运算
* 逻辑运算的结果是true和false
*-----------------------------------
* & 与,和
* 语法:
* a>b & c>d
* 布尔表达式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("------------------" );
/**
* | 或
*语法
* 布尔表达式1 | 布尔表达式2
*作用
* 一对就对,全错才错
*/
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("------------------" );
/**
* !非
* 语法:
* !布尔表达式
* 作用:
* 将表达式结果取反
*/
System.out.println(!true ); // false
System.out.println(!(1 > 0) );// false
System.out.println(!(1 > 0 & 1 < 0) );// true
}
}
短路与、短路或 演示 [重点]
// 当第一个表达式能决定整体结果时,后面表达式短路不执行
/**
* & 一错就错,全对才对
* && 短路与,当前面表达式结果是错的时候,后面不再执行
*/
System.out.println(1 < 0 && 1/0==1 );
/**
* | 一对就对,全错才错
* || 前面表达式结果是对,那么后面不执行
*/
System.out.println(1 > 0 || 1/0 == 0);
数据类型 变量 = 布尔表达式 ? true时执行 : false时执行;
- 执行顺序
- 先执行表达式
- 再根据对错执行
- 如果表达式是对(true),就执行冒号前面
- 如果表达式是错(false),就执行冒号后面
package com.qf.operation;
/**
* --- 天道酬勤 ---
* --- 代码敲烂 月薪过万 ---
*
* @author QiuShiju
* @desc
*/
public class Demo5 {
public static void main(String[] args) {
/**
* 数据类型 变量 = 布尔表达式 ? true时执行 : false时执行;
*
* - 执行顺序
* - 先执行表达式
* - 再根据对错执行
* - 如果表达式是对(true),就执行冒号前面
* - 如果表达式是错(false),就执行冒号后面
*/
int r1 = 1 > 0 ? 1 : 0;
System.out.println(r1 );
String s1 = 1 > 0 ? "1大" : "0大";
System.out.println(s1 );
// 比较两数大小,输出最大的
int a = 2;
int b = 2;
String r2 = a > b ? "a大a="+a : "b大b="+b;
System.out.println(r2 );
}
}
因为以前练习时的数据都是固定的写死的,无交互性
使用键盘录入就可以实现从外界将数据输入到程序
实现键盘录入,需要使用Java自带的Scanner功能,使用步骤
- 创建Scanner对象
- 导入Scanner包
- 调用方法完成输入
- 接收输入的数据
package com.qf.scanner;
// 2导包
import java.util.Scanner;
public class Demo6 {
public static void main(String[] args) {
// 1创建Scanner对象[固定步骤]
Scanner scanner = new Scanner(System.in);
// 3调用方法完成输入
// next()和nextLine() 输入字符串
// nextInt() 输入整型
// nextDouble() 输入小数
System.out.println("请输入整数:" );
int a = scanner.nextInt();
// a就是接收到的输入的值
System.out.println("输入的是: "+a );
System.out.println("请输入字符串:" );
String str = scanner.next( );
System.out.println("输入的是: "+str );
System.out.println("请输入小数:" );
double d = scanner.nextDouble( );
System.out.println("输入的是: "+d );
}
}
编写一个程序,从用户输入的两个数字中获得较大的数字并显示出来。
编写一个程序,从用户输入的三个数字中找到最小的数字并显示出来。
编写一个程序,计算用户输入的3个数字的平均值并显示出来。
编写一个程序,接收用户输入的半径,并计算圆的面积和周长。
编写一个程序,从用户输入的摄氏温度中将其转换为华氏温度,并显示结果。
编写一个程序,计算一个数的平方和立方,并将结果显示出来。
sum 和
duplicate 丢普雷k特
number,简写num 数字
result 结果
scan 扫描
scanner 扫描器
next 下一个
import 导入
length 长度
area 面积