2-Java数据类型及转换细节、运算符

常量:常量就是程序在运行过程中,其值不能改变的量。
  • 类别:整数常量、小数常量、布尔常量、字符常量(单个字符用单引号)、字符串常量(多个字符用双引号
变量:变量就是在程序运行过程中,其值可以发生改变的量。变量就是一个存储数据的容器。

Java中数据类型有两种:
  • 基本数据类型
  • 引用数据类型
Java中的八种基本数据类型:选择数据类型的原则,在满足需求的情况下,能小则小。
  • 整数的数据类型:
    • byte,一个字节八位,2^8 = 256,即-128~127,0在Java中属于正数
    • short,短整型,16位bit,2^16 = 65535
    • int,整型,32bit
    • long,长整型,64bit
    • 注意:如果一个整数没有任何修饰,默认是int类型的;如果是long,则需要在数字后加L
  • 小数的数据类型:
    • float,单精度浮点型,32bit,保留小数位7位
    • double,双精度浮点型,64bit,保留小数位16位
    • 注意:如果一个小数没有任何修饰,默认是double类型;如果是float,则需要加上f
  • 布尔类型:
    • boolean:true和false,1字节或4字节
      • 如果使用boolean声明一个基本类型的变量,4个字节
      • 如果使用boolean声明一个数组类型,那么每个数组的元素占一个字节
  • 字符类型:
    • char,16bit,字符的存储原理是利用编码表

数据类型转换:
  • 小数据类型——>大数据类型,自动转换
  • 大数据类型——>小数据类型,需要强制转换
    • 强制格式:(小数据类型)大数据类型
    • integer.toBinaryString( ):数据转为二进制方法
    • 如:int i = 128; byte b = (byte) i ;System.out.printIn(b);//128——>-128,并不是127,原理如下负数存储原理:
    • 转换注意
      • 凡是byte、short、char数据类型数据,在运算时,都会自动转换成int类型,然后再运算
      • 两个不同数据类型的数据在运算时,结果取决于打的数据类型

二进制数据的最高位1为负数,最高位0是正数。负数存储的是补码
负数的存储过程:

如何通过补码求出真实的数据:就是存储过程的逆过程(-1、取反、加负号)。

连接符:让任何的数据都能与字符串进行连接。
%:在Java中,做取模运算时,结果的符号取决于,被除数的符号。
i++:后自增在jvm的运行原理

  • i的值得变化过程:i = 0 ——>1——>0
+=赋值运算符,在编译时,jvm会自动进行强制类型转换,不需要手动转换了。
  • 如:byte b1 = 1;byte b2 = 2;byte b2 = b1 + b2;会报错,需要手动强制转换
  • 但是,b2+=b1;就不会报错
比较运算符:两个不同类型的数据是可以比较的,但是,两个类型必须兼容
逻辑运算符:&与|或^异或&&短路与||短路或
位运算符(二进制数按位的操作):&|^异或~取反
异或:一个操作数A异或同一个操作数两次,那么结果还是A。一般用于加密
位运算符可能会出现的笔试题目:
    1.交换两个变量的值,不准出现第三方变量。
       方式1: 定义第三方变量。
        int temp = a;  //3 
        a = b; //a = 5 
        b = temp; 

       方式2:相加法, 缺点: 两个int类型的数据相加,有可能会出现超出int的表示范围。

        a = a+b;  // a =8
        b = a-b; //b = 8 - 5 = 3
        a = a-b; // a = 8 - 3 = 5

       方式3: 可以使用异或。 缺点: 逻辑不清晰。
        a = a^b;  // a = 3^5
        b = a^b;  // b = (3^5)^5 = 3
        a = a^b; //  a = (3^5)^3 = 5
    2.取出一个二进制数据的指定位数。要求读取该二进制数据的低4位
            00000000-00000000-00010100-01001101
        &  00000000-00000000-00000000-00001111
        ------------------------------------------
            00000000-00000000-00000000-00001101

移位运算符
x<<y左移:结果就是x * 2^y,不会改变符号
x>>y右移:结果就是x / 2^y,所以正数用0补,负数用1,确保符号不变
x>>>y无符号右移:结果就是,不管正负数,都用0补,可能改变符号
笔试题目:以最高的效率计算2乘以8的结果 2<<3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值