零、 复习昨日
一、运算符
二、键盘录入
三、练习
四、流程控制语句(1)
0java代码的执行顺序是什么?
- 在主方法内逐行执行
1注释有哪几种写法
2输出语句print和println的区别: 加ln会换行
3变量用来干什么?变量的使用步骤和写法
- 容器,装数据的
- 声明,赋值,使用
4写出所有基本数据类型
- byte short int long float double boolean char
5数据类型转换的原则
- 小转大 默认允许
- 大转小 默认不允许,但是可以强转,数据可能丢失精度
6char和String分别是什么,什么用法,有何区别
- char代表单个字符,使用单引号
- String代表是字符串,使用双引号
7写单词汉语
system package required type duplicate variable init
- 类名首字母大写!!!
- 凡是在{}内写东西,先缩进
- 类名上没加注释
- 拼接字符串技巧
- 两个变量交换
- 思路: 单独再定义一个第三变量
- 写题技巧: “法无禁止皆可行”
昨天学习 变量,数据类型,今天通过对这些变量做各种运算.
运算符
- 赋值运算
- 算术运算
- 关系运算
- 逻辑运算
- 三目|三元运算
赋值运算符号
= +=,-=,*=,/=
public class Demo3 {
public static void main(String[] args) {
/**
* = 等号
* 讲右边的赋值给左边
* 赋值时要注意两边的类型是否一致
*/
int a = 1;
/**
* 先运算后赋值(综合)
* +=,-=,*=,/=,%=
* 好处:
* 1)写法简单
* 2)这个符号内部可以默认进行类型转换
*/
int b = 1;
b += 2;// 结果等价于 b = b + 2;
System.out.println("b = " + b);
/**
* short s = 1;
* s += 1;
* s = s + 1;
* 问: 这三行代码有无问题?
* 第三行有错误,类型转换问题
*/
short s = 1;
s += 1;// 结果等价于s = s + 1
//s = (short)(s + 1);
System.out.println("s = " + s );
}
}
算术运算就是数学运算
+ 加 - 减 * 乘 / 除 % 取余 ++ 自增 -- 自减
public class Demo4 {
public static void main(String[] args) {
/**
* + 加法
* 1) 数字相加
* 2) 字符串拼接
* 3) 提升结果的数据类型范围(向大的看齐)
*/
int a = 1;
int b = 2;
int c = a + b;// 数字相加
// 字符串拼接
System.out.println("c = " + c );
// 字符串前的+号正常运算,字符串后的统统是拼接字符串
// 有括号先算括号内
System.out.println(1 + 1 ); // 2
System.out.println(1 + 1 + "1" );// 21
System.out.println(1 + 1 + "1" + 1 ); // 211
System.out.println(1 + 1 + "1" + 1 + 1 ); // 2111
System.out.println(1 + 1 + "1" + (1 + 1)); // 212
int d = 1;
byte e = 1;
int f = d + e;// 提升结果的数据类型范围(向大的看齐)
double g = 1.0;
double h = d + g;// 2.0
/**
* - 减法
* 1) 只能做数字相减
*/
System.out.println(1 - 1 );// 0
int i = 1;
int j = 2;
System.out.println(i - j );
System.out.println(1.0 - 1 );// 0.0
/**
* * 乘法
* 1) 只能做数字相乘
*/
System.out.println(1 * 0 );// 0
System.out.println(2 * 0.0 );// 0.0
/**
* / 除法
* 1) 注意语法问题,除数不能为0
* 2) 整数相除,除不尽舍弃小数取整!!!!!
*/
System.out.println(1 / 1 ); // 1
// System.out.println(1 / 0 ); // 结果是报错
System.out.println(4 / 2.0 ); // 2.0
System.out.println(10 / 3 ); // 3
System.out.println(10 / 4 ); // 2
// 如果想要保留小数,那就要将其中任何一个数据变成浮点型
System.out.println(10.0 / 3 );
/**
* % 取余,除不尽的余数
*/
System.out.println(10 % 2 );// 除尽余数0
System.out.println(10 % 3 );// 除不尽余数1
// 后续学习中,余数一般 用于 判断奇偶性
// 偶数除以2的余数是0
System.out.println(10.0 % 2 );// 0.0
System.out.println(10.0 % 3 );// 0.0
// 余数的正负只和前面有关系(了解)
System.out.println(10 % 3 );// 1
System.out.println(10 % -3 );// 1
System.out.println(-10 % 3 );// -1
System.out.println(-10 % -3 );// -1
// 优先级问题(先乘除后加减)
System.out.println(1 + 1 * 2 - 3 / 5);// 3
}
}
public class Demo5 {
public static void main(String[] args) {
/**
* ++ 让数字自增1
*/
int i = 1;
i++;
System.out.println(i );
int a = 1;
int b = a++;// ++在后,先使用后自增
System.out.println("a = " + a );// a=2
System.out.println("b = " + b );// b=1
int a2 = 1;
int b2 = ++a2;// ++在前,先自增后使用
System.out.println("a2 = " + a2 );// a2=2
System.out.println("b2 = " + b2 );// b2=2
int a3 = 10;
int b3 = 10;
int c3 = 10;
a3 = b3++;// a3=10 b3=11
c3 = --a3;// a3=9,c3=9
b3 = ++a3;// a3=10,b3=10
a3 = c3--;// a3=9,c3=8
System.out.println("a3 = "+a3);//9
System.out.println("b3 = "+b3);//10
System.out.println("c3 = "+c3);//8
int x = 4;
int y = (x++)+(++x)+(x*10);
System.out.println("x = "+x);//6
System.out.println("y = "+y);//70
}
}
关系运算,其实用来判断数据之间的关系(是否相等,大于 ,小于…)
符号: > >= < <= == !=
关系运算后结果是 布尔值: true或者false
public class Demo6 {
public static void main(String[] args) {
/**
* >大于
* >= 大于等于
* < 小于
* <= 小于等于
* ----
* 以上这些只能用于数字判断,不能用于字符串
*/
// 可以用于常量数字运算
System.out.println(1 > 2 );// false
System.out.println(1 <= 1 ); // true
// 也可以是数字变量运算
int a = 1;
int b = 2;
System.out.println(a > b ); // false
String s1 = "a";
String s2 = "a";
// 但是不能做字符串判断大小
// System.out.println(a > b );
/**
* == 判断两边数据是否相等
* != 判断两边数据是否不等
*/
System.out.println(1 == 2 );// false
System.out.println(1 != 2 );// true
System.out.println("a" == "a" );// true
// 这些关系运算将来主要用在判断和循环语句中
// 判断奇偶性
// 是偶数输出true,是奇数输出false
int x = 2;
System.out.println(x % 2 == 0);
}
}
逻辑运算是基于关系运算升级的一种,逻辑有
- 与 &
- 或 |
- 非 !
public static void main(String[] args) {
/**
* & (and,和)
* 语法:
* boolean 变量 = 布尔表达式1 & 布尔表达式2
*--- 注意事项
* 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("---------- 华丽分割线 ---------" );
/**
* | (or,或)
* 语法:
* boolean 变量 = 布尔表达式1 | 布尔表达式2
*--- 注意事项
* 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("---------- 华丽分割线 ---------" );
/**
* ! (not,非)
* 语法:
* boolean 变量 = !布尔表达式;
* 作用:
* 对布尔值取反
*/
boolean bo1 = !true;
System.out.println(bo1 );
boolean bo2 = !(1 > 0);
System.out.println(bo2 );
System.out.println(!(1 < 0) | 1 < 0 );
}
短路与&&,短路或||
/**
* 短路与 &&
* 一错就错,全对才对,
* 即第一个式子已经错了,后面再执行也无意义,&&就会短路后面式子不执行
* 短路或 ||
* 一对就对,全错猜错
* 即第一个式子已经对了,后面再执行不影响结果,||就短路后面不执行
*/
int i = 1;
//System.out.println(1 < 0 & ++i > 1 );// F & T = F
System.out.println(1 < 0 && ++i > 1 );// F & T = F
System.out.println("i = " + i );
// System.out.println(1 > 0 | 1 / 0 == 1 );
System.out.println(1 > 0 || 1 / 0 == 1 );
二元运算 1+1 a*b
三元运算,是指通过2个符号,3个操作数据
写法: 数据类型 变量 = 布尔表达式 ? true时执行 : false时执行;
执行顺序:
- 先执行布尔表达式(判断)
- 如果结果是true,就执行?后,冒号:前,后面不再执行
- 如果结果是false,跳过?后,直接:冒号后
public class Demo8 {
public static void main(String[] args) {
int a = 1 > 0 ? 1 : 0;
System.out.println("a = " + a );
// 比较2个数字大小,输出最大值
int i = 11;
int j = 2;
String s = i > j ? "i大,i=" + i : "j大,j = " + j;
System.out.println(s );
int x = 11;
int y = 22;
int z = 33;
// 使用三目运算:比较3个数字大小,输出最大值(暂时不考虑相等情况)
//String s2 = x > y ? (x > z ? "x大,x="+x : "z大,z="+z):(y > z ? "y大,y="+y : "z大,z="+z);
int s2 = x > y ? (x > z ? x : z):(y > z ? y : z);
System.out.println(s2 );
int e = 2;
int f = 3;
// 使用三目运算:比较2个数字大小,输出"e > f"or"e < f"or"e == f"
String s3 = e > f ? ("e > f") : (e < f ? "e < f" : "e == f");
System.out.println(s3 );
}
}
目前做练习题时 ,数据直接固定写死,没有交互性! 不好玩!
所以,使用键盘录入技术,从外部获得数据,而不是固定写死!
java的键盘录入技术,使用步骤
- 导包 import java.util.Scanner; (一般会在创建对象时自动导包)
- 创建对象 Scannner scanner = new Scanner(System.in);
- 调用方法录入数据 scanner.nextInt()或者scanner.nextLine()
- 使用变量接收数据
package com.qf.operation;
// 1导包(作用就是在当前Demo9类中可以使用其包下的类Scanner)
import java.util.Scanner;
public class Demo9 {
public static void main(String[] args) {
// 2创建键盘录入对象(固定写法)
Scanner scanner = new Scanner(System.in);
// 3调用方法准备录入
/**
* nextInt() 录入整数数据
* nextDouble() 录入小数数据
* next() 录入字符串
*/
// 4前面用变量接收数据
System.out.println("请输入整数:" );
int a = scanner.nextInt(); // 录入整数数据,输入其他数据类型会报错
System.out.println("输入的整数是: " + a );
System.out.println("请输入浮点数:" );
double b = scanner.nextDouble();
System.out.println("输入的小数是: " + b );
System.out.println("请输入字符串:" );
String line = scanner.next();
System.out.println("输入的是字符串: " + line );
}
}
编写一个程序,从用户输入的两个数字中获得较大的数字并显示出来。
编写一个程序,从用户输入的三个数字中找到最小的数字并显示出来。
编写一个程序,计算用户输入的3个数字的平均值并显示出来。
编写一个程序,接收用户输入的半径,并计算圆的面积和周长。
编写一个程序,从用户输入的摄氏温度中将其转换为华氏温度,并显示结果。
公式: 华氏 = (摄氏温度 × 9/5) + 32
编写一个程序,计算一个数的平方和立方,并将结果显示出来。
public class Demo10 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// System.out.println("---------- 第一题 ---------- " );
// System.out.print("请输入a = " );
// int a = scanner.nextInt( );
//
// System.out.print("请输入b = " );
// int b = scanner.nextInt( );
//
// String r = a > b ? "a大,a = " + a : "b大,b = " + b;
// System.out.println(r );
// System.out.println("---------- 第二题 ---------- " );
// System.out.print("请输入数字1,a = " );
// int a = scanner.nextInt( );
//
// System.out.print("请输入数字2,b = " );
// int b = scanner.nextInt( );
//
// System.out.print("请输入数字3,c = " );
// int c = scanner.nextInt( );
//
// String r = a>b?(a>c?"a大,a="+a:"c大,c="+c):(b>c?"b大,b="+b:"c大,c="+c);
// System.out.println(r );
// System.out.println("---------- 第三题 ---------- " );
// System.out.print("请输入数字1,a = " );
// int a = scanner.nextInt( );
//
// System.out.print("请输入数字2,b = " );
// int b = scanner.nextInt( );
//
// System.out.print("请输入数字3,c = " );
// int c = scanner.nextInt( );
// double r = (a + b + c) / 3.0;
// System.out.println("平均值 avg = " + r );
// System.out.println("---------- 第四题 ---------- " );
// System.out.print("请输入圆的半径r = " );
// double r = scanner.nextDouble( );
// double length = r * 2 * 3.14;
// double area = 3.14 * r * r;
// System.out.println("该圆的周长 = " + length );
// System.out.println("该圆的面积 = " + area );
System.out.println("---------- 第四题 ---------- " );
// 公式: 华氏 = (摄氏温度 × 9/5) + 32
System.out.print("请输入摄氏温度:" );
double t = scanner.nextDouble( );
double ht = (t * 9 / 5) + 32;
System.out.println("转成华氏温度:"+ ht );
}
}
算术运算符
- 大部分都是正常使用
- +法可以做字符串拼接
- /法 整数相除取整
- ++ 前++ 后++用法
关系运算
- 字符串只能比较相等或不等,不能比较大小
逻辑运算
- 短路 &&,|| 的用法
赋值运算
- += 和拆开写 什么区别
- 例如: s += 1 和 s = s + 1
三目运算
- 数据类型 变量 = 判断式子 ?前面对执行这里 : 前面错执行这里 ;
Scanner是固定格式,照着写
敲代码的技巧: 善用idea的提示,单词不用敲完! 善用快捷键(复制一行,删除一行,注释一行,快速换行,生成变量)
费曼学习法! 讲代码!!