
获得徽章 0
- Java核心技术卷Ⅰ第6天
集合
-
一、集合的由来
通常,我们的Java程序需要根据程序运行时才知道创建了多少个对象。但若非程序运行,程序开发阶段,我们根本不知道到底需要多少个数量的对象,甚至不知道它的准确类型。为了满足这些常规的编程需要,我们要求能在任何时候,任何地点创建任意数量的对象,而这些对象用什么来容纳呢?我们首先想到了数组,但是!数组只能存放同一类型的数据,而且其长度是固定的,那怎么办了?集合便应运而生了。
二、集合是什么?
Java集合类存放在java.util包中,是一个用来存放对象的容器。
1.集合只能存放对象。比如你存入一个int型数据66放入集合中,其实它是自动转换成Integer类后存入的,Java中每一种基本数据类型都有对应的引用类型。
2.集合存放的都是对象的引用,而非对象本身。所以我们称集合中的对象就是集合中对象的引用。对象本身还是放在堆内存中。
3.集合可以存放不同类型,不限数量的数据类型。
三、集合接口与实现关系图没有画也就就不搬图了
-
The end:
激战一周第Ⅰ卷打算就先到这里了,时间挺紧张,每天996疯狂写BUG,昨天是今年第一次准点下班,脑壳疼。。。
但收获很大,了解了很多以前不知道的Java特性(虽然记住的没多少),首先感谢在这过程中帮助过我的小伙伴@Planswalker23@_大麦。但这并不是结束,未来《核心技术》将作为工具书时常查阅翻看(好书),温故知新!后续计划开始撸《Spring实战》,熟悉Spring框架及整个web开发体系的构成 ~~~
展开赞过43 - Java核心技术卷Ⅰ第5天
泛型程序设计
-
Java5中引入泛型
-
泛型程序设计意味着编写的代码可以对多种不同类型的对象重用;
-
类型参数
ArryList list<String> new ArryList<>();
-
Java库使用变量E标识集合的元素类型,K和V分别表示表的键和值的类型。T表示“任意类型”(必要时还可以用相邻的字母U和S);
-
通配符、通配符的超类限定
-
异常处理
-
日志
-
泛型这块看的有点懵逼,好像是让代码更通用,拿方法来说,使一个方法可以支持多种类型参数的处理,并且可以把一些运行期出现的错误提前暴露出来,又好像是为了突破方法定义时的参数类型限制,直接用泛型,一个方法随便传入参数,虽然解决了入参的问题,假如方法内部逻辑不兼容还是gg,那方法内部要足够强大来应付这些未知的入参?有老师指导一下吗?@大佬
还有一个问题是写了一段代码如图,第二个user的实例化还有其他方式吗?展开赞过121 - Java核心技术卷Ⅰ第4天
接口、lambda表达式
-
接口用来描述类应该做什么,而不指定他们具体应该如何;
接口中的方法都是public方法;
java单继承,接口可多继承;
得敲一把代码试试...
-
lambda
Java中lambda表达式的行是:(参数)-> 表达式;
需要注意一些关于这个的用法。真心感觉不如python的lambda显得优雅。
-
在些测试代码的时候遇到一个问题,就是对接口的实现方法传入了一个对象,然后想把对象的某个字段对应的value值作为判断条件进行逻辑处理,感觉java的处理有点费劲呀,好像是涉及到反射之类的(还没看),python中一个getattr就搞定了的事,可能还是对java不了解,菜!
-展开赞过153 - Java核心技术卷Ⅰ第3天
继承
-
超类(父类)、子类,单继承
-
super,指示编译器调用超类方法的特殊关键字(与python中同的super有同样的作用);
-
多态、动态绑定:一个对象变量可以指示多种实际类型的现象称为多态,再运行时能够自动的选择适当的方法称为动态绑定;
-
静态绑定
-
方法的调用:重载解析、构建方法表,根据签名(方法参数)与方法名匹配要调用的方法;
-
覆盖一个方法的时候,子类方法不能抵御超类方法的可见性;
-
防止继承:如果一个类声明为final,只有其中的方法自动的称为final,不包括字段;
-
内联
-
抽象类
-
受保护的访问:protected--对本包和所有子类可见;
-
泛型数组列表:ArrayList--不是Java程序设计语言的一部分,是某个人编写并在标准库中提供的一个实用工具类;
-
装箱、拆箱:编译器的工作,而不是虚拟机;
-
参数数量可变的方法:...,表示可以接受任意数量的对象;
-
反射:在程序运行期更多的了解类机器属性的能力(其他没仔细看,估计暂时也用不到);
-
这部分内容很多是一些概念性东西,虽然理解其中的含义不难,但更需要练习来领会,最近996的情况学习时间确实相对紧张,但是仍需要坚持,虽然白天不能直接在工位看书,但是可以悄没声的练习代码,嘿嘿嘿,gogogo~~~展开等人赞过64 - Java核心技术卷Ⅰ第2天
对象与类
-
面向对象的程序设计OOP是一种程序设计范型
-
在Java中所有的类都源自一个“神通广大的超类”--Object(python中也是Object,只不过python还有一个type,所有类都是type生成的,type的基类是object,object是type生成的,object的基类为空...扯远了,收!)
-
对象的三个特征:1、对象的行为--可以对对象完成哪些操作;2、对象的状态--调用方法时,对象如何响应。一个封装性好的对象只能通过调用方法实现对象状态的变更;3、对象的标识--如何区分具有相同行为与状态的不同对象。例如两张业务数据一致的采购订单,虽然作为同一个类的实例,对象的标识也是不一样的。粗暴一点理解两张单据id肯定不同吧,即对象的标识不同。
-
类之间的关系:1、依赖--如果一个类的方法使用或者操纵另一个类的对象,就说一个类依赖于另一个类;2、聚合--聚合与依赖的区别是:依赖是东别人东西了,聚合只是两个对象在一块;3、继承;
-
对象与对象变量:对象变量并没有实际包含一个对象,他只是引用一个对象。Java中任何对象变量的值都是对存储在另外一个地方的某个对象的引用。
-
public、private,访问权限控制
-
在Java10中,如果可以从变量的初始值推导出他们的类型,可以用var关键字声明局部变量,只能是用于方法的局部变量。
-
隐式参数与显式参数
关键字this是隐式参数,也被称为方法的调用目标或接收者,也就是所构造的对象(有点像python的self呢,只不过python中self是必须显示的展示出来)。
-
final,在构造器执行之后,被修饰的属性值已经设置,以后不能再修改。
-
静态字段
如果将一个字段定义为static,每个类只有一个这样的字段。而对非静态的实例字段,每个对象都有一个自己的副本。
-
静态方法
什么情况下可以使用静态方法:1、方法不需要访问对象状态,因为他需要的所有参数都通过显式参数提供;2、方法只需要访问类的静态字段。
-
方法参数
按值调用--值,按引用调用--变量地址。Java对对象采用的不是按引用调用,实际上,对象引用是按值传递的(细品)。
-
后面还有些内容,字数限制不能写了...因此,中间也删除了一些个人理解部分。。学习的过程虽有破茧成蝶痛苦挣扎,但有收获就算成功展开赞过53 - Java核心技术卷Ⅰ第1天
Java的由来诞生、所具有的语言特性
-
Java的版本发展,提到J2SE的版本命名由来,首先是J2也就是Java2的提法是1998年12月的一个版本Java1.2,当时Sun公司的销售人员感觉以增加小数点后面数值的方式改变版本号并没有反映出JDK1.2的重大改进。但是,由于是在发布之后才意识到这个问题,所以决定开发工具包的版本号仍然沿用1.2,接下来的版本是1.3、1.4和5.0,不过,Java平台被重新命名为Java2。因此,就有了 Java 2 Standard Edition Software Development Kit(Java 2标准版软件开发包)5.0版,即J2SE SDK 5.0。到2006年版本号得到简化,之后的取名为Java SE 6、Java SE 7和Java SE 8。不过“内部”版本号却为1.6.0、1.7.0、1.8.0。到了Java SE 9,这种混乱终于终结,版本号变为9,以及后来的9.0.1。
-
JShell的使用
-
基本的程序设计结构,在Java中,整形的范围与运行Java代码的机器无关,主要是避免在32位处理器上运行正常的程序在16位系统上运行发生整数溢出的问题,为保证在所有机器上能够得到相同的运行结果,所以各种数据类型的取值范围必须固定。浮点数值不适用与无法接受舍入误差的金融计算(做过银行、ERP的小伙伴应该深有感触),可以使用BigDecimal类实现任意精度的浮点数运算(还有一个BigInteger类)。其他的变量、常量、运算符、字符串操作、数组等就不记录了,没有很特别之处,要在实战中应用。
展开等人赞过74