JAVA的数据类型与变量和运算符和位运算符

目录

1.数据类型

 2.JAVA的变量创建:

 3.类型转换

 4.类型提升

5. 字符串类型

6.算术运算符

7. 关系运算符和逻辑运算符

 8.位运算符

 9.移位运算:


1.数据类型

      基本数据类型:         

        JAVA有以下八种基本数据类型:

        

        引用数据类型:

              比如:

              数组,String,类,接口......

        值得注意的是:

        1.无论在32位机器还是在64位机器上。Java的八种数据类型所占字节都是固定的。

        2.整型默认为 int 类型,浮点型默认为 double 类型。

        

        2.JAVA的变量创建:

         

        在 Java 中,数字字面量默认为 int 类型。当一个数值超出了 int 类型的范围时,需要使用 long 类型来存储它。为了明确指定一个数值是 long 类型,需要在数值后面加上字母 L(大写或小写都可以)。

        

         并且,局部变量使用之前一定要初始化,不然编译会报错!

        

        浮点型默认为 double 类型,如果想要 float 类型的变量,要在数字后面加上F

        

         3.类型转换

     自动类型转换:

        变量字节小的类型自动转换成大的字节类型。

        

 a = b;

 编译报错,long的范围比int范围大,会有数据丢失,不安全。

 b = a;

 a和b都是整形,a的范围小,b的范围大,当将a赋值给b时,编译器会自动将a提升为long类型,然后赋值。

        

 f = d; 

 double表示数据范围大,直接将 float 交给 double 会有数据丢失,不安全 。   

 d = f;

 编译器会将 f 转换为 double ,然后进行赋值。

        

 byte b1 = 100; 

 编译通过,100没有超过byte的范围,编译器自动将100转换为byte

 byte b2 = 257;

 编译失败,257超过了byte的数据范围,有数据丢失。

        强制类型转换:

        

       这里把 b 赋值给 a 时,数据范围由大到小,我们需要强制类型转换,否则编译失败。

        类型不兼容:

        

        可以看到, 强制类型转换不一定能成功,不相干的类型不能互相转换。

      4.类型提升

         int与long之间:int会被提升为long

        

        int c 那一块代码 编译出错:

         a + b  ==>  int + long  -->   long + long 赋值给int时会丢失数据

        long d 那一块代码 编译成功:       

        a + b  ==>  int + long  --->  long + long 赋值给 long  

        byte与byte的运算

        

        分析:

        byte 和 byte 都是相同类型, 但是出现编译报错. 原因是, 虽然 a 和 b 都是 byte, 但是计算 a + b 会先将 a 和 b 都提升成 int, 再进行计算, 得到的结果也是 int, 这是赋给 c, 就会出现上述错误.

        由于计算机的 CPU 通常是按照 4 个字节为单位从内存中读写数据. 为了硬件上实现方便, 诸如 byte 和 short 这种低于 4 个字节的类型, 会先提升成 int, 再参与计算.  

        正确的写法:

        

        5. 字符串类型:

        在Java中使用 String 类定义字符串类型。

        注意:

        String 的 s 要大写。

         

        打印结果:

        

         如果想打印几加几等于几,可以这样:

        

         6.算术运算符

        这里讲一些JAVA特殊的情况:

         做除法和取模时,右操作数不能为0

        

        这样是错误的。

         % 不仅可以对整型取模,也可以对double类型取模,但是没有意义,一般都是对整型取模的

        

        结果:

         

         两侧操作数类型不一致时,向类型大的提升

                

         +的左侧是int,右侧是double,在加之前int被提升为double 

        结果:

        

        7. 关系运算符和逻辑运算符

         Java 的关系运算符逻辑运算符的结果都是布尔类型(boolean),只有 true 和 false两个参数,分别代表 真,假。

        短路求值:

        && 和 || 遵守短路求值的规则:

        

        结果:

        

        计算 10 / 0 会导致程序抛出异常. 但是上面的代码却能正常运行, 说明 10 / 0 并没有真正被求值.

注意:

对于 && , 如果左侧表达式值为 false, 则表达式结果一定是 false, 无需计算右侧表达式.

对于 ||, 如果左侧表达式值为 true, 则表达式结果一定是 true, 无需计算右侧表达式.

        8.位运算符

         对于两个二进制的数字:

        按位与 &:(对应位两个都是1才为1

           按位或 | :(对应位只要有1就是1

           按位异或  ^ :(对应位相同则为0,不同则为1

           按位取反 ~: 如果该位为 0 则转为 1, 如果该位为 1 则转为 0

        9.移位运算:

        左移 << :最左侧位不要了, 最右侧补 0

            结果相当于乘以2

        右移 >> : 最右侧位不要了, 最左侧补符号位(正数补0, 负数补1)

           结果相当于除以2

        无符号右移 >>>: 最右侧位不要了, 最左侧补 0

        

        

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值