1. 数据类型转换
-
自动类型提升 :
小---->大 ===> 可以正常存放,但是可能会造成内存的浪费。 -
强制类型转换 :
大---->小 ===> 不能发生,有可能会造成损失精度。
小范围类型 变量名 = (小范围类型)大范围类型数据。 -
由小到大:
byte – >short --> int —> long --> float —> double。注意: 如果存储多种类型的数据参与运算,结果类型为参与运算的最大类型 如果结果类型为<int类型,最终会自动提升为int类型 如果为byte,short,char赋值时候,把int类型的常量,只要范围允许可以成功赋值。 boolean不参与类型转换。
2. 引用数据类型的使用
- 导包 : 指明要使用类型的位置。import 包名.类名,定义在类的上面。
- 引用数据类型: 引用|变量名 = new 引用数据类型()。
- 使用功能: 引用.功能名字();
(1)Scanner :接收用户键盘输入的内容。
-
导入
import java.util.Scanner;
-
创建 Scanner类型的引用
Scanner sc = new Scanner(System.in);
-
使用功能
引用.nextInt() **** 接收用户键盘输入int类型的内容 引用.nextByte() **** 接收用户键盘输入byte类型的内容 引用.nextShort() **** 接收用户键盘输入short类型的内容 引用.nextLong() **** 接收用户键盘输入long类型的内容 引用.nextDouble() **** 接收用户键盘输入double类型的内容 引用.nextFloat() **** 接收用户键盘输入float类型的内容 从有效字符开始接受,遇到enter建结束功能 引用.next() ****接收用户键盘输入String类型的内容 从有效字符开始接收,遇到空格等不接受,遇到enter建结束功能 引用.nextLine() ****接收用户键盘输入一整行的String类型的内容 遇到enter建结束功能 注意: 如果在 nextLine上面存在系列的next功能,需要处理遗留enter问题.
(2)Random : 产生随机数。
-
导包
import java.util.Random;
-
创建Random类型的引用
Random ran = new Random();
-
使用功能
ran.nextInt() 随机产生int范围内的整数 ran.nextInt(整数n) 随机[0,n)整数 ran.nextDouble() [0.0,1.0) 随机产生double范围的小数
-
公式总结 :
随机整数: [0,n) ran.nextInt(整数n) [0,n] ran.nextInt(n+1) [min,max) ran.nextInt(max-min)+min ran.nextInt(max)->[0,max) ran.nextInt(max)+min->[min,max+min) ran.nextInt(max-min)+min->[0,max-min)+min -->[min,max) [min,max] ran.nextInt(max-min+1)+min 注意 : 伪随机数。
3. 运算符
操作数 : 运算符左右两边的数据。
表达式 : 运算符连接操作数整体称为表达式。
语句 : 语句以;结束。
-
算数运算符 :
+ - * / % ++ –+: 1)正号 (省略)。 2)加法运算。 3)字符串的连接符: 当+左右两边一旦出现""字符串,+就做为字符串连接符,把左右两边的数据拼接成为一个字符串。 -: 1)负号。 2)减法运算。 %: 取余数 | 取余|模以。 当第一个操作数<第二个操作数,结果为第一个操作数。
-
赋值运算符 :
基础赋值运算符 :=
=是java中唯一一个自右向左运算的符号,优先级最低。扩展赋值运算符(算数运算符+基础 赋值运算符 ) += a=a+10;==> a+=10; -= *= /= %= 优点: 执行效率快 自动做强制类型转换 注意: 编译期间编译器会自动把可以实现的位置优化成为扩展赋值运算符*
-
比较运算符|关系运算符:
> < >= <=
byte,short,int,long,float,double,char
== !=
基本,引用结果都为boolean类型
-
逻辑运算符:
& 与 两个都为真true,结果才为true,一个为false就是false。 | 或 一个为true就是true,两个都为false才是false。 ! 非 取反 !true -> false。 !false -> true。 ^ 异或 相同为false,不同为true。 短路 : 如果左边的操作数的值能够决定最终表达式的结果 ,第二个操作数不会执行。 && : 两个都为真true,结果才为true,一个为false就是false。 || : 一个为true就是true,两个都为false才是false。 注意: 操作数必须为boolean,值为boolean的表达式 建议使用短路运算符
-
位运算符:
把操作数转为二进制,然后根据运算符的规则运算,最终得到的结果转为十进制。& : 同一位的两个数,两个都为1才是1,一个为0就是0。 | : 同一位的两个数,一个为1就是1,两个都为0才是0。 ^ : 同一位的两个数,相同为0不同为1。 注意 : 以上三个左右两边为boolean类型数据就作为逻辑运算符存在。 >> 右移 把第一个操作数转为二进制,向右移动第二个操作数个位数,移出的位数直接忽略不计,剩余的转为十进制。 << 左移 把第一个操作数转为二进制,向左移动第二个操作数个位数,空位补0,结果转为十进制。 总结规律 : 右移 :/2的次方 8>>3 ==> 8/2^3 左移 :*2的次方 8<<3 ==> 8*2^3 注意 : 建议使用位移运算符代替乘除,效率高。
-
条件运算符:
条件表达式 ? 值1 : 值2 ;
条件表达式 : 值为boolean类型的表达式执行流程: 1.计算条件表达式,得到boolean结果。 2.为true,结果为值1。 为false,结果为值2。
-
一元运算符|单目运算符 :
操作数只有一个 + -(正负号) ++ --。++ -- 一元运算符 a++ ++a a-- --a ++ 自增 : 自身+1 a++==> a=a+1 -- 自减 : 自身-1 a-- ==> a=a-1 规律 : 只操作自己 : ++放在操作数的前面后面都是自身+1 --放在操作数的前面后面都是自身-1 影响其他结果 : (赋值,表达式,输出) ++--放在操作数前面,先+1|-1,再去运算 ++--放在操作数后面,先去运算,再进行+1|-1
-
二元运算符|双目运算符 :
操作数有两个 + - * /。 -
三元运算符|三目运算符 :
操作数有三个条件运算符。