零、今日内容
1.运算符
2.scanner
3.if,ifelse,elseif
复习
学习方法:
睡觉前过电影(1jdk,配置环境变量2idea使用3HelloWorld程序解释4变量5数据类型6String)
- 主方法是每次都要写的,因为代码要执行(psvm)
输出语句每次都要写的,因为要看结果(sout)
1.声明变量的语法格式
数据类型 变量名 = 值;
int a = 1;
double b = 2.0;
String s = “abc”;2.八大基本数据类型
- 整型 byte short int long
- 浮点型 float double
- 字符 char
- 布尔 boolean
3.变量的命名规范- 首字母小写 helloWorld
- 数字不能放开头
- 不能特殊符号,除了_ $
- 多个单词的话后续单词首字母大写
4.包名的命名规范
- 小写,公司反域名
- com.qf
- com.baidu
5.类名的命名规范
- 首字母大写 HelloWorld
- 数字不能放开头
- 不能特殊符号,除了_ $
- 多个单词的话后续单词首字母大写
6.代码的执行顺序
- 在main方法内是从上至下依次逐行执行的
- 如果有赋值,代码是从右向左执行
- int a = 1;// 右边的1赋值给左边的变量a
一、运算符
昨天学习的变量,
变量 是用来存数据的
,还可以被重新赋值从而变化.通过不同数据类型来修改变量,让变量有不同的性质.
现在有了变量存储数据,那么就可以对数据进行运算,那么就需要使用运算符.运算符有
- 算术运算
- 赋值运算
- 关系运算
- 逻辑运算
- 三目运算
1.1 算术运算
算术运算就是最简单数学运算: 符号
+ - * 乘 / 除 % 取余 ++ 自增 -- 自减
演示
package com.qf;
/**
* @desc
*/
public class Demo1 {
public static void main(String[] args) {
int a = 1;
int b = 2;
/**
* + 加法
* 1) 数字相加
* 2) 字符串拼接,
* 遇到字符以后,后续所有都是拼接
*/
// 数字相加
int c = a + b; // a加b将结果赋值给c变量
System.out.println(c );// 输出3
System.out.println(a + b );// 输出3
System.out.println(1 + 2 );// 输出3
// 字符串拼接
System.out.println("abc" + "123" );// abc123
System.out.println("1" + 1 );// 11
System.out.println(1 + 1 + "1" + 1);// 211
// 遇到字符以后,后续所有都是拼接
System.out.println(1 + 1 + "1" + 1 + 1 +1 +1);// 211111
/**
* 减法 -
* 数字相减
*/
System.out.println(a - b ); // -1
System.out.println(3 - 3 ); // 0
System.out.println(3.0 - 1 );// 2.0
/**
* 乘法 *
*/
System.out.println(a * b ); // 2
System.out.println(3 * 4 ); // 12
System.out.println(3 * 4.0 );// 12.0
/**
* 除法 /
* 【特别注意:整数相除结果是整数,如果有小数直接舍弃】
*/
System.out.println(4 / 2 ); // 2
System.out.println(9 / 3 ); // 3
System.out.println(10 / 4 );// 2,不保留小数部分
System.out.println(10 / 3 );// 3,不保留小数部分
/**
* 取余 %
* 除不尽得到余数
* 一般用于判断奇偶性(一个整数除以2的余数是0,则为偶数)
*/
System.out.println("余数: " + 10 % 3 );// 10除以3的余数是1
/**
* ++ 自增1
* -- 自减1
*/
int d = 1;
d++; // d自增1
System.out.println(d );// 2
d--; // 自减1
System.out.println(d );// 1
}
/**
* 扩展:
* i++
* ++i
* 的区别
*/
}
【特别注意:整数相除结果是整数,如果有小数直接舍弃】
1.2 赋值运算
就是将数据赋值给变量,例如int a = 1; 其实还有其他赋值符号
- = 赋值
- += , -= , *= , /=
*
* @desc 赋值运算
*/
public class Demo2 {
public static void main(String[] args) {
/**
* 赋值
*/
int a = 1;// 1赋值给变量a
int b = a;// a赋值给变量b
System.out.println(a );
System.out.println(b );
/**
* +=
*/
int c = 1;
c += 2;// 相当于 c = c + 2
System.out.println(c );// 3
int d = 2;
d -= 3; // d = d - 3
System.out.println(d );// -1
}
}
1.3 关系运算
判断数字间的关系
> 大于,例如a > b < 小于 >= 大于等于 <= 小于等于 != 不等于 == 相等
【特别注意】关系运算的结果是: boolean值,即只有true和false
public class Demo3 {
/**
* 变量的使用步骤
* 1. 先定义
* 2. 后赋值
* 3. 再使用
*/
public static void main(String[] args) {
/**
* > < >= <= == !=
* 关系运算的结果是: boolean值,即只有true和false
*/
System.out.println(1 > 0 ); // true
int a = 2;
int b = 3;
System.out.println(a > b ); // false
System.out.println(a < b ); // true
System.out.println(a == b );// 判断是否相等 false
System.out.println(a != b ); // 判断是否不相等 true
System.out.println(2 >= 2 );// true
// 使用场景是用来在后续if,for语句判断的
}
}
1.4 逻辑运算
逻辑运算:
- 与 &
- 或 |
- 非 !
- 短路与/逻辑与 &&
- 短路或/逻辑或 ||
语法:
boolean 变量 = 布尔表达式1 & 布尔表达式2; // 所谓布尔表达式就是值是布尔值(true/flase)的式子 // 特别注意: 逻辑运算的结果也是布尔值: true 或 false 例如 boolean r = 1 > 0 & 2 > 1
public class Demo4 {
public static void main(String[] args) {
/**
* &与(和)读作and
* 1) &符号两边是两个判断式子
* 2) 整体结果也是boolean 值
* 3) 全对才对,一错就错
* 场景: 登录学员系统.要求用户名和密码都正确才能登录
*/
System.out.println(1 > 0 & 1 > 0);// T & T = T
System.out.println(1 < 0 & 1 > 0);// F & T = F
System.out.println(1 < 0 & 1 < 0);// F & F = F
System.out.println(1 > 0 & 1 < 0);// T & F = F
/**
* && 它跟&一个意思,都是 一错就错全对才对
* 但是有一个特殊的作用: 根据情况会短路代码,即后面表达式不执行
* 总结: 当第一个式子能够决定整体结果时,后面式子不再执行
*/
System.out.println(1 > 0 && 1 > 0);// T & T = T
System.out.println(1 < 0 && 1 > 0);// F & T = F
int i = 1;
System.out.println(1 < 0 & i++ > 0 );
System.out.println("i = " + i);// i=2,证明上面i++执行了
int j = 1;
System.out.println(1 < 0 && j++ > 0 );// &&发现当前面式子是错的时候后面式子不执行
System.out.println("j = " + j );// j=1,证明上面j++没有执行
// ========================================================================
/**
* | 或(or)
* 全错才错,一对就对
* 场景: 某些网站允许使用手机号或者邮箱登录
*/
System.out.println(1 > 0 | 1 > 0);// T | T = T
System.out.println(1 < 0 | 1 > 0);// F | T = T
System.out.println(1 < 0 | 1 < 0);// F | F = F
System.out.println(1 > 0 | 1 < 0);// T | F = T
/**
* || 跟| 一样,都是一对就对,全错才错
* 但是||有短路作用,当前面式子结果是对的时候,后面就没有执行
* 总结: 当第一个式子能够决定整体结果时,后面式子不再执行
*/
int k = 1;
System.out.println(1 > 0 | k++ > 0 );
System.out.println("k = " + k );// k=2,说明k++执行了
int g = 1;
System.out.println(1 > 0 || g++ > 0 );
System.out.println("g = " + g);// g=1,说明g++没有执行
/**
* 总结: 以后需要做逻辑运算就是使用
* &&,|| 不再使用&,|
* 因为短路与或 可以在某些条件情况下少执行一次
*/
//================================================
/**
* 非 !
* 对结果取反
*/
System.out.println(!true );// false
System.out.println(!(1 > 0) );// false
}
}
复习
变量存储数据
数据类型修饰变量
通过运算符,运算后得到结果
算术:+-*/% ++ --
+(加法)除了数字相加,还可以字符串拼接
/(除法)整除相除,除不尽取整,舍弃小数点
关系 > < >= <= == !=
赋值 = , += (c+=1,c=c+1)
逻辑 &,|,! ,&&,||
&& 一错就错,前面式子错了,后面式子不执行
|| 一对就对,前面式子对了,后面式子不执行
总结: 第一个式子能决定整体结果时,后面的不执行
1.5 三目运算
三元运算就是有三个数据,格式:
数据类型 变量 = 布尔表达式 ? 值1 : 值2;
执行流程:
- 先判断布尔表达式
- 如果结果为true,执行值1,将结果返回赋值给变量
- 如果结果为false,执行值2,将结果返回赋值给变量
public class Demo5 {
/**
* 变量是存储数据
* 数据类型是修饰变量的性质
*/
public static void main(String[] args) {
// 数据类型 变量 = 布尔表达式 ? 值1 : 值2;
// 先判断布尔表达式
// 如果结果为true,执行值1,将结果返回赋值给变量
// 如果结果为false,执行值2,将结果返回赋值给变量
int a = 1;
int b = 2;
String r1 = a > b ? "对" : "错";
System.out.println(r1 );// 错
int r2 = a > b ? a : b;
System.out.println(r2 );// 2
double r3 = a < b ? 99.9 : 0.0;
System.out.println(r3 );// 0.0
// 需求: 输出a,b中最大值
String r4 = a > b ? "a大" : "b大";
System.out.println(r4 );
}
}
二、Scanner(键盘录入)
是什么? Scanner 是扫描控制台内容,可以将控制台输入的数据扫描到程序中
为什么? 是因为现在做练习,数据都是固定写死,效果不好看,使用Scanner实现从外部输入数据,再运算得到结果
怎么用?
- 语法固定: Scanner scanner = new Scanner(System.in);
package com.qf;
// 导包
import java.util.Scanner;
/**
* @desc 演示使用Scanner
*/
public class Demo6 {
public static void main(String[] args) {
// 创建扫描器
Scanner s = new Scanner(System.in);
// 调用方法开始扫描
// System.out.println("请输入数字:" );
// int num = s.nextInt();// 允许键盘输入整数,其他的报错
// System.out.println("输入的是:" + num );
// System.out.println("请输入字符串:" );
// String str = s.nextLine();
// System.out.println("输入的是:" + str );
// 输入两个数字,输出相加的结果
System.out.println("请输入第1个数字:" );
int a = s.nextInt();
System.out.println("请输入第2个数字:" );
int b = s.nextInt();
System.out.println("结果是: "+ (a + b) );
}
}
三 、if,ifelse,elseif
目前为止代码是从上至下依次逐行执行的,但是有些时候代码需要有选择的执行部分代码.
此时需要使用if,ifelse等分支语句
3.1 if(单分支)
if 翻译是如果,作用就是判断一个条件,条件成立就执行代码,条件不成立就不执行
语法:
if (布尔表达式) { 执行代码; }
执行流程:
- 遇到if,开始判断
- 如果表达式为true,就执行{}内的代码
- 如果表达式为false,就不执行{}内代码
- 最后无论对错,if(){} 后面代码一定会执行
/*
* @desc
*/
public class Demo7 {
public static void main(String[] args) {
double yue = 100.0;// 账户余额
double pay = 80;// 应支付钱
if (yue >= pay) {// 判断结果true,就执行{}内;为false就跳过不执行
System.out.println("付款成功" );
}
// 这句话无论上方if对错,都会执行
System.out.println("下次再来~" );
System.out.println("-------- 华丽的分割线 -------" );
int age = 19;
if (age >= 18) {
System.out.println("欢迎浏览本网站" );
}
// 这句话无论上方if对错,都会执行
System.out.println("还小,再等等~" );
}
}
3.2 if.else(双分支)
if如果,else其他,能实现二选一执行
语法:
if(布尔表达式) { 执行语句; }else{ 执行语句; } 后续代码
执行流程
- 遇到if,开始判断
- 如果表达式为true,就执行if后{}内的代码,else后不再执行
- 如果表达式为false,就不执行if{}内代码,而执行else后{}内的代码
- 最后无论对错,if.else后面代码一定会执行
* @desc if.esle 双分支语句
*/
public class Demo8 {
public static void main(String[] args) {
double yue = 100;// 余额
double pay = 80;// 应付金额
if (yue >= pay) { // 如果对(true)执行付款成功
System.out.println("付款成功" );
} else {// if为false,就执行付款失败
System.out.println("付款失败" );
}
System.out.println("欢迎下次再来~" );
System.out.println("--------分割线--------" );
// 练习: 键盘输入两个数,比较大小,输出较大那个数
Scanner scanner = new Scanner(System.in);
System.out.println("请输入第1个数" );
int a = scanner.nextInt( );
System.out.println("请输入第2个数" );
int b = scanner.nextInt( );
if (a > b) {
System.out.println("第1个最大: a = " + a );
} else {
System.out.println("第2个最大: b = " + b );
}
System.out.println("--------分割线--------" );
// 练习: 键盘录入一个数,输出该数是奇数还是偶数
// 提示(判断奇偶性是通过除以2的余数,整数除以2余数为0是偶数,否则是奇数)
System.out.println("请输入数字:" );
int num = scanner.nextInt( );
if (num % 2 == 0) {
System.out.println(num +",是偶数" );
} else {
System.out.println(num +",是奇数" );
}
}
}
总结
重点是运算符和if语句
关于运算符,
基本数学运算,关系判断,逻辑运算主要是使用&&和||,三目元素其实简化版ifelse
特别注意: 除法,整数相除取整
关系运算和逻辑运算的结果都是true/false的布尔值
关于if,ifelse
重点是要将代码重复2遍,读代码,熟悉ifelse执行
快捷键
选中代码,ctrl+/ 注释
alt+回车,生成左边local variable(本地,变量)
单词
this 这个
window 窗口
cancel 取消
condition 条件
Variable 变量
result 结果
next 下一个
line 行
number 数字,简写num
local 本地
variable 变量