Java基础(4)数据类型 数据类型以及类型转换

内置数据类型

  Java中,数据类型是一个很基础的东西,就像砖石之于房屋一样。代码无非是对于数据的各种操作,为了方便操作,提高效率,Java里将数据按照典型特征,分为了不同的类型。
   Java中,有八种基本类型,有六种是为了数字而定义的:一种字符型,一种布尔型。然后有一种叫String的东东,因为其在Javaweb中超高的出现频率,被我们戏称为第九种基本类型。 八种基本类型是根据占用储存空间的长度进行划分的。我们知道,电脑通过2进制数字来进行储存数据的,基本储存单元为bit,也就是0/1。但是bit太小了,实际生产中,使用这么小的单位肯定很繁琐,所以我们又把8个bit,称呼为一个byte,也就是通俗意义上的‘字节’。

数字类型

  Java中,数字类型细分之下,又可分为四种整数类型 byte、short、int、long,两种浮点数类型(小数)float,double;

整数类型

Java中,没有明确定义类型的整数,会被默认为int;

byte

这里的byte,顾名思义,就是占用8个bit空间的整数类型,这其中正负号占用一个bit,余下7个bit存放二进制数字,转换成十进制大小就是-27 到27 -1,也即是-128到127之间(为什么要减一,这个问题请向百度大大提问,这里写不下)

short

short的占位空间,是byte的两倍,两个字节共16bit,所以其大小是-215 到215 -1,也即是-32768到32767之间

int

int,是Java中使用最广泛的整数类型,同时Java中数字默认是int,其占位是byte的四倍,四个字节共32bit,-232 到232 -1,也即是-2,147,483,648到2,147,483,647,这个范围内的数字,Java都默认是int。这也就是说:

short s=1 ;
s=s+1;

这么写会报错,至于原因,我写在下面类型转换里面;

long

long的话,就比较大了,占位是byte的八倍,八个字节,共64bit,也即是-263 到263 -1,这个大小我就不算了……long型一般出现在编号这个属性上,还有时间戳也会经常使用long型来承接。属于使用频率仅次于int的整数类型。

浮点数(小数)

未被明确定义的浮点数,Java会默认为double

float与double

这两个我就放在一起了,因为浮点数其实很少用float,而且Java中,其实也是默认double的,底层甚至会把float转成double进行运算。平时使用尽量double。而且,有一点比较关键,涉及到金额之类的商业使用,不能有差错的数字,这俩都别用。咱们用BigDecimal。

字符型

char

JAVA中,char占2字节,16位。可在存放汉字
char a=‘a’; //任意单个字符,加单引号。
char a=‘中’;//任意单个中文字,加单引号。
char a=111;//整数。0~65535。十进制、八进制、十六进制均可。输出字符编码表中对应的字符。

作者:旧时光1234
链接:https://www.jianshu.com/p/3a3e5659159f
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

char类型用的确实太少了,,,,我就摘了一段别的大佬的介绍。

布尔型

boolean

boolean,一般用于逻辑判断,使用Java保留字 true/false。

数据类型的使用

在具体的编码过程中,我们也常常用到这些基本类型的包装类,因为这些包装类提供了更多、更全的方法封装。
byte → Byte

short → Short

int → Integer

long → Long

float → Float

double → Double

char → Character

boolean→ Boolean

我们平时使用数据类型的时候

我们在使用集合的时候,都会用包装类,包装类与基础数据类型的区别在于,包装类实例化之后,属于对象,需要用操作对象的方式来使用。基础数据类型的话,则可以使用常规的运算符号来进行运算。而且平时使用集合时候,需要使用包装类,例如下面这种写法则会产生语法错误。

List<int> aList=new ArrayList<>();//错误
List<Integer> aList=new ArrayList<>();//正确

在最新的jdk中,初始化集合已经不需要再次指定类型了。

基础数据类型之外的常用包装类

String

string的使用频率,几乎超越了所有的内置类型。被戏称为第九基本类型。

        String s=null;
        String s1="";
        String s3="我";

String其实是一个object对象,所以初始化的时候,可以直接用null,也可以用双引号指定内容。注意char的话,用的是单引号

Bigdecimal

这是java.math提供的API类,常用于商业运算,能提供更精准的计算结果。
BigDecimal一共有4个构造方法:
BigDecimal(int) 创建一个具有参数所指定整数值的对象。
BigDecimal(double) 创建一个具有参数所指定双精度值的对象。(不建议采用)
BigDecimal(long) 创建一个具有参数所指定长整数值的对象。
BigDecimal(String) 创建一个具有参数所指定以字符串表示的数值的对象
以上BigDecimal内容摘自百度百科。
说实话,我是最近才开始大量使用BigDecimal,BigDecimal提供了加减乘除的不同方法供调用,使用起来比较方便,尤其是金额操作,推荐使用这个。下面是我的一个小demo,这里解释一下,在数据库层面,我使用的是int来存放单位为分的金额,然后这里将金额数字转换成,单位为元的小数。

public static BigDecimal int2BigDecimal4Money(int i) {
        BigDecimal big = new BigDecimal(i);
        BigDecimal big2Div = new BigDecimal(100);
        return big.divide(big2Div, 2, BigDecimal.ROUND_UP);
    }

以后想到了其他的常用包装类型,我再补充。

类型之间的转换

类型转换是操作数据里面绕不过的一个操作;由于不同类型的数据,所占空间不同,所以转换的时候也是有点区别的。整数类型里面,小空间类型值转大空间类型值,是无感转换。不需要手动增加。但是大空间转小空间类型值,就需要用到一些强转方法。
我们可以把类型看作不同大小的容器,类型的之就像容器里面的鱼。
现在有个小鱼缸byte,装了条小金鱼 1,想要放到水池short里面,byte(1)转成short(1),只需要把小鱼缸byte里面的所有东西都倒在水池short里面就行了。因为水池short里面的容量,是肯定装得下byte里连鱼带水的所有东西。
但我想把short里面的小金鱼1,放到小鱼缸byte里面,就不能直接倒了,因为装不下,所以我们需要额外辅助,先把小金鱼1捞起来放到小鱼缸byte里面,然后把水倒满。今天先写到这里,我吃饭去了

猜你喜欢

转载自blog.csdn.net/moye666/article/details/91585922