Java基础语法--变量--变量类型--变量类型转换

一、变量

(1)在程序的执行过程中,其值在某个范围内可以发生改变的量。
(2)变量的定义格式:
    A:数据类型 变量名 = 初始化值;
    B:数据类型 变量名;
      变量名 = 初始化值;
(3)从本质上讲,变量其实是内存中的一小块区域,使用变量名来访问这块区域;
    因此,每一个变量使用前必须要先申请(声明),然后必须进行赋值(填充内容),才能使用。
(4)为什么要定义变量呢?
    答:用来不断的存放同一类型的常量,并可以重复使用。

---------------------------------------        
使用变量的时候要注意的问题:
    A:作用域
        变量定义在哪一级大括号中,那个大括号的范围就是这个变量的作用域。
        相同的作用域中不能定义两个同名变量。
    B:初始化值
        没有初始化值的变量不能直接使用。
        你只要在使用前给值就行,不一定非要在定义的时候就立即给值。
        推荐建议:在定义的时候就给值比较好。
    C:在一行上建议只定义一个变量。
        其实也可以定义多个变量,但是不建议,不好看。

二、数据类型  

(1)Java语言是一种强类型语言,针对每种数据都提供了对应的数据类型。
(2)数据类型的分类:
    A:基本数据类型:4类8种。

 


    B:引用数据类型:类,接口,数组、字符串、Lambda。
        注意:字符串、Lambda这两种引用数据类型后面会学习到。

(3)基本数据类型
    A:整数类型      占用字节数(Byte)     默认是有符号的,数据范围是:  
        byte            1                                     -2^8 ~ 2^7-1(-128 ~ 127)
        short           2                                     -2^15 ~ 2^15-1
        int             4                                       -2^31 ~ 2^31-1
        long            8                                     -2^63 ~ 2^63-1
    B:浮点类型
        float           4                                      -3.403e38 ~ 3.403e38        -3.4.3*10^38 ~ 3.4.3*10^38
        double          8                                   -1.798e308 ~ 1.798e308      -1.798*10^308 ~ 1.798*10^308
    C:字符类型
        char            2
    D:布尔类型
        boolean         1
---------------------------------------            
注意的地方:
    a:整数默认是int类型,小数默认是double。
    b:声明长整数要加L或者l。
        例如:int i1 = 600; // 正确。     long l1 = 88888888888L; // 必须加L或l否则会出错。一般用大写的L,因为小写的l像1。
    c:声明单精度的浮点数要加F或者f。
        例如:double d = 12345.6; // 正确。   float f = 12.3f; // 必须加f或F否则会出错。损失精度。
    d:char类型数据用来表示通常意义上的“字符”,字符常量为用单引号括起来的单个字符。
        例如:char ch1= 'a'; char ch2='中';
    e:Java字符采用 Unicode 编码,每个字符占两个字节,因而可用十六进制编码形式表示。注:Unicode是全球语言统一编码。
    f:boolean类型适于逻辑运算,一般用于程序流程控制。
        boolean类型数据只允许取值 true 或 false ,不可以 0 或非 0 的整数替代 true 和 false ,这点和C语言不同。
    g:与整数类型类似,Java浮点类型有固定的表数范围和字段长度,不受平台影响。
        Java浮点类型常量有两种表示形式:
              十进制数形式, 如: 3.14     314.0
            科学记数法形式,如:3.14e2        3.14*10^2
    h:Java各整数类型有固定的表数范围和字段长度,其不受具体操作系统的影响,以保证Java程序的可移植性。
    i:所谓的有效数字:具体地说,是指在分析工作中实际能够测量到的数字。所谓能够测量到指的是包括最后一位估计的不确定的数字。
        例如:对于一个近似数,从左边第一个不是0的数字起,到精确到的位数止,所有的数字都叫做这个数的有效数字。

 

 三、数据类型转换

(0)一般来说,我们在运算的时候,要求参与运算的数据类型必须一致。
(1)boolean类型不能转换为其他的数据类型。
(2)默认转换(从小到大):
    A:byte,short,char --> int --> long -- float -- double。
    B:byte,short,char相互之间不转换,他们参与运算时首先默认转换为int类型。

(3)强制转换(从大到小):
    A:可能会有精度的损失,一般不建议这样使用。
    B:格式:
        目标数据类型 变量名 = (目标数据类型)(被转换的数据);
    C:注意:不要随意的去使用强制转换,因为它隐含了精度损失的问题。
(4)思考题和面试题:
    思考题:请问下面这个有没有问题?
        double d = 12.345;
        float f = d;
        答:有问题,可能损失精度。
    A:下面两种方式有区别吗?
        float f1 = (float)12.345;
        float f2 = 12.345f;
        答:f1其实是通过一个double类型转换过来的。
            而f2本身就是一个float类型。
    B:下面的程序有问题吗,如果有,在哪里呢?
        byte b1 = 3;
        byte b2 = 4;
        byte b3 = b1 + b2;  // 数据类型提升了,有问题,可能会损失精度。
        byte b4 = 3 + 4;    // 没问题。常量,是先把结果计算出来,然后看是否在byte的范围内,如果在就不报错!
    C:下面的操作结果是什么呢?
        byte b = (byte)130; // -126
        我们要想知道结果是什么,就应该知道是如何进行计算的。
        而我们又知道计算机中数据的运算都是补码进行的。
        而要得到补码,首先要计算出数据的二进制。

        a:获取130这个数据的二进制。首先130默认是有符号的int类型。
            00000000 00000000 00000000 10000010
            这是130的原码,也是反码,还是补码。
            即在计算机内部存储的是补码:
            00000000 00000000 00000000 10000010
        b:做截取操作,截成byte类型的了。
            10000010 
            这个结果是补码。
            注意:电脑显示屏幕显示的是原码,且为十进制。
        c:即已知补码求原码。
                    符号位     数值位
            补码: 1           0000010
            反码: 1           0000001
            原码: 1           1111110
            即得到输出是-126
    D:字符参与运算
        是查找ASCII里面的值
            'a' --> 97
            'A' --> 65
            '0' --> 48
        System.out.println('a'); // 97
        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

  • 6
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值