大数据 -- Java基础语法1

        今天还是学习Java的一天,虽然天空飘起了小雨,窗外灰蒙蒙的,但依然不能降低我对学习的热情。

        上课的老师还是那个讲的特别细致的老师,有的同学调侃老师比兰州拉面还要细,哈哈。以下是今天老师讲解的内容:

1、变量:在程序的执行过程中,其值可以发生改变的量叫变量。
    定义变量的格式:(两种命名方式)
  (1)、数据类型 变量名 = 初始化值;
  (2)、数据类型 变量名;
              变量名 = 初始化值;

2、数据类型:(有2种数据类型)
 (1)、基本数据类型(有8种,从小到大排序)

                      所占存储空间               所能表示的数据范围
         byte           1字节                              -128~127
        short           2字节                          -2^15~2^15-1
          int             4字节                          -2^31~2^31-1
        long            8字节                          -2^63~2^63-1
        float            4字节                -3.403*10^38~3.403*10^38
      double          8字节                -1.798*10^308~1.798*10^308
        char            2字节               
      boolean        1字节 
 (2)、引用数据类型(3种)

                类 、接口 、数组    

                  

 3、类型转换:

        A 、自动类型转换:
        byte ,short ,char在参与运算的时候会自动提升到int类型;
        由大的数据类型接收小的数据类型,会自动转换,不会报错。


        B 、强制类型转换
        由小的数据类型接收大的数据类型会报错,接收不了,这时候需要强制类型转换;
                格式:目标数据类型 目标变量名 = (目标数据类型)要转换的数值/变量

    一般建议,最好不要随意使用强制类型转换,容易造成数据精度的损失。
        (1)、容量大的数据类型转换为容量小的数据类型时,要加上强制转换符,但可能造成精度     降低或溢出;使用时要格外注意。
        (2)、有多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一种数据类型,然后再进行计算。

我们来做一道题目:        

byte  b1 = 3 , b2 = 4 , b ;

b = b1 + b2 ;

b = 3 + 4 ;

       哪句是编译失败的呢?为什么呢?

       答案是 b = b1 + b2 ; 错了,我相信聪明的你肯定做对了。而这就要说到变量相加和常量相加的不一样了:
       1、变量相加首先会提升数据类型,然后再相加赋值,如果接收的数据类型范围小于计算结果后的数据类型范围,报错,不能赋值。
       2、常量相加,会先进行计算,计算完后看看在不在接收的数据类型范围内,如果在,直接赋值,如果不在,报错。

这里b1b2相加就是变量相加,两者提升到int类型,再赋值给byte类型的b肯定就出错了。                                                               

4、运算符:(6种)
 (1)、算术运算符:  +   ,  -   ,  *    ,   /    ,   %

        最基本的运算符了吧。。

int a1 = 4;
    int b1 = (a1++)+(++a1)+(a1*10);
      //b1 =   4  +  6  + 6*10 = 70
      //      a1=5   a1=6    a1=6

结果:a1 = 6
     b1 = 70 

 (2)、赋值运算符:  =   ,+=  , -=   , *=    , /=    , %

        =  为基本的赋值运算符,其他的为扩展的赋值运算符。

 (3)、比较运算符: ==  , >   , <    , >=   , <=   ,  !=

        比较运算符的结果都是boolean型,也就是要么是true,要么是false。
        比较运算符 “ == ” 不能误写成 “ = ”。


 (4)、逻辑运算符:  &   ,  |   ,   ^   ,  !     , &&  ,   ||

         逻辑运算符的两边放的是boolean类型的值,计算的结果也是一个boolean类型的值。

         &:  参与运算的时候,两边有false,则false,两边都做运算。
         | :  参与运算的时候,两边有true,则true,两边都做运算。
         ^:  参与运算的时候,相同为false,不同为true,两边都做运算。
         ! :  将true变成false,false变成true。

       && :  短路与,结果和单个与结果一样,有false则false,但是执行的东西不一样,
                当 && 左边的表达式结果为false的时候,结果是false,右边不执行。
        ||   :  短路或,结果和单个或结果一样,有true则true,但是执行的东西不一样,
            当 || 左边是true的时候,右边不执行,结果是true。


 (5)、位运算符:      &   ,  |   ,   ^   ,  ~    , <<   ,   >>    ,>>>

        <<: 左移,二进制左移,右边用0补齐,多出来的丢弃
        >>: 右移,最左边最高位是0用0补齐,最高位是1就用1补齐,多出来的丢弃。
        >>>: 无符号右移,无论左边最高是0还是1,都用0补齐,多出来的丢弃。

        

        由于数据在计算机中参与运算的都是补码,而想要知道补码,就得知道反码,原码,就得求出二进制。
请用二进制的形式计算3和4的&、|、^、~结果:

    (byte)3的二进制: 00000011   、    (byte)4的二进制: 00000100
          3的补码:  00000011   、          4的补码:  00000100   (3和4都是正数)

       1、 & 运算: 有0则0
             00000011
        &   00000100
        ---------------
            00000000             结果是:  0

        ====================================
       2、 | 运算: 有1则1
            00000011
        |   00000100
        --------------
            00000111             结果是: 7

        ====================================
       3、 ^ 运算: 相同则0,不同则1
             00000011
        ^   00000100
        --------------
            00000111             结果是: 7

        ====================================
       4、 ~ 运算: 1变成0,0变成1
            00000011
        ~
        -------------
            11111100  (这是补码)

        已知补码求原码:
        补码:     11111100
        反码:     11111011 (11111100 - 1)
        原码:     10000100           结果是: -4

请用最有效率的方式写出计算2乘以8的结果:(这里就有一个小技巧了:16 = 2*8 = 2*2^3)

System.out.println(2<<3); 


 (6)、三目运算符:

(关系表达式)  ?  表达式1  :  表达式2  ;

        如果关系表达式的结果为true,运算后的结果是表达式1;
        如果关系表达式的结果为false,运算后的结果是表达式2;

        又是充实的一天,明天继续奋斗,加油!

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值