zoukankan      html  css  js  c++  java
  • java 数据类型转换 ascii 运算符

    一,数据类型转换

    当数据的类型不一致时,将会发生数据类型转换

    (1),自动类型转换(隐式)

    特点:代码不需要进行特殊处理,自动完成。

    规则:数据范围从小转换到大(byte、short、char‐‐>int‐‐>long‐‐>float‐‐>double

     

    代码示例:

    package cn.itcate.day2demo;
    
    public class Demo01DataType {
        public static void main(String[] args) {
            System.out.println(1024); //这是一个整数,默认是int类型
            System.out.println(3.14);// 浮点数,默认是double类型
    
            long num1 = 100;
            System.out.println(num1); //100
            // 左边是int类型,右边是long类型,左右不一样
            // int---->long,符合从小范围到大氛围的要求
            // 这一行代码发生了自动类型转换
    
            double num2 = 2.5F;
            System.out.println(num2);// 2.5
            // 左边是double类型,右边是float类型,左右不一样
            // float --> double,符合从小到大的规则
            // 也发生了自动类型转换
    
            float num3 = 30L;
            System.out.println(num3); // 30.0
            // 左边是float类型,右边是long类型,左右不一样
            // long --> float,范围是float更大一些,符合从小到大的规则
            // 也发生了自动类型转换
        }
    }
    View Code

    (2),强制转换(显式)

    当我们将浮点数类型赋值到int类型,将会产生编译失败。

    int i =  3.14; // 错误

    double类型内存占8个字节,int类型内存占4个字节。3.14是double类型,取值氛围打于int类型。违反从小范围转换到大范围的原则。

    强制类型转换 :能将 取值范围大的类型 强制转换成 取值范围小的类型 。

    格式:数据类型  变量名  =  (数据类型) 被转数据类型;

     

    代码示例:

    package cn.itcate.day2demo;
    
    public class Demo02DataType {
        public static void main(String[] args) {
            int num = (int) 100L;
            System.out.println(num); // 100
            // 左边是int类型,右边是long类型,不一样
            // long --> int,不是从小到大
            // 不能发生自动类型转换!
            // 格式:范围小的类型 范围小的变量名 = (范围小的类型) 原本范围大的数据;
    
            // long类型转换为int类型
            int num2 = (int) 60000000L;
            System.out.println(num2); // 1705032704
    
            // double --> int, 强制类型转换
            int num3 = (int) 3.99;
            System.out.println(num3);// 3
    
            char str = 'A';
            System.out.println(str + 1);// 66
            // 2. byte/short/char这三种类型都可以发生数学运算,例如加法“+”.
            //    3. byte/short/char这三种类型在运算的时候,都会被首先提升成为int类型,然后再计算。
    
            byte num4 = 40;
            byte num5 = 50;
            // byte + byte --> int + int --> int
            int result1 = num4 + num5;
            System.out.println(result1); // 90
    
            short num6 = 60;
            // byte + short --> int + int --> int
            // int强制转换为short:注意必须保证逻辑上真实大小本来就没有超过short范围,否则会发生数据溢出
    
            short result2 = (short) (num4 + num6);
            System.out.println(result2); // 100
    
        }
    }
    View Code

    注意:

    1. 强制类型转换一般不推荐使用,因为有可能发生精度损失、数据溢出。
    2. byte/short/char这三种类型都可以发生数学运算,例如加法“+”.
    3. byte/short/char这三种类型在运算的时候,都会被首先提升成为int类型,然后再计算。
    4. boolean类型不能发生数据类型转换

    二,ASCII编码表

    数字和字符的对照关系表(编码表)如图:

    ASCII码表:American Standard Code for Information Interchange,美国信息交换标准代码。
    Unicode码表:万国码。也是数字和符号的对照关系,开头0-127部分和ASCII完全一样,但是从128开始包含有更多字符。

     

     编码表太长了,我们可以记住具有代表性的几个:

    代码示例:

    package cn.itcate.day2demo;
    
    public class Demo03DataTyoeChar {
        public static void main(String[] args) {
            // 左侧是int类型,右边是char类型,
            // char --> int,确实是从小到大
            // 发生了自动类型转换
    
            char zifu1 = '0';
            System.out.println(zifu1 + 0); // 48
    
            char zifu2 = 'A';
            System.out.println(zifu2 + 0);// 65
    
            char zifu3 = 'a';
            System.out.println(zifu3 + 0);// 97
    
            //超出ASCII的范围,使用Unicode
            char zifu4 = ;
            System.out.println(zifu4 + 0);'中'
    
    
    
    
        }
    }
    View Code

    注意:在char类型和int类型计算的过程中,char类型的字符先查询编码表,char类型提升为了int类型。char类型内存2个字节,int类型内存4个字节。

    三,运算符

    3.1 算法运算符

    +        加法运算,字符串连接运算

    -      减法运算

    *      乘法运算

    /      除法运算

    %      取模运算,两个数字相除取余数

    ++、 --      自增自减运算

    运算符:进行特定操作的符号。例如:+、-
    表达式:用运算符连起来的式子叫做表达式。例如:3 + 5。又例如:a + c

    代码示例:

    View Code

    注意:

    1. 对于一个整数的表达式来说,除法用的是整除,整数除以整数,结果仍然是整数。只看商,不看余数。
    2. 只有对于整数的除法来说,取模运算符才有余数的意义。
    3. 一旦运算当中有不同类型的数据,那么结果将会是数据类型范围大的那种。

    字符串的拼接(+)

    1. 对于数值来说,那就是加法。
    2. 对于字符char类型来说,在计算之前,char会被提升成为int,然后再计算。
    char类型字符,和int类型数字,之间的对照关系表:ASCII、Unicode
    3. 对于字符串String(首字母大写,并不是关键字)来说,加号代表字符串连接操作。
    任何数据类型和字符串进行连接的时候,结果都会变成字符串

    package cn.itcate.day2demo;
    
    public class Demo05Plus {
        public static void main(String[] args) {
            // 字符串类型的变量基本使用
            // 数据类型 变量名称 = 数值值;
            String str1 = "Hello";
            System.out.println(str1); // Hello
    
            System.out.println("Hello" + "Hello"); // HelloWorld
            
            String str2 = "Java";
            // String + int --> String
            System.out.println(str2 + 20); // Java20
            
            // 优先级问题
            System.out.println(str2 + 20 + 30);// Java2030
            System.out.println(str2 + (20 + 30));// Java50
                     
        }
    }
    View Code

    3.2 自增(++)和自减(--)

    基本含义:让一个数字变量加1,或者让一个数字变量减1

    使用格式:有前++和后++。例如:++num, num++

    独立运算:

      时前++和后++没有区别

    混合运算:

      和其他变量放在一起, 前 ++ 和 后 ++ 就产生了不同。

      A. 如果是【前++】,那么变量【立刻马上+1】,然后拿着结果进行使用。 【先加后用】
      B. 如果是【后++】,那么首先使用变量本来的数值,【然后再让变量+1】。 【先用后加】


      

    变量 前 ++ :变量a自己加1,将加1后的结果赋值给b,也就是说a先计算。a和b的结果都是2。

    代码如下:

    public static void main(String[] args) {
        int a = 1;
        int b = ++a;
        System.out.println(a);//计算结果是2
        System.out.println(b);//计算结果是2
    }

    变量 后 ++ :变量a先把自己的值1,赋值给变量b,此时变量b的值就是1,变量a自己再加1。a的结果是2,b的结果是1。

    代码如下:

    public static void main(String[] args) {
        int a = 1;
        int b = a++;
        System.out.println(a);//计算结果是2
        System.out.println(b);//计算结果是1
    }

    代码如下:

    package cn.itcate.day2demo;
    
    public class Demo06Operator {
        public static void main(String[] args) {
            int num1 = 10;
            // 前++
            ++num1;
            System.out.println(num1);
            // 后++
            num1++;
            System.out.println(num1);
    
            // 混合使用
            int x = 10;
            int y = 20;
            
            int result1 = ++x + y--;
            System.out.println(result1);// 31
            System.out.println(x); // 11
            System.out.println(y); // 19
    
        }
    }
    View Code

    注意:变量才能使用自增、自减运算符。常量不可发生改变。

    赋值运算

    =    等于

    +=    加等于

    -+     减等于

    *=     乘等于

    /=      除等于

    %=    取模等


    代码如下:

    public static void main(String[] args){
        int i = 5;
        i+=5;//计算方式 i=i+5 变量i先加5,再赋值变量i
        System.out.println(i); //输出结果是10
    }

    比较运算符

    ==     比较符号两边数据是否相等,相等结果是true。
    <       比较符号左边的数据是否小于右边的数据,如果小于结果是true。
    >       比较符号左边的数据是否大于右边的数据,如果大于结果是true。
    <=     比较符号左边的数据是否小于或者等于右边的数据,如果小于结果是true。
    >=     比较符号左边的数据是否大于或者等于右边的数据,如果小于结果是true。
    ! =     不等于符号 ,如果符号两边的数据不相等,结果是true

    代码如下:

    public static void main(String[] args) {
        System.out.println(1==1);//true
        System.out.println(1<2);//true
        System.out.println(3>4);//false
        System.out.println(3<=4);//true
        System.out.println(3>=4);//false
        System.out.println(3!=4);//true
    }

    比较运算符

    && 短路与
    1. 两边都是true,结果是true
    2. 一边是false,结果是false
    短路特点:符号左边是false,右边不再运算


    || 短路或
    1. 两边都是false,结果是false
    2. 一边是true,结果是true
    短路特点: 符号左边是true,右边不再运算


    ! 取反
    1. ! true 结果是false
    2. ! false结果是true

    public static void main(String[] args)  {
        System.out.println(true && true);//true
        System.out.println(true && false);//false
        System.out.println(false && true);//false,右边不计算
     
        System.out.println(false || false);//falase
        System.out.println(false || true);//true
        System.out.println(true || false);//true,右边不计算
     
        System.out.println(!false);//true
    }

    三元运算符

    格式: 数据类型 变量名 = 布尔类型表达式? 结果1:结果2

    三元运算符计算方式:
    布尔类型表达式结果是 true,三元运算符整体结果为结果1,赋值给变量。
    布尔类型表达式结果是 false,三元运算符整体结果为结果2,赋值给变量。

    代码示例:

    public static void main(String[] args) {
        int i = (1==2 ? 100 : 200);
        System.out.println(i);//200
        int j = (3<=4 ? 500 : 600);
        System.out.println(j);//500
    }
  • 相关阅读:
    Django后台admin的使用
    $(.ajax)的使用
    centos7配置双网卡bond
    vsftpd服务的搭建
    linu重置root密码(CentOS7)
    python内置函数
    元组和字典的魔法
    列表的魔法
    字符串的魔法
    zabbix-get
  • 原文地址:https://www.cnblogs.com/xingyuyu/p/12250134.html
Copyright © 2011-2022 走看看