java02 数据类型 数据转换 运算符

1 数据类型

java中数据分为基本数据(4类的8种)和引用数据

       说明

浮点数 :默认double类型。L 可以不加,如果右边字符区域小于左边。

public class Hello{
    public static void main(String[] args){
        //输出整数 int类型
        System.out.println(1024);
        //输出整数 这是一个浮点数,默认double
        System.out.println(10.2);
        //long --float,范围是float范围更大,符合从小到大的规则
        double num2 = 2.5F;
        System.out.println(num2);
    }
}

结果:
1024
10.2
2.5

自动转换: int→long 符合数据范围从小到大的要求

public class Hello{
    public static void main(String[] args){
        //格式:范围小的类型 范围小的变量名 = 范围小的类型 原本范围大的数据
        long num =  100L;
        System.out.println(num);
        
    }
}
结果
100.0

强制类型转换格式:范围小的类型 范围小的变量名 = 范围小的类型 原本范围大的数据

public class Hello{
    public static void main(String[] args){
        //格式:范围小的类型 范围小的变量名 = 范围小的类型 原本范围大的数据
        int num = (int) 100L;
        System.out.println(num);
        
    }
}

结果
100

注意事项:

1.强制类型转换,一般不建议使用,主要是有可能精度损失,数据溢出

   简单说就是整数过大会溢出,小数会丢弃

public class Hello{
    public static void main(String[] args){
        //世界人口70亿
        int num = (int) 7000000000L;
        System.out.println(num);
        
    }
}

结果:
-1589934592
发生了溢出,也就是水撒了

2 byte short char 三种数学运算,例如+

    流程 :首先提升为int类型,然后进行运算

              byte + byte → int + int

public class Hello{
    public static void main(String[] args){
        char zifu1 = 'A';
        //char 类型进行数学运算,那么字符按照一定规则会进行换算
        System.out.println(zifu1 + 1);
    }
}

结果66


public class Hello{
    public static void main(String[] args){
        char zifu1 = 'A';
        //char 类型进行数学运算,那么字符按照一定规则会进行换算
        System.out.println(zifu1 + 1);
        byte num1 = 40;
        byte num2 = 50;
        int re1 = num1 + num2;
        System.out.println(re1);
        //byte + short → int + int → int
        short num3 = 60;
        //需要用short (两个变量)
        short re3 = (short)(num3 + num2);
        System.out.println(re3);
        
    }
}
结果
66
90
110

3 boolean类型不能发生数据类型转换





2 运算符

2.1定义:

     运算符  进行特定的计算

     表达式  用运算符连起来的公式 就是表达式

2.2分类:

2.2.1. 算术运算符

15550383981_thumb1

public class Hello{
    public static void main(String[] args) {
        //两个常量之间可以进行运算
        System.out.println(20+30);
         int a = 10;
         int b = 20;
         //首先计算得到表达式的值,然后再打印输出这个结果
        System.out.println(a-b);
         //被除数/除数 = 商。。。余数
        float result1 = b / a;
         System.out.println(result1);
     }
 }

package hello;

public class Hello{
    public static void main(String[] args){
        String str1 = "hello";
        int str2 = 20;
        System.out.println(str1);
        // 字符串类型的加号,字符串是引用型变量,加号属于连接功能   数据类型  变量名称 = 数据值
        System.out.println(str1+str2);
        //优先级问题
        int str3 = 30;
        System.out.println(str1 + str2 +str3);
    }
}

      自增自减运算符

++ 自增   让一个变量涨一个数据1  写在变量名字之前,之后

--   自减   让一个变量减一个数据1  写在变量名字之前,之后

      使用方式 

单独使用    变量前后++ -- 无区别

混合使用   变量前++ 用完再加;  变量后++用前加

public class Hello{
    public static void main(String[] args){
        int num1 = 10;
        System.out.println(num1);
        num1++;// 单独使用,意思是独占一行,前++与后++无区别
        System.out.println(num1);
        ++num1;// 单独使用,意思是独占一行,前++与后++无区别
        System.out.println(num1);
        System.out.println("----------------");
        int num2 = 20;
        System.out.println(num2++);
        System.out.println(num2);
        System.out.println(++num2);
    }
}


结果 :

10
11
12
----------------
20
21
22

      说明:

取模运算符只有对整数才有意义。

一旦数据有不同类型的,以数据类型范围大的为准。

2.2.2.赋值运算符

           赋值运算符包含  基本运算符和复合运算符(包含算术运算符)

基本运算符:= 代表右侧数据 赋值给 左侧的变量;

复合运算符:

1555052927(1)


package hello;

public class Hello{
    public static void main(String[] args){
    int a = 10;
    int b = 10;
    int c = 10;
    int d = 10;
    a += 10;
    // 实际效果为 a = a + 10;
    System.out.println(a);
    b -= 10;
    // 实际效果为 b = b - 10;
    System.out.println(b);
    c /= 10;
    // 实际效果为 c = c / 10;
    System.out.println(c);
    d %= 10;
    // 实际效果为 d = d % 10;
    System.out.println(d);
    }
}


2.2.3.比较运算符

       说明:

两个等号连起来叫比较,比较结果是 true 或 false,一个等号叫赋值;

比较运算符是二元运算符,不允许出现1<x<3这类表达式出现,只能用逻辑运算符表达

15551166801_thumb1

public class Hello{
    public static void main(String[] args){
        //常量与常量对比
        System.out.println(10 > 5);
        int num1 = 100;
        System.out.println(num1 > 101);
        System.out.println(10 == 10);
        System.out.println(20 != 20);
        
    }
}

结果

true
false
true
false

2.2.4.逻辑运算符

与 并且  &&   全都是true 才能true

或 或者   ||       部分true或者全都是true  是true

非 取反   !    全都是false 才是true

     说明

逻辑运算符是 连接两个或多个字符的表达式

            条件A && 条件B && 条件C

短路 与&& 或|| 具有短路效果,如果根据左边已经判断得到最终结果,那么表达式为false


public class Hello{
    public static void main(String[] args){
        // false
        System.out.println(true && true);
        // true
        System.out.println(3 < 4 && 10 < 20);
        System.out.println( true || false);
        int a = 10;
        // ++a  未改变a的值,因为下面表达式左边为false,不再执行。
        System.out.println(3 > 4 && ++a < 100);
        // 使用|| 左边为true,右边将不再执行
        System.out.println("------------");
        int b = 20;
        System.out.println( 3 < 4 || ++b < 100);
        System.out.println( b );
        System.out.println( 3 < 4 && ++b < 100);
        System.out.println( b );
    }
}

结果
true
true
true
false
------------
true
20
true
21

2.2.5三元运算符

     一元运算符:

只需要一个数据就可以进行操作的运算,例 取反 !  自增++ 自减--

     二元运算符:

需要两个数据才可以进行操作的运算,例如 + – *  /  和赋值=

     三元运算符:

需要三个数据才可以进行操作运算符 如

数据类型 变量名称 = 条件判断 ? 表达A : 表达式B;

流程:

1 判断条件是否成立

2 如果成立为true,那么表达式A 的值赋给左侧的变量;

3如果不成立为false,那么将表达式B的值赋值给左侧的变量;

public class Hello{
    public static void main(String[] args){
        int a = 10;
        int b = 20;
        //数据类型 变量名称 = 条件判断 ? 表达A : 表达式B;
        int  x =  a > b ? a: b;
        System.out.println(x);
                
    }
}

结果 
20

说明:

1.右侧表达式必须同时符合左侧的数据类型要求,int x = 3> 4? 2.4:10; 不对

2.三元运算符的结果 必须被引用,要么有变量接受,要么println打印出来;

3.三元表达式可以直接放在打印结果

public class Hello{
    public static void main(String[] args){
        int a = 10;
        int b = 20;
        //数据类型 变量名称 = 条件判断 ? 表达A : 表达式B;
        int  x =  a > b ? a: b;
        System.out.println(x);
        //三元表达式可以直接放在打印结果 是正确写法
        System.out.println(x =  a > b ? a: b);
        
    }
}

结果 
20
20



posted @ 2019-02-23 11:04  芒果侠  阅读(202)  评论(0编辑  收藏  举报