【Java】——数据类型与运算符详解

Java数据类型与运算符

1.变量和类型

(1)变量指的是程序运行时可变的量,相当于开辟一块内存空间来保存一些数据。

(2)类型则是对变量的种类进行了划分,不同的类型的变量具有不同的特性。

2.变量类别:

(1)整型变量——int 变量名 = 初始值

        在Java中,一个int变量占4字节,和操作系统没有直接关系——4个字节可表示的数据范围是-2^31~2^31-1(大概-21亿~+21亿)

//1.整型变量: int 变量名 = 初始值;
    public static void main(String[] args) {
        int num = 10;
        System.out.println(num);
        //查看Java中的整型数据范围
        System.out.println(Integer.MAX_VALUE);//2147483647
        System.out.println(Integer.MIN_VALUE);//-2147483648
    }

(2)浮点型变量——float 变量名 = 初始值

         Java中long型占8个字节——数据范围-2^63~2^63-1

//2.长整型变量: long 变量名 = 初始值;
    public static void main(String[] args) {
    long num = 10L;//定义一个长整形变量,初始值写作10L——表示一个长整型的数字
        System.out.println(num);
}

(3)双精度浮点型变量——double  变量名 = 初始值

        在Java中,int除以int的值仍然是int(会直接舍弃小数部分)

//3.双精度浮点型变量——double 变量名 = 初始值;
public static void main(String[] args) {
    double num = 1.0;
    int num1 = 5;
    int num2 = 2;
    double num3 = 5;
    double num4 = 2;
    System.out.println(num);
    System.out.println(num1 /num2);//2
    System.out.println(num3 / num4);//2.5
}

(4)单精度浮点型变量——float 变量名 = 初始值
         在Java中float占4个字节

   //4.单精度浮点型变量——float 变量名 = 初始值
    //在Java中float占4个字节
    public static void main(String[] args) {
        float num = 1.0f;
        System.out.println(num);
    }

(5)字符类型变量——char 变量名= 初始值
         在计算机中的字符本质上是一个整数,在C语言中使用ASCII表示字符,在Java中使用Unicode表示字符——因此一个字符占用两个字节。
         Java中使用  单引号 + 单个字母  的形式表示字符字面值

    //5.字符类型变量——char 变量名= 初始值
    public static void main(String[] args) {
        char ch1 ='A';
        char ch2 = 97;
        //使用一个字符可以表示一个汉字
        char ch3 =  '熊';
        System.out.println(ch1);
        System.out.println(ch2);
        System.out.println(ch3);
    }

(6)字节类型的变量——byte 变量名 = 初始值
         字节类型表示的也是整数——只占一个字节——表示范围-2^7~2^7-1(-128~127)

    //6.字节类型的变量——byte 变量名 = 初始值
    public static void main(String[] args) {
        byte value = 0;
        System.out.println(value);
    }

(7)短整型变量——short 变量名 = 初始值
        short只占2个字节——表示范围-2^15~2^15-1(-32768~23767)

    //7.短整型变量——short 变量名 = 初始值
    public static void main(String[] args) {
        short value = 1;
        System.out.println(value);
    }

(8)布尔类型变量——boolean 变量名= 初始值
        boolean类型的变量只有两种取值:true——真;false——假
        boolean类型有些JVM的实现是占1个字节,有些是占1个bit,没有明确规定。

    //8.布尔类型变量——boolean 变量名= 初始值
    public static void main(String[] args) {
        boolean flag = true;
        System.out.println(flag);
    }

 (9)字符串类型变量——String 变量名= “初始值”;——属于引用类型
         Java使用  双引号 + 若干字符  表示字符串面值

   //9.字符串类型变量——String 变量名= “初始值”;——属于引用类型
   public static void main(String[] args) {
        String a= "hello";
        String b = "jijixiong";
        //Java中的字符串的 + 操作,表示字符串拼接
        String c = a + b;//hellojijixiong
        System.out.println(c);
    }

3.类型转换

(1)不同数字类型的变量之间赋值,表示范围更小的类型能隐式转换成范围较大的类型 。

(2)如果需要把范围大的类型赋值给范围小的,需要强制类型转换,但可能会反生精度丢失。

(3)将一个字面值常量进行赋值的时候,Java会自动针对数字范围进行检查。

4.数值提升

     不同类型的数据缓和运算,范围小的会提升成范围大的;

     对于short byte这种比4 个字节小的数据类型,会先提升成4个字节的int,在参与运算。

     当int和long混合运算的时候,int会提升成long ,——得到的结果仍然是long类型——需要使用long类型的变量来接收结果, ——如果非要用int来接收结果,就需要使用强制类型转换。

(1)int 和 long 混合运算

//(1)int 和 long 混合运算
public static void main(String[] args) {
  int a = 20;
  long b = 20;
  //int c = a + b;编译出错,需将long 转换成 int ,但会丢失精度
    long d = a + b;
    System.out.println(d);

}

(2)byte 和 byte的运算

byte 和byte是相同的类型,但在运算时会出现编译错误,

原因:虽然a 和 b都是byte,但是在计算 a + b 会先将 a 和 b 都提升为int,在进行计算, 得到的结果也是int,——所以再将其赋值给c会出现错误。 由于计算机的CPU通常是按照 4个字节为单位从内存中读写数据, 为了硬件上实现方便,诸如byte 和 short 这种地域4各个字节的类型,——在计算时会先提升为int,在进行计算。

    public static void main(String[] args) {
        byte a = 10;
        byte b  = 20;
        //byte c = a + b;编译报错,不兼容的类型,从int 转换到 byte 可能会发生精度丢失
        byte c = (byte)(a + b);
        System.out.println(c);
    }
 

4.运算符

 

运算符
 算术运算符

(1)基本四则运算符  +     -     *     /     %

(2)增量赋值运算符 +=   -=   *=   /=

(3)自增/自减运算符 ++     --

 关系运算符==   !=   <     >    <=   >=
 逻辑运算符&&  ||   !   
位运算符 &(按位与)   |(按位或) ~(按位取反)  ^(按位异或)
移位运算>> (右移,左侧补符号位)   <<(左移,右侧补0)      >>>(无符号右移,左侧补0)
条件运算符表达式1 ? 表达式2 : 表达式3

Java中对数据的操作的最小单位不是字节,而是二进制位。

(1)如果取表达式的返回值,则前置自增的返回值是自增之后的值,后置自增的返回值是自增前的值

(2)关系运算符的表达式返回值都是boolean类型;

(3)逻辑运算符的操作数(操作数往往是关系运算符的结果)和返回值都是boolean类型;

(4)位操作表示按二进制位运算,计算机中都是用用二进制来表示数据的(01构成的序列),按位运算就是按照二进制位的每一位依次进行计算。

         当  &  和 | 的操作数为整数(int ,short,long,byte)的时候,表示位运算;当操作数为boolean的时候,表示逻辑运算。

(5)条件运算符:当表达式1 的值为true时,整个表达式的值为  表达式2  的值;

                               当表达式1 的值为false时 ,整个表达式的值为  表达式3 的值

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值