🌀🌀🌀作者:@小鱼不会骑车 🍁🍁🍁专栏:《java练级之旅》 🎀🎀🎀个人简介:一名专科大一在读的小比特,努力学习编程是我唯一的出路😎😎😎

20160617194925_wLhez.jpeg

前言

这是小鱼写的第一篇关于java的博客,也可以说是对小鱼成长的见证者,在这片java大陆,我们一起练级,一起交流,借鉴优秀的作品,不断使自己进步,努力的写出更优秀的博客。(这篇博客总共2000字左右,涉及到完整的数据类型讲解,大家一般是15分钟就能阅读完成,作者把一些初学者的问题进行了解答,看完也不会感觉累,希望大家能够三连!!!)

在这里我给大家画了个简单的思维导图,可以很直观的帮助大家看到他们之间的层次,

在这里插入图片描述

(练级第一天)

练级第一步

了解数据类型

大家可以看到,这张图片简单的包含了数据的类型类型名内存占用的大小,以及范围注意!!!在java中每个数都默认是有符号的。 在这里插入图片描述 注意!!!

  • 不论是在16位系统还是32位系统,我们的int占4个字节,long占8个字节,
  • 整形和浮点型都是带有符号的
  • 整形默认int型,浮点默认double型
  • 字符串属于引用类型后续介绍

1.整形

1.1 byte

  • byte占一个字节(8个比特位)
  • 范围是-2^7 ~ 2^7-1(-128~127);
  • byte的包装类是Byte

接下来用IDE给大家看一下在编译器中我们的byte的最大值和最小值在这里插入图片描述 在这里插入图片描述 这个就是我们的编译器中byte的最大值和最小值,有的人可能会问,咦?你这个首字母大写的Byte什么意思,这里先不做过多解释,大家只需要知道,这个就相当于byte的加大版本就好,后续练级手册会讲解到(小鱼现在暂时没学,后续等小鱼学会了就会发博客),好的回归正题,

问题:如果我给byte存了个大于127的数会怎么样

这里我就要好好的夸一下我们的java了,在java中,如果我们存的一个值超过了这个数所能接受的最大数值,那么就会报错,编译也自然无法通过,如图, 在这里插入图片描述 再给大家看一下C语言的对比 在这里插入图片描述

大家可以看到,虽然我们的编译器可以通过编译,但是我们的值也已经发生了截断,这样就会造成数据丢失,是一个潜在的威胁,但是java不会,你给我的数字只要是大于我能够接受的范围,那我就报错,就像这个图 在这里插入图片描述 你把一个只能装一升水的杯子,妄想让他去装二升,那怎么可能,结婚还讲门当户对呢,更何况编译器(忽略我拙劣的画画水平)

1.2 short

  • short在任何系统下都占2个字节,也就是16个比特位(一个字节八个比特位),
  • 范围是-2^15 到 2^15-1,
  • short的包装类Short

接下来用编译器给大家看看short的最大值和最小值,在这里插入图片描述 在这里插入图片描述

这里给大家留下个问题,我们的short类型再进行运算操作时,是用两个字节进行的嘛,还是四个字节?同上,我们的byte类型也留下这个疑问

1.3 int

  • int在任何系统下都占4个字节,也就是32个比特位(一个字节八个比特位),
  • 范围是-2^31 到 2^31-1,
  • int的包装类Integer

给大家看看在编译器下我们的int类型的最大值和最小值 在这里插入图片描述 在这里插入图片描述 其实在C语言中,我们的int的字节是根据编译器的位数决定的,我们的编译器如果是32位,那么我们的int就是4个字节,如果我们的编译器是16位,那么我们的int就是2个字节,但是java不一样,java的宗旨就是在这里插入图片描述 这就体现了java的优势,到后面你们也会更加迷恋上java对于操作的方便,快捷,高效。

1.4 long

  • 长整型变量初始化值后加L或l(推荐加L)
  • 长整型无论在哪个系统下都占八个字节
  • 长整型的表示范围为:-2^63 ~ 2^3-1
  • long的包装类型为Long

接下来用编译器给大家看一下我们的long的最大值和最小值,特别特别大,在这里插入图片描述 在这里插入图片描述 大家就可以看到,非常非常大,19位数,以及超出我的认知了,不过如果大家感兴趣可以去百度一下在这里插入图片描述 今天可算是知道之前小说看到的无量境界是什么意思了。 现在解释一下我们上面提到的为什么后面要加上L或l, 在这里插入图片描述 在这里插入图片描述

关于为什么用大写的“L”各位也清楚了吧,这个编译器太坑了,根本不好区分“l”和1,所以大家要有一个好的编程习惯呦,用大写L!!!

2.浮点型

2.1 float

  • 单精度浮点型初始化要在后面加上f
  • float是四个字节
  • float a=10f;//标准写法 float的包装类位Float

可能有的人就会问,为什么要加上这个“f”, 在这里插入图片描述 大家看这个图,我们如果不加的话,编译器就会直接报错,因为浮点数在编译器中是按照八个字节存放的,但是float是四个字节,这样就会产生矛盾,所以我们需要在后缀加上“f”告诉编译器我是4个字节,不要再报错了!!! 在这里插入图片描述 float的包装类如上图

2.2 double

  • double在任何系统下都占8个字节
  • 浮点数与整数在内存中的存储方式不同,不能单纯的使用2^n的形式来计算
  • double的包装类为Double

3.字符类型(char)

  • 内存占用2个字节
  • 范围0~65535(字符类型没有负数)
  • char c1='A'
  • char c2='a'
  • 注意!!!java的字符可以存整形

问题1.存负数时? 问题2.我存一个整形值时? 问题3.可不可以存汉字?

来一个一个解答 在这里插入图片描述 第一个,由于我们的字符类型时没有负数的,所以第一个自然就会报错, 我们再看一下第二个和第三个的运行结果 在这里插入图片描述

大家可以看到成功的输出了,但是大家可能会有疑问,我明明存在c2的是97怎么就输出了a呢,其实因为a对应的ascll值是97,所以我们输入97其实就是a,另一个,我们的字符为什么可以存汉字,为什么c语言的不可以,其实是因为我们的java中字符类型是2个字节,那是因为我们的java中运行的是 unicode编码这个编码其中包含着我们所熟知的ascll的,大家如果有兴趣可以去unicode地址

4.布尔型(放在一起讲)

注意事项

  • boolean类型的变量只有两种取值,ture表示真,false表示假
  • java中的boolean类型和int不能相互转换,不存在C语言中的1表示,0表示的这一说辞
  • 同时我们的boolean类型不存在运算这个说法

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

会爆出这样的错误,解决办法 在这里插入图片描述 我们的while循环,以及我们的if判断条件判断的都是boolean,所以不能再和C语言一样用0或1表示真假了。

练级第二步

关于隐式类型转化和显示类型转化下一篇博客会讲解到。 我们下期见~