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
}
原文地址:https://www.cnblogs.com/xingyuyu/p/12250134.html