数据类型与运算符(java)

目录

 

1.八种基本类型

1.1基本类型的使用

1.2精度转换

 1.3类型转换

 1.4类型提升

2.运算符的介绍

2.1算数运算符

2.2 关系运算符

2.3 逻辑运算符 

3.位运算符

 4.条件运算符


1.八种基本类型

byte     char     short     int     long     float     double     boolean

1.1基本类型的使用

数据类型 变量名 = 初始值 ;
int     a  = 1024;
注意:每种数据类型都有大小如果超过了相应的大小则会报错
 //可以定义类型并赋值;
        int i = 1;
        short sh=127;
        float f = 123;
        byte b =127;
        char c = '帅';
        long l = 1024;
        double d = 2;
        boolean bl =true;//(boolean类型默认false)
        //也可以直接定义类型,并不赋值,但在使用的时候,如果没有赋值编译器会报错;
        int ii ;
        short shsh;
        float ff;
        byte bb ;
        char cc;
        long ll ;
        double dd ;
        boolean blbl ;

1.2精度转换

不同的类型有不同的取值范围,一旦超过了相应的范围则会丢失精度,不过有大范围的类型可以包含小类型的数值,而反之可能会丢失精度.

例:


//        int jingdu = i + sh;
//        short shshsh = i+sh;
//        System.out.println(jingdu);
//        System.out.println(shshsh);

        int jd = 3/2;
        System.out.println(jd);//此处打印1,丢失了0.5  因为jd是int类型在运算后无法保存小数,如果修改jd为double类型的话,则可以正常打印1.5

 1.3类型转换

自动类型转换即: 代码不需要经过任何处理,在代码编译时,编译器会自动进行处理 。特点:数据范围小的转为数
据范围大的时会自动进行
强制类型转换:当进行操作时,代码需要经过一定的格式处理,不能自动完成。特点:数据范围大的到数据范围小的。
 //自动类型转换
        int zd = 99;
        long dz = 100;
        zd = dz; //zd 和 dz都是整形,zd的范围小dz的范围大,当将dz赋值给zd时,有可能发生数据丢失,所以报错
        dz = zd;//此处编译器将zd提升为long类型,然后赋值

        float fff = 3.14F;
        double ddd = 5.12;
        ddd = fff; // 编译器会将fff转换为double,然后进行赋值
        fff = ddd; // double表示数据范围大,直接将float交给double会有数据丢失,不安全

        //强制类型转换
        //数据范围大的数据转换成数据范围小的类型
        zd = (int)dz;//刚刚不能转的,现在能了不过还是可能发生数据丢失

        int int1 = 1024;
        byte byte1 = 1;
        byte1 = (byte) int1;
        System.out.println(byte1);//可以打印,不过数据丢失

        boolean flag = true;
        int1 = flag; // 编译失败:类型不兼容
        flag = int1; // 编译失败:类型不兼容

 注意: 

1. 不同数字类型的变量之间赋值 , 表示范围更小的类型能隐式转换成范围较大的类型
2. 如果需要把范围大的类型赋值给范围小的 , 需要强制类型转换 , 但是 可能精度丢失
3. 将一个字面值常量进行赋值的时候 , Java 会自动针对数字范围进行检查
4. 强制类型转换不一定能成功,不相干的类型不能互相转换

 1.4类型提升

不同类型的数据之间相互运算时,数据类型小的会被提升到数据类型大的。
1. int long 之间: int 会被提升为 long
2. byte byte 的运算
 //类型提升
        int CCC =int1 + dz; //int +long--->long+long赋值给int类型时会丢失数据  如果你给int+dz的值转成int的话,则可以正常执行
        long dddd= int1 +dz;//接受的dddd是longl类型的所以不会报错

        byte byte11 = 10;
        byte byte2 = 20;
        byte byte3 =byte11 + byte2;//byte11 + byte2会将他们提升为int类型在计算,得到的结果为int类型,
        // 赋值给比byte所以会出错,解决方法byte11 + byte2的和转位int类型,or用int类型来接受
        //例: byte3 = (int)(byte11+byte2);

        System.out.println(byte3);

1. 不同类型的数据混合运算 , 范围小的会提升成范围大的 .
2. 对于 short, byte 这种比 4 个字节小的类型 , 会先提升成 4 个字节的 int , 再运算 .

完整代码:

public class Test {
    public static void main(String[] args) {
        //可以定义类型并赋值;
        int i = 1;
        short sh=127;
        float f = 123;
        byte b =127;
        char c = '帅';
        long l = 1024;
        double d = 2;
        boolean bl =true;//(boolean类型默认false)
        //也可以直接定义类型,并不赋值,但在使用的时候,如果没有赋值编译器会报错;
        int ii ;
        short shsh;
        float ff;
        byte bb ;
        char cc;
        long ll ;
        double dd ;
        boolean blbl ;
        //每种数据类型都有大小,超过了编译器会报错  例:
        // short sss = 1024;


//        int jingdu = i + sh;
//        short shshsh = i+sh;
//        System.out.println(jingdu);
//        System.out.println(shshsh);

        int jd = 3/2;
        System.out.println(jd);//此处打印1,丢失了0.5  因为jd是int类型在运算后无法保存小数,如果修改jd为double类型的话,则可以正常打印1.5

       //自动类型转换
        int zd = 99;
        long dz = 100;
        zd = dz; //zd 和 dz都是整形,zd的范围小dz的范围大,当将dz赋值给zd时,有可能发生数据丢失,所以报错
        dz = zd;//此处编译器将zd提升为long类型,然后赋值

        float fff = 3.14F;
        double ddd = 5.12;
        ddd = fff; // 编译器会将fff转换为double,然后进行赋值
        fff = ddd; // double表示数据范围大,直接将float交给double会有数据丢失,不安全

        //强制类型转换
        //数据范围大的数据转换成数据范围小的类型
        zd = (int)dz;//刚刚不能转的,现在能了不过还是可能发生数据丢失

        int int1 = 1024;
        byte byte1 = 1;
        byte1 = (byte) int1;
        System.out.println(byte1);//可以打印,不过数据丢失

        boolean flag = true;
        int1 = flag; // 编译失败:类型不兼容
        flag = int1; // 编译失败:类型不兼容

        //类型提升
        int CCC =int1 + dz; //int +long--->long+long赋值给int类型时会丢失数据  如果你给int+dz的值转成int的话,则可以正常执行
        long dddd= int1 +dz;//接受的dddd是longl类型的所以不会报错

        byte byte11 = 10;
        byte byte2 = 20;
        byte byte3 =byte11 + byte2;//byte11 + byte2会将他们提升为int类型在计算,得到的结果为int类型,
        // 赋值给比byte所以会出错,解决方法byte11 + byte2的和转位int类型,or用int类型来接受
        //例: byte3 = (int)(byte11+byte2);

        System.out.println(byte3);



    }
}

 

2.运算符的介绍

2.1算数运算符

基本四则运算符:加减乘除模 (+ - * / %)
  int a = 20;
        int b = 10;
        System.out.println(a + b); // 30
        System.out.println(a - b); // 10
        System.out.println(a * b); // 200
        System.out.println(a / b); // 2
        System.out.println(a % b); // 0 --->模运算相当于数学中除法的余数

增量运算符 += -= *= %=  

 a += 2; // 相当于 a = a + 2
        System.out.println(a); // 输出4
        a -= 1; // 相当于 a = a - 1
        System.out.println(a); // 输出1
        a *= 3; // 相当于 a = a * 3
        System.out.println(a); // 输出6
        a /= 3; // 相当于 a = a / 3
        System.out.println(a); // 输出1
        a %= 3; // 相当于 a = a % 2
        System.out.println(a); // 输出1
        
自增自减运算符
 int t = 1;
        t++; // 后置++ 表示给t的值加1,此时t的值为2
        System.out.println(t++); // 注意:后置++是先使用变量原来值,表示式结束时给变量+1,因此输出2
        System.out.println(t); // 输出3
        ++t; // 前置++ 表示给t的值加1
        System.out.println(++t); // 注意:前置++是先给变量+1,然后使用变量中的值,因此输出5
        System.out.println(t); // 输出5

2.2 关系运算符

关系运算符主要有六个: == != < > <= >= ,其计算结果是 true 或者 false 
         int n = 10;
         int m = 20;
// 注意:在Java中 = 表示赋值,要与数学中的含义区分
// 在Java中 == 表示相等
        System.out.println(n == m); // false
        System.out.println(n != m); // true
        System.out.println(n < m); // true
        System.out.println(n > m); // false
        System.out.println(n <= m); // true
        System.out.println(n >= m); //false

2.3 逻辑运算符 

1. 逻辑与 &&

   System.out.println(a == 2 && b == 1); // 左为真 且 右为真 则结果为真
        System.out.println(a == 2 && b > 100); // 左为真 但 右为假 则结果为假
        System.out.println(a > 100 && b == 1); // 左为假 但 右为真 则结果为假
        System.out.println(a > 100 && b > 100); // 左为假 且 右为假 则结果为假

 2. 逻辑 或 ||

  System.out.println(a == 2 || b == 1); // 左为真 且 右为真 则结果为真
        System.out.println(a == 2 || b > 100); // 左为真 但 右为假 则结果也为真
        System.out.println(a > 100 || b == 1); // 左为假 但 右为真 则结果也为真
        System.out.println(a > 100 || b > 100); // 左为假 且 右为假 则结果为假

3.逻辑非 !  

 System.out.println(!(a == 2)); // a == 2 为true,取个非就是false
        System.out.println(!(a != 1)); // a != 1 为false,取个非就是true

3.位运算符

1. 按位与 &: 如果两个二进制位都是 1, 则结果为 1, 否则结果为 0.

  System.out.println(a & b);

 2. 按位或 |: 如果两个二进制位都是 0, 则结果为 0, 否则结果为 1

System.out.println(a | b);
3. 按位取反 ~: 如果该位为 0 则转为 1, 如果该位为 1 则转为 0
 int d = 0xf;
        System.out.printf("%x\n", ~d);

 4. 按位异或 ^: 如果两个数字的二进制位相同, 则结果为 0, 相异则结果为 1.

System.out.printf("%x\n", a ^ b);

 4.条件运算符

条件运算符只有一个 :
表达式 1 ? 表达式 2 : 表达式 3
表达式 1 的值为 true , 整个表达式的值为 表达式 2 的值 ;
表达式 1 的值为 false , 整个表达式的值为 表达式 3 的值 .
也是 Java 中唯一的一个 三目运算符 , 是条件判断语句的简化写法
   // 求两个整数的最大值
        int x = 10;
        int l = 20;
        int max = x > l ? x : l;

完整代码2: 

public class Test2 {
    public static void main(String[] args) {
        int a = 2;
        int b = 1;
        System.out.println(a + b); // 3
        System.out.println(a - b); // 1
        System.out.println(a * b); // 2
        System.out.println(a / b); // 2
        System.out.println(a % b); // 0 --->模运算相当于数学中除法的余数


        a += 2; // 相当于 a = a + 2
        System.out.println(a); // 输出4
        a -= 1; // 相当于 a = a - 1
        System.out.println(a); // 输出1
        a *= 3; // 相当于 a = a * 3
        System.out.println(a); // 输出6
        a /= 3; // 相当于 a = a / 3
        System.out.println(a); // 输出1
        a %= 3; // 相当于 a = a % 2
        System.out.println(a); // 输出1

        int t = 1;
        t++; // 后置++ 表示给t的值加1,此时t的值为2
        System.out.println(t++); // 注意:后置++是先使用变量原来值,表示式结束时给变量+1,因此输出2
        System.out.println(t); // 输出3
        ++t; // 前置++ 表示给t的值加1
        System.out.println(++t); // 注意:前置++是先给变量+1,然后使用变量中的值,因此输出5
        System.out.println(t); // 输出5

        int n = 1;
        int m = 2;
// 注意:在Java中 = 表示赋值,要与数学中的含义区分
// 在Java中 == 表示相等
        System.out.println(n == m); // false
        System.out.println(n != m); // true
        System.out.println(n < m); // true
        System.out.println(n > m); // false
        System.out.println(n <= m); // true
        System.out.println(n >= m); //false

        System.out.println(a == 2 && b == 1); // 左为真 且 右为真 则结果为真
        System.out.println(a == 2 && b > 100); // 左为真 但 右为假 则结果为假
        System.out.println(a > 100 && b == 1); // 左为假 但 右为真 则结果为假
        System.out.println(a > 100 && b > 100); // 左为假 且 右为假 则结果为假

        System.out.println(a == 2 || b == 1); // 左为真 且 右为真 则结果为真
        System.out.println(a == 2 || b > 100); // 左为真 但 右为假 则结果也为真
        System.out.println(a > 100 || b == 1); // 左为假 但 右为真 则结果也为真
        System.out.println(a > 100 || b > 100); // 左为假 且 右为假 则结果为假

        System.out.println(!(a == 2)); // a == 2 为true,取个非就是false
        System.out.println(!(a != 1)); // a != 1 为false,取个非就是true


        System.out.println(a & b);

        System.out.println(a | b);

        int d = 0xf;
        System.out.printf("%x\n", ~d);

        System.out.printf("%x\n", a ^ b);

        // 求两个整数的最大值
        int x = 10;
        int l = 20;
        int max = x > l ? x : l;


    }
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值