Java-003-数据类型的详解(整数,浮点, Boolean),基本类型的转换,运算符

1.Java整型包括:byte /  short  / int / long

Java语言整数型常量有三种表示方法

◆十进制

◆八进制,八进制0开头,如:013

◆十六进制,十六进制0x开头,如:0X23

Java语言整数型默认为int类型,如果要声明成long类型在变量值后加入L,如long l =999999999L

 

2.字符编码

public class CharType {
    public  static void main(String[] argv){
        /*
        char类型
        char是字符类型 java中采用 UNICODE编码 底层占两个字节
        char类型涉及到字符编码方式
        1.字符编码方式是现实世界中的文件和计算机的表示方式的转换规则

        ASCII
          'a' 97
          'A' 65
          '0' 48
       对应的二进制是多少
       IOS-8859-1
       GB2312 < GBK < GB18030 从容量上看,是包含关系
       unicode utf-8, uft-16 ,utf-32
       2.如果字符采用的编码和解码不一致的时候,就会出现乱码
        */
        char i = 'a';
        int j  = '7';
        //char k = 'ab'; //错误写法
        char m = '中';
        char t = 't';
        System.out.println("i == " + i + "  j == " + j + "  m == " + m + " t == " + t);
        //斜线在Java语言中的转移功能,可以将普通t字符,转换成"制表符"
        char b = '\t';//相当于电脑键盘的Tab键
        System.out.println("b==" + b);//输出为一个制表符
        System.out.println("My Name is Steven");

        //Java中一个普通的"单引号"字符
        char k = '\'';
        System.out.println("k == " + k);

        //Java中一个普通的"斜线"字符
        char l = '\\';
        System.out.println("l == " + l);

        //Java中一个普通的"双引号"字符
        char n = '\"';
        System.out.println("n == " + n);

        //Java中一个普通的换行符
        char o = '\n';//相当于键盘回车键
        System.out.println("StevenA");
        //System.out.println(o);
        System.out.println("");//print 不换行,println换行
        System.out.println("StevenB");

        /*
        输出结果为:
        i == a  j == 55  m == 中 t == t
        b==
        My Name is Steven
        k == '
        l == \
        n == "
        StevenA

        StevenB
        */
    }
}

3.布尔类型

public class DataTypeBool {
    /*
    java中的布尔类型
    1.只有两个值:true/false 没有 0和1
    2.主要用在 逻辑运算符和条件控制语句中
     */
    public static void main(String[] argv) {
          //boolean i = 1;
        // Error:(9, 23) java: 不兼容的类型: int无法转换为boolean
          boolean sex = true;

          if (sex) {
              System.out.println("男人");//输出结果:男人
          }else  {
              System.out.println("女人"+sex);
          }

        System.out.println("sex =="+sex);//输出结果为:sex ==true
    }
}

4.浮点型

public class DataTypeFloat {
    //Java浮点型: float/double  默认为double
    //float 4个字节 double 8个字节
    public static void main(String[] argv) {
        double i = 1.2;
        //强制类型转换
        float y = (float)i;
        //自动赋值运算符(浮点型)
        float x = 1.2F;
        System.out.println("i == " + i + " y == " + y + " x == " + x);//结果为:i == 1.2 y == 1.2 x == 1.2
    }
}

5.类型转换

public class TransformDataType {
    /*
    关于Java语言中的整形数据
    byte  1byte(8bit)-128 127
    short 2byte
    int   4byte
    long 8byte

    整数型有三种表示方式
    1.十进制
    2.八进制以0开头
    3.十六进制以0x开头
     */
    public static void main(String[] argv) {
        //十进制
        int i = 10; // 常用类型

        //八进制
        int j = 010;

        //十六进制

        int k = 0x10;

        System.out.println("i == " + i);
        System.out.println("j == " + j);
        System.out.println("k == " + k);
        /*
         输出结果为:
         i == 10
         j == 8
         k == 16
         */
        //将一个Int类型 100字面量值赋值给m 变量
        int m = 100;
        System.out.println("m == " + m);
        //将int类型150字面值赋值给1ong类型的n
        // int类型的容量小于long类型
        //默认已经存在数据类转换,只不过是"自动类型转换"
        long n = 50;
        //由于出现了"L",就会把160看成long类型
        //以下程序不存在类型转换,只是一个普通的赋值运算
        long x = 160L;
        System.out.println("n == " + n);
        System.out.println("x == " + x);
        //强制类型转换
        //①long 类型转换为 int 类型
        int y = (int) 160L;//不加(int)报错 Error:(46, 17) java: 不兼容的类型: 从long转换到int可能会有损失
        //②可以将int类型转换成 long类型 "自动类型转换"
        long z = 234233633;//前提是int类型的值小于2^31-1
        //什么时候使用"L"或者"l",建议使用"L"//如果该数值大于2~31-1就用L,并且是1ong类型
        long t = 321213123L;
        System.out.println("y == " + y);
        System.out.println("z == " + z);
        System.out.println("t == " + t);

        /*
        Byte类型
         */
        long a = 1000L;
        //不能自动转换
        //需要强制类型转换,添加强制类型转换符()
        //添加(int)后,编译通过了,但是程序在运行阶段可能损失精度,所以一定要谨慎使用
        //大容量long向小容量转换,需要强制类型转换
        int b = (int)a;
        System.out.println("b == " + b);//b == 1000

        //byte 取值范围(-128 ~ 127)
        byte c = 10;
        byte d = 127;
        //byte e = 128; //错误写法,超出范围
        System.out.println("c == " + c);

        //short 取值范围 (-32768 ~ 32767)
        short f = 23423;
        System.out.println("f == " + f);

        //char 等,没有超出范围都可以赋值 (char取值范围 (0 ~ 65535) )
        char g = 90;
        char u = 65531;
        int v = 58787;
        //char w = v;
        System.out.println("u == " + u);
        //总结:
        //如果整数没有超出byte,short, char取值范围,可以直接将这个整数赋值给byte,short,char
    }
}

5.混合运算

public class DataTypeMix {
    //byte,short,char 做混合运算的时候,需要先各自转换成int 再做运算
    public static void main(String[] argv){

        byte i = 10;
        byte j = 20;
        int k = i + j ;

        System.out.println("k == " + k);//结果: k == 30
        /*
        java在运行的时候分为两个时期
        1.编译期
        2.运行期
        在编译阶段只知道 i + j 是 int 类型
        int 类型无法直接赋值给 byte类型
         */
        byte m = (byte)(i + j);
        byte n = 100;
        System.out.println("m == " + m + " n == " + n);
        //输出结果为:m == 30 n == 100
        /*
        在java中基本类型可以相互转换, boolean类型比较特殊不可以转换成其他类型
        转换分为默认转换和强制转换:
        默认转换:容量小的类型会默认转换为容量大的类型
        byte--short--> int--> long--> float-->double
        char-->
        byte、 short、char之间计算不会互相转换,首先先转换成int
        强制转换将容量大的类型转换成容量小的类型,需要进行强制转换
        注意:只要不超出范围可以将整型值直接赋值给byte, short,char
        在多种类型混合运算过程中,首先先将所有数据转换成容量最大的那种,再运算
         */
    }
}

 

posted @ 2018-08-01 21:15  淡然微笑_Steven  阅读(912)  评论(0编辑  收藏  举报