数据类型转换、运算符、表达式

数据类型转换、运算符、表达式

3.1.Java中基本数据类型之间的转换以及注意事项?

 1.boolean类型是不参与基本数据类型之间的转换。

 2.基本数据类型的精度排序【由低到高顺序】

      byte  short  char  int  long  float  double

 3.将数据类型精度低的转换成数据类型精度高的----隐式数据类型转换【自动数据类型转换】

      隐式数据类型转换【自动数据类型转换】不需要修改程序,直接赋值即可完成。

      可以直接赋予具体的数据值,也可以将变量赋值。

      例如:int--->doubole [隐式数据类型转换【自动数据类型转换】

public class DateTypeSwitch{
             public static void main(String args[]){
                    //1.隐式数据类型转换【自动数据类型转换】
                    //数据类型精度低----》数据类型精度高
                    //程序中出现一个没有变量保存的整数,默认为是int型
                    //int--->double
                      int int1=100;
                      double dou1=int1;
                      System.out.println("dou1="+dou1);
                      double dou2=125;
                      System.out.println("dou2="+dou2);
          }
}

  4.将数据类型精度高的转换成数据类型精度低的--显式数据类型转换【强制数据类型转换】

       显式数据类型转换【强制数据类型转换】需要修改程序。

       格式:低精度数据类型  变量名称 =  (精度低数据类型)精度高的数据值【变量】;

       例如:double--->int[显式数据类型转换【强制数据类型转换】]

public  class DataTypeSwitch2{
	public static void main(String args[]){
		//double--->int[显式数据类型转换【强制数据类型转换】]
        //格式:低精度数据类型  变量名称 =  (精度低数据类型)精度高的数据值【变量】;
		//将小数转换成整数不会“四舍五入”,而是直接舍弃小数部分
		int intnum1=(int)12.8;
		System.out.println("intnum1=="+intnum1);
		double doublevalue=12.8d;
        int  value=(int)doublevalue;
		System.out.println("value="+value);
        }
}

  5.char与int的转换     char的取值范围是整数

      1.char---->int [[隐式数据类型转换【自动数据类型转换】

      2.int---->char[[显式数据类型转换【强制数据类型转换】

public  class CharAndInt{
	public static void main(String args[]){
		//char的取值范围就是整数
		//1.char---->int [[隐式数据类型转换【自动数据类型转换】]]
		char chatvalue1='好';
        int intvalue1=chatvalue1; //隐式数据类型转换
        System.out.println("intvalue1="+intvalue1);//intvalue1=22909
		//2.int---->char[[显式数据类型转换【强制数据类型转换】]]
		int intvalue2=22909;
        char charvalue2=(char)intvalue2;//显式数据类型转换
		System.out.println("charvalue2="+charvalue2);
        }
}

 6.int转换成byte;当整数超过取值范围以后,会从最小值向前推进计算。

public  class IntToByte{
	public static void main(String args[]){
		byte  bytevalue=(byte)300;
		System.out.println("bytevalue="+bytevalue);
		//byte  bytevalue1=127;
		//byte  bytevalue2=(byte)(bytevalue1+1);
		//System.out.println("bytevalue2="+bytevalue2);
         }
}

3.1.赋值运算符与赋值表达式的说明和用法

    赋值运算符:”=”

    例如:int  num = 100;

            short  sh=200;

3.2.算术运算符与算术表达式的说明和用法

     算术运算符:+  -  *  /  %【求余】  ++【自动加1】  --【自动减1】

     例如:

public class SuanShu{
	public static  void  main(String args[]){
		//+  -  *  /  % 
		int num1=10;
		int num2=3;
		System.out.println(num1+"+"+num2+"="+(num1+num2));
		System.out.println(num1+"-"+num2+"="+(num1-num2));
		System.out.println(num1+"*"+num2+"="+(num1*num2));
		//当参与算术运算的数据是整数时,运算结果就是整数
		System.out.println(num1+"/"+num2+"="+(num1/num2));
		System.out.println(num1+"%"+num2+"="+(num1%num2));
	}
}
public class SuanShu2{
	public static  void  main(String args[]){
		//四则混合运算,参数运算的数据类型不是同一类
		//当参与算术运算的数据类型不是同一类时,
		//它的运算结果的数据类型是精度最高的数据类型
        byte b=100;
		short  s=200;
		int i=300;
        long l=400L;
        float f=3.14f;
        double d=2.7;
        char  c='A';
		//-1545.5599853515625----double
        System.out.println(b+s-i*l/c+f);
	}
}

3.3.++--的具体用法

       “++”--- 自动加1

  1. 变量++;--【先用后加】
  2. ++变量;--【先加后用】

       “--”---- 自动减1

  1. 变量--;【先用后减】

     2. --变量;【先减后用】

    例如:

public class SuanShu{
            public static void main(String args[]){
              //算数运算符:+   -   *   /   %(求余) ++(自动加1) --(自动减一)
                 int int1=120;
                 int int2=20;
                 System.out.println(int1+"+"+int2+"="+(int1+int2));
                 System.out.println(int1+"-"+int2+"="+(int1-int2));
                 System.out.println(int1+"*"+int2+"="+(int1*int2));
                 System.out.println(int1+"/"+int2+"="+(int1/int2));
                 System.out.println(int1+"%"+int2+"="+(int1%int2));
              //++【自动加1】
              //变量++  【先用后加1】
              //System.out.println("int1++==="+(int1++));  
              //System.out.println("int1==="+int1);              
              //++变量     【先加再用】 
              //System.out.println("++int1==="+(++int1));   
              //System.out.println("int1==="+int1);              

              // --【自动减1】
              //变量--  【先用再减】
              //System.out.println("int1--==="+(int1--));      
              //System.out.println("int1==="+int1);                
              //--变量   【先减再用】
                System.out.println("--int1==="+(--int1));         
                System.out.println("int1==="+int1);                 
       }
}

3.4.关系运算符与关系表达式的说明和用法

        关系运算符:  >  <  >=  <=  ==  !=

public class GuanXi{
	public static  void  main(String args[]){
		//关系运算符:  >  <  >=  <=  ==  !=
		//关系运算符的结果一定是boolean值
		int  num1=10;
        int  num2=3;
		System.out.println(num1+" > "+num2+"="+(num1>num2));
		System.out.println(num1+" < "+num2+"="+(num1<num2));
		System.out.println(num1+" >= "+num2+"="+(num1>=num2));
		System.out.println(num1+" <= "+num2+"="+(num1<=num2));
		System.out.println(num1+" == "+num2+"="+(num1==num2));
		System.out.println(num1+" != "+num2+"="+(num1!=num2));
	}
}

3.5.逻辑运算符与逻辑表达式的说明和用法

       逻辑运算符被分成2大类:

  1. 逻辑运算符 【逻辑或 ||   逻辑与 &&  逻辑反  !】

         例如:

public class LuoJi1{
	public static  void  main(String args[]){
		//1.逻辑运算符 【逻辑或 ||   逻辑与 &&  逻辑反  !】
		//逻辑运算符的运算值和运算结果一定是boolean
		int  num1=10;
        int  num2=3;
		//逻辑或 ||
        boolean  b1 =((num1+num2)>10) || ((num1-num2)<3) ;
		System.out.println("b1=="+b1);
		//逻辑与 &&
		boolean  b2 =((num1+num2)>10) && ((num1-num2)<3) ;
		System.out.println("b2=="+b2);
		//逻辑反  !
		boolean  b3 =!(((num1+num2)>10) && ((num1-num2)<3)) ;
		System.out.println("b3=="+b3);
	}
}

   2. 位运算符

3.6.短路与和短路或

       短路或--逻辑或的运算规则

   【运算符号左右两边都是false的时候,运算结果就一定是false,如果出现一个true,运算结果就一定是true】

      短路或---短路就是运算符号只运算一边,当运算符号左边的结果为true时候,右边不用计算,结果就一定是true.

      短路与--逻辑与的运算规则

  【运算符号左右两边都是true的时候,运算结果就一定是true,如果出现一个false,运算结果就一定是false】

     短路与---短路就是运算符号只运算一边,当运算符号左边的结果为false时候,右边不用计算,结果就一定是false

     例如:

public class LuoJi2{
	public static  void  main(String args[]){
		//短路或:当运算符号左边的结果为true时候,右边不用计算,结果就一定是true.
		int num1=10;
		//System.out.println(num1/0);
        boolean b1= (num1 < 20) || ((num1/0)>10);
		System.out.println("b1="+b1);

		//短路与:当运算符号左边的结果为false时候,右边不用计算,结果就一定是false
		int num2=100;
        boolean b2= (num2 < 20) && ((num2/0)>10);
		System.out.println("b2="+b2);
	}
}

3.7.位运算符的用法

     位运算:就是将参与运算的数据转换成2进制【0101001】

    1. 原码

       原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值.

    2. 反码

       表示方法:  正数的反码是其本身【原码】; 负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.

   3. 补码

       表示方法:   正数的补码就是其本身【原码】;负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1);

       整数的2进制就是源码;

       负数的2进制实质上补码表示。

      -3 -- 00000011---11111100---11111101----【负数的原码取反+1】{符号位不变}

      -3--3---00000011--11111100---11111101 ---【负数的绝对值的原码的取反+1】

       -7--7--00000111---11111000----11111001

      -12--12--00001100---11110011---11110100

  常见的6种位运算符号

      1.& 按位与 相同1为1,不同为0。

         例如:3 & -7

                  0000 0011  3

                  1111 1001  -7

                  0000 0001  1

     2.| 按位或  相同位只要一个为1即为1。

        例如:3 | -7

                 0000 0011  3

                 1111 1001  -7

                 1111 1011  -5

    3.^ 按位异或  相同位不同则为1,相同则为0。

        例如:3 | -7

                0000 0011  3

                1111 1001  -7

                1111 1010  -6

     4.~取反   0和1全部取反

          例如:~3

                0000 0011  3

               1111 1100  --- 1111 1011  -- 1000 0100  -4

     5.<<左移位  2进制整体向左移动指定的位数

          例如 : 3 << 2

                 0000 0011  3

                 0000 0110 移动1位

                 0000 1100 移动2位 --- 12

     6.>>右移 2进制整体向右移动指定的位数

          例如 : 3 >> 2

                 0000 0011  3

                 0000 0001 移动1位

                 0000 0000 移动2位 --- 0

public class LuoJi3{
	public static  void  main(String args[]){
		//1.& 按位与 相同为1,不同为0。
		int num1=3;
		int num2=-7;
		System.out.println(num1 & num2); // 1
		//2.| 按位或  相同位只要一个为1即为1。
		System.out.println(num1 | num2); // -5
		//3.^ 按位异或  相同位不同则为1,相同则为0。
		System.out.println(num1 ^ num2); // -6 
		//4.~取反   0和1全部取反
		System.out.println(~num1); // -4
		//5.<<左移位  2进制整体向左移动指定的位数
		System.out.println(num1 << 2); //
		//6.>>右移位  2进制整体向右移动指定的位数
		System.out.println(num1 >> 2); // 0
		System.out.println(2 << 3); 
	}	
}

        当我们学习完运算符以后,变量和运算符会组成一个运算的表达式,这个运算表达式中的变量的数据类型可能不同,那么这个运算表达式的结果使用什么类型的变量来保存。这个运算表达式的结果使用参与运算的变量中数据类型精度最高的为标准。

public class Test{
          public static void main(String args[]){                         
                  byte by1=120;
                  short sh1=220;
	              int int1=1000;
                  long long1=10000L;
	              float flo1=12.5f;
	              double dou1=12.5;
	              char ch1='A';
                  double dou2=by1+sh1+int1+long1+flo1+ch1+dou1;
                  System.out.println("dou2=="+dou2);
         }
}

    运算符号的优先级

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值