java学习笔记之变量与数据类型

标识符

变量和类的名字  int a = 3;就是标识符

可是字母,下划线开头的由字母,下划线,数字和$组成的字符集,不能是java中的关键字,如public  class等

 

数据类型

基本类型

  • 整数

         byte 一个字节(8位二进制表示)  表示的范围是-128 ~127  //中间还有0

         short  两个字节(16位表示) 表示的范围是-256 ~255

         int  四个字节  表示范围 -2E31 ~2E31-1   //java可用科学计数法表示,System.out.println(412e-2);结果4.12

         long 八个字节  当要表示一个大于该范围的数,;在java中整数常量默认是int类型

      这个数超过了int所能表示的范围,所以需要转换类型,这里不建议加小写的l,容易混淆;

      在java中可以调用BigInteger类来表示超过long表示范围的数字;

 

                 java默认的数字常量都是十进制,那么要表示八进制,如下:

                       

                 int a = 010;//数字前面加0,至于用哪个类型来定义,依旧取决于数字的大小,输出是8

  

                要表示十六进制,如下:

 

                int a = 0x10;//数字前面加0x,输出是16

 

                要表示二进制,如下:

      

                int a = 0b 000011000;//数字前面加0b

 

但是输出用不同进制表示的数都是十进制

 

  • 浮点类型   

        float: 4个字节 表示范围-3.403e38 ~ 3.403e38  

 

                    可以看到虽然float和int都是用4个字节来表示,但是float的表示范围远远大于int,这是因为浮点数存在舍入误差;

                    在java中默认的小数是double类型,如float f = 4.14     //提示错误,类似long那块提到的

                                                                              float f = 4.14f   //正确,相当于做了类型转换

 

       double:8个字节 这两种小数类型都存在误差,要想精确的表示,java中可以调用BigDecimal;

    

  • 布尔型

         boolean 取值 true或者false,最多用在判断、循环条件里。它在java中仅用一位来表示;

  • 字符型(在c中字符型和字符串都属于基本数据类型,但是在java中字符串String是一个独立的类)

        java中采用了Unicode字符集,是通用的,基本包含了所能用到的所有字符,一个字符两个字节,所以char类型的是两个字节,能表示65536个字符;

      char类型的可以当做整数直接进行运算:char c = ‘A’;

                                                                   int a = c+2; //给字符类型的变量做加法,结果是一个整数类型int,输出整数

                                                                   char = (char)(c+2); //通过强制转型,也可以把结果转化成字符类型

引用类型

        包括类和接口,后面会讲到;

类型转换

自动转换

容量小(容量指的是表示的范围不是表示位数)的可以自动转化成容量大的,因为就不会存在放不下的问题,这个好理解;

long(8位表示) 可以自动转换成float(4位表示)// float表示的范围更大,但是可能会丢失精度

short a = 100;

int b = a;//正确

 

强制转换

那么容量大的向小的转换就必须强制转换,方法如上面提到的int转换成char是一样的;

 

但是如果一个变量已经超出了你要强制转换的类型的表示范围,也能运行,但是java会输出一个毫无意义的值:

类型提升

 

在做二元运算的时候(+-#/%),会有类型提升的问题:

 

  int a = 3;

  long b = 4;

  int c =a+b;  //提示错误,做了运算之后的结果提升为long类型的,除非强制转型

  long c = a+b; //正确

但是如果是这样:可以看到两个int类型的变量做运算,结果应该是int类型的,但是又超出了int的表示范围,输出一个无意义的值

 

 

那么把结果直接定义成long呢?我们看到还是不行。这就需要我们做强制类型的转换,那么怎么转呢?

 

下图这样还是不行,因为你在强值转换时结果已经是一个无意义的数字,所以我们应该对一个因子做准换,通过计算时类型提升来得到结果

 

下图所示,相当于在计算前对a做了强制转换,一般我们把计算中的第一个因子做转换,因为担心连乘情况下到后面的位置已经超出范围

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值