【JAVA零基础入门系列】Day3 Java基本数据类型

  前两篇已经将开发环境搭建完成,如果你已经按之前的教程按部就班的完成了部署,那么世界上最优秀的编程语言之一和世界上最优秀的IDE之一已经出现在你的电脑上(此处应有掌声),如果你还没入门,或者正在台阶上踱步,可能你还不能理解这个“最优秀”的含义,没有关系,这顿美味需要我们来细嚼慢咽才能品尝到它的独特之处。

  接下来,就让我们一起来正式揭开Java的面纱。

  Java是一门简单、面向对象、高性能、安全性高、健壮性强、移植性好的语言(一本正经的胡说八道中)。Java的语法跟C++很像,如果有过C++学习经验的人,学习Java上手会容易很多,Java一开始很多特性都跟C++相同,比如基本的程序结构、类、语法规则等等,但是删除了其中很多复杂的东西,比如头文件,结构,联合,操作符重载、虚基类等等,看到这里,学过C++的你可能会觉得很高兴,终于不用跟那些奇奇怪怪的东西打交道了。别高兴的太早,因为,还有让你更高兴的(手动滑稽),那最头疼的指针操作部分,也去掉了,可以说是一个纯净简化版的C++,但也添加了很多自己的特性,没有了多重继承,取而代之的是接口和内部类,由于不允许直接操作指针,所以就不会因为对指针的一顿瞎操作而出现神奇的bug,当然,也少了很多寻找bug的乐趣(尴尬),Java在安全性能上是可以信任的,因为永远不会存取一个坏的指针,而造成内存分配的错误,也不存在内存泄漏问题。所有那些因为指针引起的安全隐患,都不存在的。

  也许说了这么多,对于新手的你,看的云里雾里,不知所云,没关系,你只需要知道,Java上手并不难,只比绕操场跑上十来圈难那么一点点,但如果你只是想来散散步的话,那你可能没有机会享受到汗流浃背后的满足感了。

  言归正传,Java可以写桌面、可以写Android、可以写服务器、可以写企业级业务、可以写互联网业务。如果你以后想在安卓开发、服务器开发、网站后台开发和维护上有所发展,那Java将是你不错的选择。如果只是想来膜拜一下这门常年位居编程开发语言排行榜榜首的语言,那也可以来看看,俗话说的好,技多不压身嘛,以后见了不会编程的朋友,还可以装个X说我也是学过Java的人(憋笑)。

  简单介绍了Java的功能后,能坚持看到这说明你已经有点小心动,想要继续学下去,那就跟我一起来进行系统的学习吧。

  要学习Java,自然要从基本的数据类型说起,那么,什么是数据类型?顾名思义嘛,就是不同的数据有不同的类型,就像人按性别分男女,按年龄分老中少,按性情分攻受(咳咳,这里只是为了举个栗子),在java里,基本的数据类型有四种,整数型,浮点型,布尔型和字符型。下面来一一介绍。

  整型,自然就是用来存放整数的, 比如说:1,2,3,4,100,等等,一般的整数都可以用int型来存放和操作,整型还可以根据取值范围需求不同再细分成int型,short型,long型,byte型,这几个兄弟排个序,从大到小分别是long、int、short、byte。long型最大,占用8个字节(在java中,讨论最小的存储单元是bit,也就是位,byte是字节,跟位的换算是:1byte=8bit,1kb=1024bytes=210bytes),作为整型中的老大,占用8*8=64位,所以除去第一位用于储存符号位,其它63位可以用来表示数值大小,所以它的表示范围为:-263 — 263-1。大概是百亿亿的级别,所以要是用来存放你的银行卡余额的话,还是不要劳烦long型了(滑稽)。作为最常用的整数型老二,int型可谓是人尽皆知,几乎成了整型的代表人物,它只占用4个字节,取值范围为-231 — 231-1,比21亿稍微多一点。而老三short,顾名思义,比较“短”,不能跟18cm的long型相提并论,只占用2个字节,表示范围为-215 -- 2^15-1,也就是-32768 -- 32767,做小范围的加减乘除的话是够用的。最后介绍的老四,byte型,只占用一个字节,可谓是相当拮据,表示范围为 -128-127。所以存余额的话,byte,short型太短,long型太长,所以用int型最经济实惠。

  初学编程的人可能会问了,好好的整数型,还分那么细干嘛。这你就不懂了吧,举个栗子,因为用于存放数据的内存空间是以位为基本单位,可以理解为很多很多相同的小盒子,相同的数据类型需要用同样大小的空间,不然程序就不知道数据的开始和结束位置,用数据头部来存放大小长度信息显然有些浪费空间,那么现在的问题是,一个整数,用多大的空间合适?你可能会觉得,都用同样大小的空间不就好了,那都用8个字节来存储,用来存放大数值的时候很好用,但是用来存放你的年龄的时候,仿佛浪费的空间就有点多了,就好比现在你有一个篮球,一个网球,一个足球,一个乒乓球,都需要用同样大小的盒子来单独存放,那规格自然只能按最大的来算,当你往那个大盒子里放一个乒乓球的时候,不觉得很浪费空间吗。所以为了避免这样不必要的浪费,设计多种整数型是有必要的。当然,也没有必要对于内存太过斤斤计较,如果不是在搞算法研究,不是对时间跟空间效率要求很苛刻的条件下,基本上都用int型就好了。毕竟一般情况,运行效果比运行效率更重要。

  接下来说浮点类型,为什么叫浮点类型,自然是用来表示浮点数的(废话),那什么是浮点数,这。说来又要有一段文章了。在计算机中,表示小数有两种方法,一种叫定点,一种叫浮点。 ](http://upload-images.jianshu.io/upload_images/12129539-29425722cff526de.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

  以32位程序为例,定点的意思是,小数点固定在 32 位中的某个位置,前面的是整数,后面的是小数。小数点具体固定在哪里,可以自己在程序中指定。例如上面的例子,小数点在 23 bit 处。无论你是124.25,是0.5, 还是100, 小数点都在 23 bit 的位置固定不变。

image

  浮点数是相对定点数而言的,浮点数的表示方法为:
image

  最高的 1 位是符号位 s,接着的 8 位是指数E,剩下的 23 位为有效数字 M。例如:

5 DEC = 101 BIN = 1.01 x 2^2

100 DEC = 01100100 BIN = 1.100100 x 2^6

0.125 DEC = 0.001 BIN = 1 x 2^-3

  现在,小数点的位置就漂浮不定了。如果想了解关于浮点数的存储问题,可以看看这篇文章,https://www.cnblogs.com/jillzhang/archive/2007/06/24/793901.html

,当然,新手的话建议先别看了,免得被吓跑了,你只需要知道,浮点型就是用来存取带小数点的数就可以了。

  浮点数也分成两个类型,float和double,float占用四个字节,取值范围为-2^128 ~ +2^128,也即-3.40E+38 ~ +3.40E+38;double占用八个字节,取值范围为-2^1024 ~ +2^1024,也即-1.79E+308 ~ +1.79E+308。

float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字;

double:2^52 = 4503599627370496,一共16位,同理,double的精度为15~16位。

  你如果对于这两个类型傻傻分不清楚,那就只用double类型就好了,java里最常用的浮点类型就是double类型。

  扯的有点多了,布尔型都等不及了,别担心,布尔型(boolean)是最简单的,只有真(true)跟假(false)两种状态。

  最后就是字符型(char),用于存放字符的数据类型,占用2个字节,采用unicode编码,它的前128字节编码与ASCII兼容字符的存储范围在\u0000~\uFFFF,在定义字符型的数据时候要注意加' ',比如 '1'表示字符'1'而不是数值1。

  好了,基本数据类型就介绍这么多了,总的来说,整型用来存放整数,浮点型用来存放小数,布尔型用来存放真假,主要用于逻辑判断,字符型用来存放单个字符,比如:'a','b','c'等等。Java中整数默认为int型,小数默认为double型。

  最后再说一点,不同数据类型之间也是可以相互转换的。Java中也是有着弱肉强食的规则,谁占地多谁就大,一个整数型int跟一个浮点型double一起运算时,会自动转化为double型,这样就能无精度损失的进行数值运算了。下面是数据类型之间的合法转换:

image

  那我非要进行“非法转换”怎么办,一个占用8字节的double型非要转换成占用4字节的int型该怎么办,那就只能用强制类型转换了,但这样可能会造成精度的丢失。具体情况暂时不多做介绍了,不然又要说半天才能说的完了。

  好了,今天的内容到此结束,基本数据类型都看了个遍,如果还是有些不明白,也没有关系,一回生二回熟嘛。来日方长,日后再说吧。(溜了溜了)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容

  • 一、Java 简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计...
    子非鱼_t_阅读 4,148评论 1 44
  • 第一类:逻辑型boolean 第二类:文本型char 第三类:整数型(byte、short、int、long) c...
    Jasonme阅读 1,063评论 0 4
  • 目录:1.基本数据类型2.引用数据类型 数据类型: Java语言是一个强类型语言 1.所有变量,必须先声明类型...
    Ansaxnsy阅读 983评论 0 7
  • 《送霾君》 作者 娜娜 云也朦朦雾蒙蒙,雾霾笼罩在龙城。 人流车流慢行进,如同行在仙境中。 太阳自东升高空,雾霾...
    芙蕖姑娘阅读 241评论 2 2
  • Shaoerting (芯妈)@2017.11.26周日 芯芯第460天,15M+2天 1、感受:温馨、惊喜、快乐...
    Shaoerting阅读 197评论 2 2