Java随记(二)

面向过程:以函数为中心;
Object Oriented Programming

(宏观上)以对象为中心研究问题;更符合人类思维;
OOA:面向对象分析;
OOD:面向对象设计;
OOP:面向对象开发;
自顶向下,逐步求精;
复用:大的对象属性也可以是一个对象
为什么引入oo的概念?

框架做的事是为了解耦合:让耦合度降低

伸缩性:对于需求变化反应快;

类是对象的模板
对象是类的实例

封装性 :1.统一性 2.隐藏性
继承性
多态性:多态的实现以继承为基础。重新定义超类的行为(@Override方法重写、覆盖)(方法签名一样)

Employee emp=new Manager();父类的引用指向之类的空间
emp.work();编译时--声明;运行时--分配空间。运行时才看得出来他是哪个行为。
逻辑上的堆栈与物理上的栈堆。
迭代一般只读,相当于数据库的游标对多行进行扫描
foreach不能对集合本身进行结构性改变 如:不能list.remove("world");

多态性:特殊性到一般性的统一

构造函数主要用于创建对象时初始化属性,其他无关的不要放在里面

保证每个类有一个无参构造器,以便子类的调用

非静态的变量属于类特有的。
静态的变量属于全局的。

类加载时机先于对象实例
1:classLoad 为static方法打开入口
2:creat instance 为实列属性及方法打开入口
所以:

静态方法不能调用实例的成员变量以及方法
实例的成员变量以及方法可以引用静态属性
私有可以拿公有,公有不可拿私有。

静态方法通常作为工具方法来用。

静态块,先执行于对象创建的任何操作,但只执行一次
构造块:new 一次 在构造器之前执行一次;

两个数值的运算结果不能超过计算机中的该类型的数值范围,否则计算机中的算术运算是会发生越界情况的
解决:BigInteger 提供加减乘除的功能;

lang包里面的类,不用import;
方法的重载 是(静态)多态性的体现(编译时)--(业界看法不同);
方法的重写是(动态)多态性的体现(运行时)--父类的引用指向之类的实体;

运算符重载的地方  如:+ -----1:加号  2:并置符号;   
:只有方法的参数才参与重载的判断

引用、匿名对象

abstract抽象类:一个抽象类里面可以有实现方法,不是非要有抽象方法,但是抽象方法必须在抽象类里面
继承抽象类的非抽象子类必须实现其抽象方法
抽象类不能实例,只能new 它的非抽象子类
抽象类常在设计中体现出多态性

引用类型 :数组,类,接口
接口:只能由 public |static| final 来修饰,
没有属性,只有常量,
  里面的方法默认为抽象方法;
      
类与类之间是继承的关系(单继承)
伪多重继承:
类与接口之间是实现的关系(可以多实现)
接口与接口的关系是继承关系(可以多继承)
接口更好的体现了作为一个行为声明的集合,因为接口里面都是抽象方法,它比抽象类的抽象层次更高

与1.0版的Vector相比1.2的Arraylist牺牲了线程安全,但性能能好

LinkedList底层为循环双向链表
HashSet底层由HashMap实现
hashmap的容量达到75%就开始扩充了

linkedHashset 重写hashmap 的addEmtry()方法 利用双向链表实现逻辑上的有序
treeSet  须同类型插入,才能比较   排序为比较算法 如果是你自己的对象,必须实现comparable重写compareto方法 底层实现为二叉树

ClassCastException 类型转换异常

instanceof 。。是。。的实现   它是运算符   返回boolean值

接口也算一种类型,特殊类型

使用treeset时  判断重复时,如果实现了comparable接口  就判断comparaTo()方法,不进hashcode()和equals()方法

hashMap   无序的(多了才看得出来哈), key值可以重复但保留后面一个(坑)。entry<k,v>

Generic 泛型
增强for循环 也叫foreach循环

ConcurrentModificatoinException 并发修改异常
对于集合迭代过了才能删除   或者用迭代器自带的无参删除方法remove()
listIterator双向迭代器

对象克隆 重写Object的clone()方法  ——先判断当前对象能不能克隆,需要实现Cloneable接口,这种接口叫标记接口,没有任何方法,起个标记作用。
这里面有个浅度副本和深度副本的概念,深度副本需要一层一层的克隆,如当前克隆对象里面的属性是引用类型就需要深度副本了;

时间: 2024-10-10 16:30:00

Java随记(二)的相关文章

Java入门记(二):向上转型与向下转型

在对Java学习的过程中,对于转型这种操作比较迷茫,特总结出了此文.例子参考了<Java编程思想>. 目录 几个同义词 向上转型与向下转型 例一:向上转型,调用指定的父类方法 例二:向上转型,动态绑定 例三:向上转型,静态绑定 例四:向下转型 转型的误区 1.运行信息(RTTI) 2.数组类型 3.Java容器 几个同义词 首先是几组同义词,由于在不同的书上使用的不同,是造成混淆的原因之一. 父类/超类/基类 子类/导出类/继承类/派生类 静态绑定/前期绑定 动态绑定/后期绑定/运行时绑定 向

一大波Java来袭(二)异常处理

概要解析: 本章的知识点可以记为:1图+5关键字+先逮小的.后逮大的  一.基础 (一)定义 1.异常 是指在程序运行的时候发生的一些异常事件.良好的程序设计应该在异常发生的时候提供处理异常的方法,使得程序不会因为异常的发生而中断.因此Java提供的用于处理程序中错误的一种机制. 2.抛出异常throw java程序的执行过程中如出现异常事件,可以生成一个异常类对象(封装了异常事件的信息),被提交给java运行时系统. 简单理解为:推卸责任.马路上遇到了交通事故,不需要自己处理,而是拨打110,

Java入门(二)——果然断更的都是要受惩罚的。。。

断更了一个多月,阅读量立马从100+跌落至10-,虽说不是很看重这个,毕竟只是当这个是自己的学习笔记,但有人看,有人评论,有人认同和批评的感觉还是很巴适的,尤其以前有过却又被剥夺的,惨兮兮的. 好好写吧. 现在开展的“业务”,一个是PHP,一个是Android开发. 前者偏向于三个方向,总结之前的(看书,敲代码实现),电商网站的开发,一些技能的实现: 后者起步阶段,一边Java学习,一边动手做东西出来,争取一周内有个交代吧先. 今天还比较坑一点,把昨天弄的卸载了,AS中的虚拟界面用不了,用哥们儿

Java入门记(五):容器关系的梳理(下)——Map

注意:阅读本文及相关源码时,需要数据结构相关知识,包括:哈希表.链表.红黑树. Map是将键(key)映射到值(value)的对象.不同的映射不能包含相同的键:每个键最多只能映射到一个值.下图是常见Map的接口和实现.与Collection相比,继承关系简单不少. 一.Map接口和AbstractMap抽象类 Map接口除了增加映射.根据key获取value.判断映射中的key或value是否存在.删除映射的基本方法外,还包含了返回包含所有key的Set.包含所有value的collection

Java设计模式(二)-单例模式

单例模式建议保证某个对象仅仅只有一个实例,当只有一个对象来协调整个系统的操作时,在计算机系统中,线程池.缓存.日志对象.对话框.打印机.显卡的驱动程序对象常被设计成单例,总之,选择单例模式就是为了避免不一致状态,避免政出多头. 下面是单例模式的类图:包括的private和static修饰的实例instance.一个private的构造函数.一个static的getInstance函数 单例模式主要有三种:懒汉式单例.饿汉式单例.登记式单例三种 1.饿汉式单例:在类的初始化时候,自行创建了实例 c

【转】java提高篇(二)-----理解java的三大特性之继承

[转]java提高篇(二)-----理解java的三大特性之继承 原文地址:http://www.cnblogs.com/chenssy/p/3354884.html 在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句话中最引人注目的是"复用代码",尽可能的复用代码使我们程序员一直在追求的,现在我来介绍一种复用代码的方式,也是java三大

Java数据结构之二叉搜索树

Java数据结构之二叉搜索树 1.二叉搜索树组成 二叉搜索树又称为二叉排序树,它或者是一颗空树,或者是一颗具有如下特性的非空二叉树,需要满足一下三个条件: (1)若它的左子树非空,则左子树上所有结点的关键字均小于根结点的关键字: (2)若它的右子树非空,则右子树上所有结点的关键字均大于(可以等于)根结点的关键字. (3)左子树右子树本身又各是一颗二叉搜索树 在算法描述中,均以结点值的比较来代表其关键字的比较,因为若结点的值为类类型时,该类必须实现系统提供的java.lang.comparable

java 基础(二)

java 基础(二)java 基础(二) 2016-2-1 by Damon 61. 编写多线程程序有几种实现方式 Java 5以前实现多线程有两种实现方法:一种是继承Thread类:另一种是实现Runnable接口.两种方式都要通过重写run()方法来定义线程的行为,推荐使用后者,因为Java中的继承是单继承,一个类有一个父类,如果继承了Thread类就无法再继承其他类了,显然使用Runnable接口更为灵活. 补充:Java 5以后创建线程还有第三种方式:实现Callable接口,该接口中的

Java Web总结二十一Listener监听器

一.事件三要素 1.事件源:操作事件的对象,例如:窗体Frame 2.事件监听器:事件监听器监听事件源,例如WindowListner,它是一个接口 3.事件,例如:单击事件,通过事件,可以取得事件源 二.适配器模式 1.当一个接口有较多的方法时,而实现类只需对其中少数几个实现,此时可以使用适配器模式 2.适配器模式常用于GUI编程 三.八种Web监听器 1.Web中有三个事件源,分别是ServletContext->HttpSession->ServletRequest 2.ServletC

java实现生成二维码

                                                     java实现生成二维码 二维码vs条形码 最大的区别就是:二维码具有容错功能,当二维码图片被遮挡一部分后,仍可以扫描出来.容错的原理是二维码在编码过程中进行了冗余,就像是123被编码成123123,这样只要扫描到一部分二维码图片,二维码内容还是可以被全部读到. 二维码容错率即是指二维码图标被遮挡多少后,仍可以被扫描出来的能力.容错率越高,则二维码图片能被遮挡的部分越多. 二维码容错率用字母表