java学习笔记2——java数据类型总结

有其他语言基础的这里不再重复累赘,就记录一些java独特的地方

一、java的数据类型

类型二进制位数默认值对应的封装类
byte80Byte
short20Short
int40Integer
long80Long
float40.0Float
double80.0Double
char2空格Character
booleanfalseBoolean

二、整型

byte的取值范围为-128~127(-2的7次方到2的7次方-1)
short的取值范围为-32768~32767(-2的15次方到2的15次方-1)
int的取值范围为(-2147483648~2147483647)(-2的31次方到2的31次方-1)
long的取值范围为(-9223372036854774808~9223372036854774807)(-2的63次方到2的63次方-1)

       基本上int型的参数就已经可以满足我们日常编程需求了,在这里需要注意的是如果定义了一个long型的参数,就需要加一个L,例如:

long i=100L//这里个人建议用大写的L,因为小写的l和1差不多,不易分辨

三、浮点型

       学过计算机原理的应该都知道,这两个类型的区别在于精度不同,double比float精度更高,范围更大
单精度:float 3.402823e+38 ~ 1.401298e-45
(e+38表示是乘以10的38次方,同样,e-45表示乘以10的负45次方)
双精度:double 1.797693e+308~ 4.9000000e-324

       这里在使用float的时候,和long一样,需要在后面加F,比如:

float f = 100F;//个人建议这里也大写,养成良好的编程习惯

四、字符型

       char是按照字符存储的,在代码中用引号,不管英文还是中文,固定占用占用2个字节,用来储存Unicode字符。范围在0-65536。例如:

char s=‘码’;

       char可以存储中文,那个问题来了:
       为什么char型的可以存储utf-8的字符呢?
       首先,GBK的汉字是两个字节的,而utf-8是三个字节的。在java的内部存储中,都是以unicode为主,一个汉字转化为unicode是两个字节,当汉字进行存储后,java会把汉字转化成unicode编码,这样子就可以存储进去了。而utf-8,GBK只不是过外在软件的编码格式,并不是内部存储的格式。

       其实在存储汉字的时候,utf-16的效果要比utf-8优秀,因为utf-16只需要2byte的大小就行。


五、布尔型变量

       布尔型变量还有true和false两种,在C语言中可以用1表示true,0表示false,但是在java中是不允许的。


六、String

       很多人会把String当成是java的基本来类型之一,其实并不是。String是一个引用数据类型,是java中的一个类。String类型的参数用双引号表示。例如:

String s="12345";

七、强制类型转化

1、自动类型转化:

       byte–>short–>int–>long–>float–>double
       例如:

int a = 5;
long b=a;//这是成立的,反过来byte b=a;就不成立了,需要强制类型转化
2、强制类型转化:

       例如:

int a = 8;
byte b=(byte)a;//强制类型转化是在参数前用括号加上数据类型进行转化

       但是这种方法并不是全部情况都使用,需要看情况而定,因为这样子
       1、会损失精度 。2、容易超出取值范围出错。


八、java引用类型

       java有5种引用类型,分别是类,接口,数组,枚举,注解,这里不过多介绍


九、封装类

       java的八大数据类型都有对应的封装类。
       在实际编程中,基本使用的是基本数据类型来存储数据,这主要是因为如果用封装类,对于程序的开销就会变大,而这在实际中是完全没有必要的。
       那为什么还要设置类呢?因为在java中,泛型类包含了预定义的集合,在这里使用的是对象类型,无法直接使用基本数据类型,所以定义了封装类,提供这些基本数据类型的包装容器。而且封装类中提供了有用的方法,可以对进行数据的操作。这里不做过多介绍


十、拆箱装箱(Autoboxing and unboxing)

举了例子:

Integer a = 100; //这是自动装箱(编译器调用的是valueOf(int i))
int   b = new Integer(100);// 这是自动拆箱

       我觉得可以粗浅的理解成,进行赋值的时候,根据定义参数的类型进行基本数据和包装类的自动转换。比如第一行,定义为integer类,后面为int值,就自动封装为integet类,值为100,拆箱也是,将integer类取值赋值给int的b。
       大致了解一下,具体详解大家可以看一下调用valueof方法的源码,可以发现integer的装箱会有点不同。这里便不详细解释了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值