(疯狂java)第四课(上)
趁着周末玩爽了,兴致来了,继续玩玩java(估计再玩下去,就要被java玩了),第六章实在是很长,那就两个阶段来看吧。
1.java 7的增强包装类
这些包装类就是java上的基本类型,只不过人人基本都是C过来的,那么不可避免的有一些惯性的思维。除了int和char类型之外,其余的都是把首字母大写,我靠,这个有点太坑了吧,你哪怕都用JA打头也比这样强,一点特色都没有啊。为了让C语言的基本的类型和包装类之间能够好好的转化,java也很聪明的提供了一些默认的方法,比如xxxvalue()...,有一点要说一下,这个方法会用到缓存的原理,这样避免产生太多的内存分配,是一种不错的策略。
2.toString
如果用过OC的朋友们,可以参考descrbtion方法来理解。这个玩意就是对类的一种描述,可以进行重写,没有什么特殊的意思,可以用来作为类的说明和注释。
3.==和equals
这两个方法但从语言本身来说意思是一样,比较是否相等。不一样的地方在于,==用于变量的时候只要数值一样大,就是返回ture,否则为false。equals是用来作为对象比较的,如果==也用来比较对象呢,很不幸,这个两个意思是一样的,比较两个对象是否是相等,对象怎么才能相等呢,很显然我认为,内存上面地址一样,那就肯定是相等了。书中例子说了一个常量池和新生对象之间比较的问题,这个还是要注意的,毕竟常量还是比较low一点的。
4.类成员
类成员在各种面向对象的编译性语言里面几乎都会涉及,这个玩意就像是给类加了一个尾巴一样,所有的类都有这么一根,而且是唯一的一根尾巴,根据这个特性,单例可以被创造了,单例是很有用的东东,很多的工程都会用到,打个比方说,单例就像是一个收费站一样,只有一个收费入口,每次大家都只能从这个一个地方进,而且你还只有这么一个收费站可以进。
5.final
以前上学的时候感觉这么个东西,简直就是在抄袭C、C++里面的const变量,说白了这个玩意修饰常量的时候,一般就是直接赋值,然后不可改变,如果是修饰对象的时候,那么就不一定了,你不能对这个对象进行简单粗暴的改变,比如直接赋值给这个实例,但是你可以去改变这个实例俩面的某个变量的值,还有一点如果想深入理解,我建议看看const *和* const的区别。在对于局部变量的时候,final的变量是可以先声明,再赋值的。如果修饰方法,那么这个方法就不能被重写了。如果这个方法是私有方法,那么子类依然可以重写,因为私有的方法的范围只能是本类。
6.抽象类
有抽象方法的类一定是抽象类,抽象类里面可以没有抽象方法。这个就比方说,你喜欢吃饼干就是喜欢吃货,但是你是吃货,不一定喜欢吃饼干,就是这么个道理。抽象用abstract来修饰。当你定义了一个抽象方法的时候,必须有子类来进行实现,那么也就是说必须有子类重写实现这个方法,那么这个有什么用呢。比如说你像定义一个交通工具类,那么这个类有个驾驶的方法,但是汽车,自行车的驾驶方法是不一样的,很显然的,你制定了一个标准,让子类们知道要特事特办,而不是千篇一律。同样,还有一点很重要,要说到多态,也就是说,让父类的实例通过子类来进行初始化,而且父类可以直接调用子类的这个实现的抽象方法,这个也就是说上次说的多态。这些都是先生鸡再有蛋的关系,有时候既然有个玩意出现了,那么它肯定是有自己的安排的。
好吧,这个章实好长啊,不看了,碎觉去了。
(疯狂java)第四课(上)的更多相关文章
- Java实验--关于课上找“水王”问题分析
问题的表述就是说有那么一个人,他在一个论坛上发帖,然后每贴必回,自己也发帖.那么这个人在发帖的数目上就超过了整个论坛的帖子数目的一半以上. 我对这个问题一开始的思路是,用SQL语句获取整个列表中的数据 ...
- java web(四)文件上传与下载
一.文件上传原理 1.在TCP/IP中,最早出现的文件上传机制是FTP ,它是将文件由客户端发送到服务器的标准机制:但是在jsp使用过程中不能使用FTP方法上传文件,这是由jsp运行机制所决定. 通 ...
- 疯狂JAVA——第四章 流程控制与数组
4.5 数组类型 数组也是一种类型.它本身是引用类型.例如int是一种基本类型,int[]就是引用类型. 两种定义数组的方式: 1.type[] arrayName; 2.type arrayName ...
- (疯狂java)第三课
最近很忙,都没有看书,罪过... 第五章(面向对象上) 1.类是一种对数据结构的封装,也就是说,一个类在在理解上事存在实际的含义的,比如一个人类,人类也是个类,表明这个类不是家禽类,是有人的特点的生物 ...
- java第四课:数组
1.数组声明时,必须有中括号,但不指定数组的元素个数2.初始化时,必须指定元素个数3.数组元素内容仅能用于声明时初始化,不能用于赋值.如:char[] week; week={'1','2','3'} ...
- Java 第四课 对象 类
1.构造方法可以为private public 2.抽象类可以有构造方法,但是必须在子类中调用(super.构造方法)
- 关于转入软件工程专业后第二次java课上作业的某些体会
今天是第二周的java课. 自从转入了软件工程专业后,在我没有学习c++的基础上,直接开始了学习java的过程.不得不说过程很艰辛.今天下午老师让编写一个随机产生作业的软件.而我的基础差到都不知道如何 ...
- 20155205 《Java程序设计》0510课上实践博客
20155205 <Java程序设计>0510课上实践博客 一.教材代码检查-p98 未提交成功原因: 一开始在iterm中运行,但是结果出错,没有时间提交了.这个提交其实很简单,没有提交 ...
- 《疯狂Java:突破程序员基本功的16课》读书笔记-第二章 对象与内存控制
Java内存管理分为两个方面:内存分配和内存回收.这里的内存分配特指创建Java对象时JVM为该对象在堆内存中所分配的内存空间.内存回收指的是当该Java对象失去引用,变成垃圾时,JVM的垃圾回收机制 ...
随机推荐
- 模型验证与模型集成(Ensemble)
作者:吴晓军 原文:https://zhuanlan.zhihu.com/p/27424282 模型验证(Validation) 在Test Data的标签未知的情况下,我们需要自己构造测试数据来验证 ...
- Python3 文件基本操作
Python文件的打开模式有: r,只读模式(默认).w,只写模式.[不可读:不存在则创建:存在则删除内容:]a,追加模式.[可读: 不存在则创建:存在则只追加内容:]"+" 表示 ...
- linux中使用mysql数据库
在安装完数据库后,如果没有设置root的mysql密码,在命令行输入mysql即可进入数据库 show databases;(有分号):查看当前存在的数据库 create database 名字:创建 ...
- 在ubuntu上配置LAMP架构
1. 安装MySQL /* ubuntu默认进入系统是普通用户 所以在真实工作中,我们会得到root的授权. 所以我们需要用sudo做一切只有root才能完成的操作. */ [root@LAMP ~] ...
- 一位资深程序员大牛给予Java初学者的学习建议
这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议? 今天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈每个阶 ...
- git 查看父分支
// 显示本地分支和服务器分支的映射关系 git branch -vv // 切换分支(和创建分支就差一个-b参数) git checkout {{branch_name}} // 创建新分支,新分支 ...
- Developer Express控件gridcontrol中gridView的某一个单元格是否可以自由输入
场景:在Developer Express控件gridcontrol中的gridView中,当医生开的临时医嘱的医嘱类型为"中草药","计价总量"单元格不可以自 ...
- css 三(清除浮动专题)
1. 三个关于浮动的概念 不浮动float:none; 清除周围的浮动元素 float:both 这是清除浮动的本意 清除子元素浮动对父元素的影响 clearfix 很多人都理解成 ...
- Spring学习(二)——Spring中的AOP的初步理解
[前面的话] Spring对我太重要了,做个关于web相关的项目都要使用Spring,每次去看Spring相关的知识,总是感觉一知半解,没有很好的系统去学习一下,现在抽点时间学习一下Spring.不知 ...
- CentOS7英文环境下使用中文输入法
一般我们使用英文环境是没有办法使用中文的,这是因为我们没有设置在英文环境下的中文配置,下面我们在英文环境下配置中文输入法ibus使得我们可以输入中文. 首先,安装ibus(centos6以后已经默认安 ...