导包
如何引入系统所提供的类库,工具!
在.java文件的非注释第一行编写引入工具包的代码:
格式:
import 包名.类名;
在控制台中接收用户键盘的输入 熟练掌握
步骤1. 在导包的位置, 导入 java.util.Scanner包
例如: import java.util.Scanner;
步骤2. 在main方法中, 创建接收用户输入的特殊变量
例如: Scanner input = new Scanner(System.in);
步骤3. 在完成步骤12的前提下, 在需要接收用户输入的位置, 加入 如下代码:
出了char以外, 八种基本数据类型, 都可以通过input.nextXxx();来得到
int a = input.nextInt();
input.nextDouble();
input.nextXxx();
接收用户输入的一段文本 :
input.next();
或
input.nextLine();
注意: 接收用户输入的方法, 并不会主动的去提示用户 应输入 ,
建议我们在使用nextXxx之前, 打印一句提示性的文本 :
- 如果需要接收多个参数, 则重复执行步骤3 即可
例如:
System.out.println("请输入");
练习求和:
通过Scanner接收两个int类型的数 , 并将其相加后 输出到控制台
如何产生一个伪随机的数字 熟悉
步骤1. 在导包的位置, 导入 java.util.Random包
例如: import java.util.Random;
步骤2. 在main方法中, 创建产生伪随机数的特殊变量
例如: Random r = new Random();
步骤3. 在完成步骤12的前提下, 在需要随机数字的位置, 使用
变量.nextInt(最大范围) ,获取一个随机数字
例如获得一个0-10的整数数字
int a = r.nextInt(11);
案例:
猜数字:
请用户输入一个0-5的数字 ,
我们通过系统, 获得一个伪随机数(0-5) , 如果与用户输入的相同, 则表示用户猜对了 !
如果输入不同, 则表示猜测错误 !
代码:
import java.util.Random;
import java.util.Scanner;
class Demo3{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
Random r = new Random();
System.out.println("-------------- 欢迎访问猜数字游戏 -----------");
System.out.println("-------------- 请输入一个0-5的数字 -----------");
//接收用户输入的内容
int a = input.nextInt();
//随机产生一个0-5的数字
int b = r.nextInt(6);
System.out.print("系统产生的数字为:");
System.out.print(b);
System.out.println("结果为:");
System.out.println(a==b);
}
}
运算符和表达式
算数运算符 重点
加法运算(+) 1+1=2
减法运算(-) 1-1=0
乘法运算(*) 1*1=1
除法运算(/) 10/3 = 3
取余运算(%) 10%3 = 1
在进行算数运算时 , 需要注意的地方:
整数进行除法运算时, 有取整特性, 小数点后的部分会被舍弃 !
整数运算中0不能为除数 , 浮点型运算时, 0.0是可以做为除数的 ,但是结果是无穷
练习:
提示用户输入一个整数值, 这个值是描述的一个秒数 !
我们将用户输入的秒, 进行运算, 得到共有几个小时, +几分钟 +几秒 ,并依次打印输出
例如: 3600秒 等于 1小时0分0秒
7261秒 等于 2小时 1分 1秒
1. 用户输入的秒 s
将秒s 转换为分钟m
- 通过除法运算 ,得到共有多少分钟
- 通过取余运算 ,得到剩余多少秒
将分钟m 转换为小时h
- 通过除法运算 , 得到共有多个小时
通过取余运算 , 得到剩余多少分钟
字符串连接符 重点: 如果加号的任意一边出现了字符串 , 这时这个+号转换为了字符串连接符
字符串连接符 , 会将所有的数据 同化为字符串 !
“1”+1 = “11”
1+1+”1” 和 “1”+1+1 的区别 :
1+1+”1”=2+”1” = “21”
“1”+1+1 =”11”+1 = “111”
关系运算符(比较运算) 重点
返回的结果为boolean类型, true表示真 ,false表示假
: 大于号: 判断左边的值是否大于右边的值
< : 小于号: 判断左边的值是否小于右边的值
= : 大于等于: 判断左边的值是否大于等于右边的值
<= : 小于等于: 判断左边的值是否小于等于右边的值
== : 双等号: 判断两边的值是否相等
!= : 非等号: 判断两边的值是否不想等
举例:
2>1 的结果为: true
1>2 的结果为: false
1<1 的结果为: false
1!=2的结果为: true
1==1的结果为true
10>=10的结果为true
10<=10的结果为true
++和–运算符 重点
++和–只能应用到变量上 !
++ : 表示自身加一(自增1)
– : 表示自身减一(自减1)
++和–在使用中, 可以放在变量的前面或后面 :
例如:
int a = 10;
a++;
System.out.println(a);//a是11
int a = 10;
++a;
System.out.println(a);//a是11
int a = 10;
a--;
System.out.println(a);//a是9
int a = 10;
--a;
System.out.println(a);//a是9
自增和自减符号 放在前后的区别:
放前面: 先自增或自减 , 然后参与当前行运算
放后面: 先参与当前行运算, 再自增或自减
面试的回答:
程序员对于自增和自减放前后的直观感受为:
放前面, 先自增或自减, 再参与当前行运算 .
放后面, 先参与当前行运算, 后自增或自减 .
内部的实现原理是:
放前面, 是直接对自身进行了自增或自减操作 ,没有什么特殊的 .
放后面, 其实是再内存中进行了值的复制 (创建了一个新的备份的值)
直接对原值进行自增或自减, 然后拿原来备份的值参与当前行的运算 !
++案例:
++放在前面时 , 表示自身立即进行加一, 再参与当前的运算
int a = 10;
System.out.println(++a);//结果为 11
++放在后面时 , 表示自身先拿旧的值参与当前的运算, 运算结束后, 再对自身进行加一
int a = 10;
System.out.println(a++);//结果为 10
System.out.println(a);//结果为 11
–案例:
–放在前面时 , 表示自身立即进行减一, 再参与当前的运算
int a = 10;
System.out.println(--a);//结果为9
–放在后面时 , 表示自身先拿旧的值参与当前的运算, 运算结束后, 再对自身进行减一
int a = 10;
System.out.println(a--);//结果为 10
System.out.println(a);//结果为 9
练习, 求结果:
求下题变量b的值
int a = 10;
int b = a+++a+1;
b=22求下题变量b的值
int a = 10;
int b = ++a+a+1;
b=23
数据类型 变量名 = 初始化值;
逻辑运算符 重点
逻辑运算是连接boolean类型表达式的
int a = 10;
与 & 并且
如果 a大于3 并且 小于15 , 则 吃鸡
a=1
或 |
如果 a大于3 或 a小于15 , 则 吃鸡
a=5
非 !
短路与 &&
如果 a大于3 并且 小于15 , 则 吃鸡
短路或 ||
如果 a大于3 或 a小于15 , 则 吃鸡
与:
true&true : true
true&false: false
false&true: false
false&false: false
特点: 只有两边都为true时 , 结果才为true
或
true|true : true
true|false: true
false|true: true
false|false: false
特点: 只有两边都为false时 , 结果才为false
非
非真即假
短路与 &&
如果逻辑运算符的左边结果为false, 则右边不再参与运算, 结果为false
短路或 ||
如果逻辑运算符的左边结果为true , 则右边不再参与运算, 结果为true
移位运算符 熟悉
是针对二进制位进行移动的运算符 !
左移 <<
格式: 变量<<移动的位数
例如:
int a = 10;
a<<1; 结果为20
算数右移(带符号右移) >>
格式: 变量>>移动的位数
例如:
int a = 10;
a>>1; 结果为5
右移以后, 左边空出的符号位, 使用原符号位补齐
逻辑右移(无符号右移) >>>
格式: 变量>>>移动的位数
例如:
int a = 10;
a>>>1; 结果为5
右移以后, 左边空出的使用0补齐
注意: 移位运算时, 如果移位的值超出了当前类型的总位数长度, 会自动取余总长度
例如:
int a = 10;
a = a<<33;//相当于: a = a<<(33%32)
结果为20
位运算符 熟悉
位运算符 对于两个操作数中的每一个二进制位进行运算
按位取反 ~
将二进制中的每一个数字 进行取反操作: 0变为1 , 1变为0
int a = 10;
~00000000 00000000 00000000 00001010
-----------------------------------------------
11111111 11111111 11111111 11110101
按位与 &
两个二进制位数进行与运算时, 只有都为1时, 结果才为1
特点: 任何数, 与上自身 , 结果都为自身 !
int a = 10;
int b = 48;
00000000 00000000 00000000 00001010
&00000000 00000000 00000000 00110000
------------------------------------------------
按位或 |
两个二进制位数进行或运算时, 只有都为0时, 结果才为0
int a = 10;
int b = 56;
00000000 00000000 00000000 00001010
|00000000 00000000 00000000 00111000
------------------------------------------------
00111010
按位异或 ^
两个二进制位数进行异或运算时 , 只要两个数字相同, 结果为0, 不相同为1
int a = 10;
int b = 56;
00000000 00000000 00000000 00001010
^00000000 00000000 00000000 00111000
------------------------------------------------
00000000 00000000 00000000 00110010
^00000000 00000000 00000000 00111000
------------------------------------------------
00000000 00000000 00000000 00001010
特性:
任何一个数 异或 同一个数字两次, 得到的是这个数本身 !
因为这个特性, 异或经常参与加密操作
赋值运算符 – 熟练掌握
= 赋值 : 把等号右边的值或运算结果 赋值给左边
+= 加等赋值 : 左边的变量加上右边的值, 结果赋值给左边的变量
案例:
int a = 10;
a+=10;//相当于 a = a+10;
-= 减等赋值 : 左边的变量减去右边的值, 结果赋值给左边的变量
案例:
int a = 10;
a-=10; //相当于 a = a-10;
*= 乘等赋值 : 左边的变量乘以右边的值, 结果赋值给左边的变量
案例:
int a = 10;
a*=10; //相当于 a = a*10;
/= 除等赋值 : 左边的变量除以右边的值, 结果赋值给左边的变量
案例:
int a = 10;
a/=10; //相当于 a = a/10;
%= 模等赋值 : 左边的变量模以右边的值, 结果赋值给左边的变量
案例:
int a = 10;
a%=10; //相当于 a = a%10;
面试题:
a+=10 与 a = a+10的区别:
a+=10 效率高, 因为只有一个运算符, 只进行了一次运算
a=a+10 进行了两次运算 !
三目运算符 (三元运算符)(条件运算符)
格式: boolean表达式?表达式1:表达式2;
运算:
如果boolean表达式的结果为true , 则这个三元运算符运算的结果位表达式1的值, 否则这个三元运算符运算结果为表达式2的值!
-------------------
举例:
某公司 根据员工的业务完成数量, 进行员工等级的划分 , 共分为2个等级(1级 ,2级) , 当员工的完成业务数量达到10000时 , 则位1级员工, 否则位2级员工!
员工: 业务量位 9999 , 通过程序判断 , 这个员工是几级员工 ?
int a = 9999;
int b = a>=10000?1:2;
保持class名称与文件名称一致的方式
通过public class 声明类