数据类型转换:
首先我们来了解一下数据类型转换:对应类型的数据赋值给对应类型的变量.
对应类型的数据赋值给对应类型的变量
        自动类型提升 : 
             小---->大 ===> 可以正常存放,但是可能会造成内存的浪费
         
         强制类型转换 : 
             大---->小 ===> 不能发生,有可能会造成损失精度
             小范围类型 变量名 = (小范围类型)大范围类型数据;
             
         注意: 如果存储多种类型的数据参与运算,结果类型为参与运算的最大类型
               如果结果类型为<int类型,最终会自动提升 为int类型
               如果为byte,short,char赋值时候,把int类型的常量,只要范围 允许可以成功赋值
               boolean不参与类型转换
byte -- >short --> int ---> long --> float ---> double
两个工具
一,Scanner
引用数据类型的使用 : 
         1.导包 : 指明要使用类型的位置
             import 包名.类名;
             定义在类的上面
         2.引用数据类型 引用|变量名 = new 引用数据类型();
         3.使用功能
             引用.公共名字();
     
     Scanner : 接收用户键盘输入的内容
         1.导入 
             import java.util.Scanner;
             
         2.创建 Scanner类型的引用
             Scanner sc = new Scanner(System.in);
         
         3.使用工能
             引用.nextInt()   **** 接收用户键盘输入int类型的内容
             引用.nextByte()
             引用.nextShort()
             引用.nextLong()
             引用.nextDouble() ****
             引用.nextFloat()
             从有效字符开始接受,遇到enter建结束功能
             引用.next() 接收用户键盘输入String类型的内容
                 从有效字符开始接收,遇到 空格等不接受,遇到enter建结束功能
             引用.nextLine() 接收用户键盘输入一整行的String类型的内容
                 遇到enter建结束功能
     
     注意: 不要定义与jdk中类型同名,同包的类
           如果在 nextLine上面存在系列的next工能.,需要处理遗留enter问题

二,Random
Random : 产生随机数
         1.导包
             import java.util.Random
         2.创建Random类型的引用
             Random  ran = new Random();
         3.使用功能
             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
         
         注意 : 伪随机数

运算符(operator)

赋值运算符:=
算术运算符:+ - * / % ++ --
关系运算符:< > <= >= == !=  instanceof
     1.关系运算符结果只能是一个boolean类型的变量
     2.> < <= >= 基本类型中 除了boolean之外的其他数据类型不能比较引用类型
     3.!= ==既可以比较基本数据类型(包含boolean类型)也可以比较引用类型
     instanceof 只能用来比较引用类型 某个变量是否是某个具体类型
逻辑运算符:| & ! ^ || &&
     1.逻辑运算符左右两边的操作数只能是boolean值
     2.& |  ^ 基本碰见就是位运算符
     3.&和&& 两个操作数都为true结果为ture 其他都为false
     4.| 和 || 两个操作数有一个为true 其结果为ture,两个都为false结果才为false
     5.!ture-->false  !false-->ture
     ^相同为false 相异为ture
     6.&和&&的区别:运算结果一致,但是&&效率高 因为左边操作数如果为false 右边不参与运算
     7.|和|| 的区别:运算结果一致,但是||效率高 因为左边操作数如果为ture 右边不参与运算
扩展运算符:算数+赋值  位+赋值
     优点:提升编译速度 提升开发效率 能够进行自动类型转换
      缺点:不利于阅读
条件运算符:?:
     表达式1?表达式2:表达式3
位运算符: & | ^ ~ >> << >>>
     位运算符是通过二进制进行计算的 所以效率最高
  









