Java-数据类型与转换

数据类型
(1)定义:
Java是一种强类型语言,针对每种数据都提供了对应的数据类型。
(2)分类:
A:基本数据类型:4类8种
B:引用数据类型:类,接口,数组,String。
(3)基本数据类型
A:整数 占字节数
byte 1
short 2
int 4
long 8
B:浮点数
float 4
double 8
C:字符
char 2
D:布尔
boolean 1

    注意:
        整数默认是int类型,浮点数默认是double。
        长整数要加L或者l。
        单精度的浮点数要加F或者f。

数据类型转换
(1)boolean类型不参与转换
(2)默认转换
A:从小到大
B:byte,short,char – int – long – float – double
C:byte,short,char之间不相互转换,直接转成int类型参与运算。
(3)强制转换
A:从大到小
B:可能会有精度的损失,一般不建议这样使用。
C:格式:
目标数据类型 变量名 = (目标数据类型) (被转换的数据);

(4)思考题和面试题:
    A:下面两种方式有区别吗?
/*
    思考题1:请问下面这个有没有问题
        double d = 12.345;
        float f = d;

    思考题2:看看下面两个定义有没有区别呢?
        float f1 = (float)12.345;
        float f2 = 12.345f;

        f1其实是通过一个double类型转换过来的。
        而f2本身就是一个float类型。
*/
class DataTypeDemo5 {
    public static void main(String[] args) {
        //把double赋值给float,加了强制类型转换
        double d = 12.345;
        float f = (float)d;

        //看看下面两个定义有没有区别呢?
        float f1 = (float)12.345;
        float f2 = 12.345F;
    }
}



     B:下面的程序有问题吗,如果有,在哪里呢?
         
/*
    面试题:
        byte b1=3,b2=4,b;
        b=b1+b2;
        b=3+4;
        哪句是编译失败的呢?为什么呢?
        b = b1 + b2;是有问题的。
        因为变量相加,会首先看类型问题,最终把结果赋值的也会考虑类型问题。
        常量相加,首先做加法,然后看结果是否在赋值的数据类型范围内,如果不是,才报错。
*/
class DataTypeDemo6 {
    public static void main(String[] args) {
        //定义了三个byte类型的变量,b1,b2,b3
        //b1的值是3,b2的值是4,b没有值
        byte b1 = 3,b2 = 4,b;
        //b = b1 + b2; //这个是类型提升,所以有问题
        b = 3 + 4; //常量,先把结果计算出来,然后看是否在byte的范围内,如果在就不报错。
    }
}

        C:下面的操作结果是什么呢?
            byte b = 130;有没有问题?如果我想让赋值正确,可以怎么做?结果是多少呢?

class DataTypeDemo7 {
    public static void main(String[] args) {
        //因为byte的范围是:-128到127。
        //而130不在此范围内,所以报错。
        //byte b = 130;
        //我们可以使用强制类型转换
        byte b = (byte) 130;
        //结果是多少呢?
        System.out.println(b);
    }
}

        D:字符参与运算
            是查找ASCII里面的值
            'a'        97
            'A'        65
            '0'        48

          //直接输出一个字符
        System.out.println('a'); //a
        //输出一个字符和一个整数做加法
        System.out.println('a'+1); //98
        E:字符串参与运算
          
            字符串数据和其他数据做+,结果是字符串类型。
            这里的+不是加法运算,而是字符串连接符。

           System.out.println("hello"+'a'+1); //helloa1
           System.out.println('a'+1+"hello"); //98hello
           System.out.println("5+5="+5+5); //5+5=55
           System.out.println(5+5+"=5+5"); //10=5+5

     Java语言中的字符char可以存储一个中文汉字吗?为什么呢?
         可以。因为java语言中的字符占用两个字节。 Java语言采用的是Unicode编码。

猜你喜欢

转载自blog.csdn.net/Smile_Sunny521/article/details/89517424