不好好学代码 你连当韭菜都不够格

java零基础入门-面向对象篇(十一)  数据流动与包装类

面向对象学了这么多,满脑子都是对象,面向对象千好万好,可是就是不知道对象到底有什么用。

这节课来讲讲对象和数据流动,以及如何选取合适的方式处理数据。

讲解过程可能会涉及到web知识,没关系,先混个眼熟,只用理解对象那一块即可。

数据的流动

本人曾经炒过股票,那过程可是一个惊险万分,惊心动魄,惊为天人啊。一直都非常自信非常自我非常骄傲的我,认为自己完全就是天选之人,没赚到钱只是暂时的,总有一天我会抓住大黑马,然后走向人生巅峰。

直到有一天我突然看见了一张图。


心态

我看着这张图,发现这个世界上居然有人能把我的心态揣摩的这么详细,高,实在是高。当然,最后亏得差不多了,我就金盆洗手了。

为了玩股票,肯定少不了看股票网站或者app,我们看看对象如何 “带着” 数据一起动起来。

首先有一个网站,他为广大韭菜们提供各种各样的股票数据。数据的获取渠道有很多种,我们这里不详细说。只用知道每个网站都有“一个”数据库,用来存放数据。

网站数据采集

网站有了数据,并且存放在了数据库,然后就等着各种端,WEB端,移动端来获取数据。但是各种客户端是不能够直接与数据库进行交互的,他们需要一个中介,那就是服务器

我们前面有介绍过服务器,这个中介很厉害,他一边可以接受来自客户端的请求,一边从数据库里面掏出数据,递给客户端,这就是服务器的作用。

中间这个就是服务器

其实精确的说,应该是服务器上的java代码帮我们完成了这个动作。客户端的请求发送到java代码,java代码去数据库查找客户端需要的数据,然后返回给客户端,这样就形成了数据的流动。


数据的流动

数据库和客户端我们现在不去了解,我们重点来看看这里的java做的工作,这里的java代码用对象将数据封装起来,从数据库“搬运”到了客户端。具体看个例子。

我们可以将数据库里面的数据,想象成excel表格中的一行数据,像这样。


一条数据

有没有一种熟悉的感觉?这不就是属性和赋值吗?你的感觉很对,我们在设计数据库的时候也会参考对象的设计理念,虽然设计数据库还有各种各样数据库自己的规则。

我们从数据库里面将这一条数据拿出来,直接将他放进一个对象里面。


从数据库到客户端

客户端也是可以直接获取对象的,在拿到服务器返回的数据以后,客户端就可以将数据展现在网页或者APP里面了。

客户端展示数据

这样就完成了数据从数据库 “流动” 到客户端的过程,java里的对象很好的体现了载体的作用,他将数据合理的聚合在一起,使我们很方便的操作数据。

包装类

讲完了数据的流动,我们再来讲一个概念,包装类。

包装类就是将基础类型转换为对象,让操作基础类型可以像操作对象一样简单。

java里面的数据操作一般都是通过基础类型完成。比如我们对数据进行加减,求和等等,但是基础数据也有局限性,比如一些非计算的操作。

有时候我们获取到的数据是字符串,而又需要将字符串String里面的内容当做数字进行计算,这时候我们就需要使用包装类来做转换。

八种基础类型对应八种包装类。Double,Float,Long,Integer,Short,Byte,Character,Boolean。

其中数值类型使用频率最高,数值类型中Integer,Long,Double使用频率最高。

这里通过使用频率最高的Integer来讲解包装类,其他的几个包装类大同小异。


Integer源码

查看源码的方法前面讲过了,这里展示了包装类的基本用法。

首先定义一个基础类型。然后使用这个基础类型创建一个Integer的对象,Integer包装类也是一个类,他有自己的方法,成员变量,当我们使用基础类型作为参数的时候,我们可以看到,这个包装类仅仅就是把这个基础类型当成了成员变量。

而基础类型的操作可以通过方法来实现,比如这里是将currentPrice对象转换成float类型,在源码里面,其实是将成员变量value进行了强制转换。

各位看清楚了没有,其实包装类就是将基础类型封装到一个类里面,基础类型是不具备扩展性的,而类是可以扩展的,我们可以为类添加各种各样的方法,这样我们就可以定制各种我们需要的功能。


数据转换

这个字符串转换的操作使用比较频繁,因为在开发过程中,不同的系统对数据的定义可能不一样,有很大的概率碰到这种字符串数据,所以需要进行类型转换以后再进行操作才能得到我们想要的结果。

自动装箱与拆箱

上面在定义包装类的时候是用 new 来创建对象,但是这个操作比较麻烦,好在jdk帮我们做了一些操作,看下面的例子。


自装箱与拆箱

首先看自动装箱,自动装箱就是直接将一个int类型的数值赋值给Integer类型对象,不需要使用 new关键字来创建。其实这个地方只是没有手动new对象而已,在我们看不见的地方,jdk帮我们完成了new对象这个动作。

我们查看源码可以看到,Integer有一个专门的缓存,用来存放-128到127之间的数据。当我们需要的值在这个范围内,程序会直接从缓存中获取值并返回给我们,然后赋值给变量currentPrice1。如果值不在这个范围内,比如我们这里是  218 ,它不在缓存范围,那么程序做的事其实和我们一样,使用 new 关键字创建了一个 Integer 类型对象赋值给 currentPrice1。这就是自动装箱的过程。

自动拆箱就更简单了,将一个Integer类型的对象直接赋值给一个int类型变量,就是自动拆箱。

通过源码我们看到,他是将一个Integer类型对象中的成员变量value,使用 intValue 方法拿出来,赋值给currentPriceInt1。


有了自动装箱与拆箱,在编写程序的过程中可以更加灵活方便的在基础类型与对象之间进行转换。


-----分割线----------------------------

越简单的知识越难写,最近更新慢,各位见谅。

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

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,656评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,124评论 25 707
  • 在家人们聊的正激烈时,他气愤的走了出去。 当时我在看电视,不知道发生了什么。来不及了解这件事,大脑的第一反应就是去...
    k坚持阅读 199评论 0 1
  • 人宏无量 步入冬日的丛林 天地两隔 嚎不尽血生亡合 狼族规法本应如此 道不尽是非残全 诉不尽冷暖亲离 这才是狼真正...
    狼眼阅读 533评论 4 3