java基础知识3_变量、类型转换

变量:变量就是在程序运行过程中,其值可以发生变化的量。

        变量就是一个存储数据的容器。容器特点:1.容量(大小);2.存储一定格式的数据;3.名字

        声明(定义)一个变量的格式:数据类型    变量名字;

                                                     数据类型    变量名字 = 数据值;

                                                   数据类型    变量名1,变量名2,变量名3;    //一次声明多个相同类型的变量

                                                                      变量名1 = 值1;                 //给变量赋值

                                                                      变量名2 = 值2;

        变量名的命名规范:首单词小写,其他单词首字母大写,其他小写。

        变量的特点:1.变量是必须先声明,后使用;2.在一个作用域中,不能声明同名的变量。


        java表示一个变量的容器多大是使用了数据类型描述的。

        在java中主要有两种数据类型:基本数据类型(有8种)、引用数据类型(字符串类型:String)。

        java中的八种基本数据类型:

                整数的数据类型:

                        byte(字节)             8bit(位)        2^8=256        -128~127

                        short(短整型)        16bit                2^16=65536

                        int(整型)               32bit                2^32=

                        long(长型)            64bit                2^64=

                注意,如果一个整数没有加上任何的标识的时候,那么默认就是int类型的数据。如果需要把该数据变为一个long类型的数据,那么需要在数据后边加上L表示,L是不区分大小写的。

                疑惑:存储整数有四种数据类型,那么具体怎么选择使用呢?

                选择数据类型的原则:在能满足需求的情况下,理论上,能小就小,这样能节省我们的内存空间;

                         但是,在现实开发中,存储整数,一般都使用int类型,存储小数,一般都使用double类型。

                小数的数据类型:

                        float(单精度浮点型)        32bit        保留7个小数位

                        double(双精度浮点型)     64bit        保留15个小数位

                注意,如果一个小数没有加上任何标识的时候,那么该小数默认是double类型的数据。如果需要表示成float类型的数据,那么需要在小数的后面加上f表示,f不区分大小写。例如:float f=3.14f;

                布尔类型:布尔类型只有两个值,true 或者 false。

                        boolean    占1个字节或4个字节的内存(java规范2.0中sun公司给出的权威解释)

                        如果使用boolean声明一个基本类型的变量时,那么该变量占4个字节;

                        如果使用boolean声明一个数组类型的时候,那么每个数组的元素占1个字节。

                字符类型:

                        char    占2个字节 (16bit)


总结java的八种基本数据类型:

        整数类型:byte、short、int、long;

        小数类型:float、double;

        布尔类型:boolean;

        字符类型:char;(例如,char c = 'a';    //字符赋值用单引号)

字符串类型:String 属于引用类型,不属于基本类型。(例如,String str = "a";    //字符串赋值用双引号,String str = "";即字符串的值为空)


数据类型转换:

        小数据类型-------->大数据类型        自动类型转换

        大数据类型-------->小数据类型        强制类型转换    

        强制类型转换格式:    小数据类型    变量名 = (小数据类型)大数据类型的变量名

                【例如:int i = 10;                                    

                             byte b = (byte) i;】


        数据类型转换要注意的细节:

        1.凡是byte、short、char数据类型的数据,在运算的时候都会先自动转换成int类型的数据在运算。

                【例如:byte b1 = 1;    

                             byte b2 = 2;

                             byte b3 = (byte)(b1 + b2);】

                【例如:System.out.println('a');        //输出结果是a

                             System.out.println((int)'a');    //输出结果是97(a字符在计算机中所对应的数字)

                             System.out.println('a'+1);      //输出结果是98    】

        2.两个不同数据类型的数据在运算的时候,结果 取决于大的数据类型;

                【例如:int i = 10;

                             long l = 20;

                             i = (long)i + l;        //此处若i前不加long的话 会报错

                             System.out.println(i);    】

        3.A.以下例子不会报错,为什么?//10是一个常量,编译器在编译的时候就能够确认常量的值了,byte b=10,在编译到这的时候,java编译器就会检查到10并没有超出byte的表示范围,所以允许赋值。

                【例如:byte b = 10;    //一个整数没有加上任何标识的时候,默认是int类型的数据;

                             System.out.println(b);】

        3.B.以下例子会报错,为什么?//java编译器在编译的时候,并不能确认变量所存储的值,变量存储的值是在运行的时候才在内存中分配空间的。

                  【例如:int i = 10;    //javac编译时只是检查10这个值有没有超过 i 这个int类型数据的值的范围

                               byte b = i;    //编译到这时,i并没有存储值,编译时检测到i是int型变量,大于byte型变量b,故报错

                               System.out.println(b);】


        注意:在计算机中,如果一个二进制数据的最高位是1,那么该数据一定是负数;如果一个二进制数据的最高位是0,那么该数据一定是正数。负数在计算机中存储的是补码。

        验证:System.out.println(Integer.toBinaryString(-7));    //Integer.toBinaryString()是sun提供的一个功能,用来查询一个数据的二进制数据形式。

        原理,负数的存储过程:

                1.先取负数的绝对值,求出该绝对值的二进制形式(原码);

                2.原码取反得到反码;

                3.反码+1得到了补码。

        举例:1.    -7的绝对值是 7, 7对应的二进制是111,前边补0即 0000 0111,此值即原码;

                  2.    原码0000 0111取反,即1变0、0变1,得到 1111 1000,此值即反码;

                  3.    反码+1得到 1111 1001,此值即补码。

        倒推:如何通过补码求出真实的数据:

                  1.补码先-1;    2.取反;    3.在数据前面加上负号即可。





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值