欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java-数据类型与转换

程序员文章站 2022-06-01 22:03:20
...

数据类型
(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编码。