阶段总结 - GongSoSn/Renjianyong GitHub Wiki

面向对象

1.权限访问符使用: private : 私有的;只有在本类中能使用; default : 默认的;同一个包中可见;(包权限修饰符) protected : 受保护的;同一个包中的类和所有的子类可见; public : 公共的;所有类中能访问(同一个工程中)

2.面向对象--构造器: 默认的:无参构造方法 其他:自己定义的 new 关键字调用构造方法

3.方法重载: 方法名称相同但是参数列表不同,返回值类型不能作为区分是否是方法重载的条件

4.值传递和引用传递: 值传递:传递的是数值的副本,传递之后不改变原来数值; 引用传递;传递的是引用,能改变引用所指的数据

5.this关键字: 表示当前对象的引用,哪一个对象调用,就表示哪一个对象的引用; this能调用本类中的其它构造方法

6.静态方法 静态方法中只能使用静态变量,不能使用成员变量,如果非要使用成员变量,在使用的静态方法中,使用成员变量语句之前必须先实例化成员变量所依赖的对象;

7.面向对象三大特征: ①封装:通过使用‘private’关键字,使变量私有(只在本类中可见),来保证数据信息的安全性,只保留一些公有的方法,作为外界使用这些变量,而不会对内部数据的处理操作进行恶意修改; ②继承:在子类中调用父类中的成员要用super关键字; 1).父类中的无参构造器总是会被调用,并且是在子类构造器之前调用; 2).对于父类中带有参数的构造器,如果在子类中需要调用,那么,只能是通过super关键字进行显式的调用; 3).子类方法的返回值类型(class类型)可以是父类方法返回值类型的子类型;

8.方法重写(Override)&&方法重载(Overload) ①方法重写发生在子类和继承自的父类之间; 1).子类重写的方法的权限访问必须大于或者是等于分类中的方法的访问权限; 2).子类重写的方法的返回值类型必须相同,参数列表也相同(也就是说方法的外壳不变,内容自己根据需要定义) 3).子类方法的返回值类型(class类型)可以是父类方法返回值类型的子类型; ②方法重载发生在同一个类中; 1).返回值类型和修饰符不是区分方法重载的条件

9.关键字【this,super,static,final】 ①this: 1).可以在构造器中调用其它构造器,并且必须书写在构造器首行; 2).表示当前对象的引用; ②super: 1).调用父类中与当前子类重名的变量和方法; 2).用于子类调用父类中的构造方法; ③static: 1).修饰变量; 2).修饰方法; 3).静态代码块;加载的时候初始化,并且只能加载一次;多个时候,顺序执行; ④final: 1).final修饰的类不能被继承; 2).final修饰的方法可以被继承但是不能被子类重写;



1.关于抽象类 ①使用abstract关键字修饰的类 || ==> 抽象类 ②抽象类中可以有抽象方法,也可以有非抽象的方法,如果有一个类继承于当前的这个抽象类,那么,父类中的抽象方法‘必须’被 重写(Override)。子类中能从父类中继承得到的非抽象的方法,可以直接用,也可以重写。 ③抽象类与非抽象类中的唯一区别就是:抽象类中可以有抽象的方法,但是非抽象类中不能有抽象的方法,并且抽象类不能进行实例化,那么这一点也就证明了:在继承过程中的子类调用父类中的构造方法的时候其实根本目的不是实例化一个父类的对象,而是对子类进行初始化;



day 2016-08-01

1.接口: 接口是抽象类的完全抽象

接口中只能定义public static final 的常量(自己的理解:接口不能被实例化,所以,只能是在类相关的层次之上,所以用static修饰;至于为什么只能是常量,也就是必须用final修饰,原因是:接口是更高级的一种抽象,是用于提供一些共同协议的抽象的,如果在接口中可以定义变量,那么,如果在实现此接口的任何一个实现类中"接口名.变量名",那么,任何一个对象都能随时改变接口中变量的值,当然任何其他的实现此接口的类中也改变了状态,这是不符合接口创建的原则的,这和抽象类没区别。所以接口中的只能是常量,只能读,不能改,对修改禁止,对扩展开放,这也是开闭原则的一种体现)

接口中的方法是public abstract类型的,并且也只能允许这样(自己的理解:如果不是public,那就会降低该方法在实现类中的访问区域大小)

接口能实现多继承,但是意义不大,那样只是几个接口的组合

接口能够多实现,这样弥补了类只能单继承的缺陷,使接口的使用更加的灵活


随时遇到的问题总结:

1.创建对象,是唯一一个能够在类外部调用构造方法的途径,也只能有这样一种形式;

4.-encoding UTF-8 -charset UTF-8

5.java虚拟机在加载类的时候是有条件的:①有人尝试创建此类的一个实例②有人尝试使用该类中的静态方法或者是变量

6.静态代码块:初始化块,在类加载的时候会执行

7.为了复用代码而使用继承并不是很完美的

8.链表数据结构 --- LinkedList

9.Arrays工具类&&Collection工具类

10.ctrl + shift + t : Open Type

11.可变形参

12.在默认情况下,MySQL执行update和delete操作的时候,默认where字句中的条件必须是主键列,所以在where字句中使用 非主键的列作条件时候是不能执行成功的,这是因为默认情况下有安全模式,‘set sql_safe_updates = 0’



集合(Collection):

集合(Collection):是存储数据的一种结构,与之前的数组相比较,它具备数组的所有优点(底层实现就是使用数组), 同时,解决了数组容量不能动态扩展的缺点

1.集合体系: Collection接口:(这里面声明的最基本的方法) ||----List接口(这里面声明了很多基于索引的方法):(存放有序,可重复的元素,可以理解为动态数组) ||----ArrayList(最常用),LinkedList(用于频繁删除元素),Vector(古老)等(具体实现类) ||----Set接口:(存放无序(这里的无序不是随机的,是一种存储方式的无序),不可重复元素,可以理解为数学中的‘集合’) ||----HashSet,LinkedHashSet(其中链表维护了一个遍历的顺序),TreeSet(只能添加同类型的数据, 遍历按照添加元素本身的一种顺序)(具体实现类) Map接口:(函数,对于每一个key,都有一个唯一的值对应) ||----HashMap,LinkedHashMap(其实就是使用链表维护添加时候的顺序), Hashtable(Properties[主要是处理属性文件,特点是键值对都是String类型]),TreeMap等

	Map中存放的是‘key-value’对(键/值对),其中key使用Set进行存储,value使用Collection进行存储。
	
	(*)遍历Map有三种方式:
		①遍历key   keySet
		②遍历value values
		③遍历Entry entrySet

	(*)Set其实就是特殊的Map,所以,可以结合Set理解(自然和定制排序)【两者都能存储null对象,但是List不可以】

2.掌握Collection接口中声明的15个抽象方法(具体实现类中的实现),按照增删改查的特点记忆: ①增:add(E e),addAll(Collection c),具体实现类中还有在特殊位置的增操作,比如:add(int index,Object o) ②删: remove(Object o),clear(),removeAll(Collection c),retainsAll(Collection c) ③改:实现类中的set(int index,Object o) ④查:size()查大小,contains(Object o),containsAll(Collection c),具体实现类中,比如:ArrayList中的get(int index)[返回列表中 指定位置的元素],indexOf(Object o)[返回列表中首次出现指定元素的位置(索引)]

(*)特殊作用的方法:toArray:将一个集合转换成一个数组 < === > Arrays.asList(Collection c):Arrays数组
                 工具类中对应的将数组转换成集合的方法

(*)遍历集合:
	iterator使用迭代器:但是在List接口中的listiterator,具有能够遍历的同时操作列表的功能!

(*)TreeSet:
	①只能添加同一类型的对象
	②添加自定义数据类型的时候,要重写Comparable接口中的CompareTo(Object o)方法,作为比较的基准(自然排序)
	  适用于能够操作自定义类
	③如果在创建TreeSet对象的时候,将Comparator类当做参数传递进去就必须重写里面的compare(Object o1,Object o2)
	 方法,作为比较基准(定制排序)

(*)HashSet:
	①使用的时候应该重写hashCode()方法和equals()方法

由于容器的主要作用就是存储数据的,所以可以联系数据库中的基本操作进行理解记忆

3.Collections工具类和Arrays工具类



IO: 1.java.io.File类: java中文件目录和路径的抽象表示形式 File能够新建,删除和修改文件和目录但是不能都访问文件内容本身,如果要访问文件内容本身则要借助IO输入输出流 File对能够作为流的构造方法参数

2.java中io原理: IO流用来处理设备之间数据传输 java程序中,程序之间数据的传输以流的形式

3.流的分类 按照数据单位:字节流 字符流 按照流向:输入流 输出流

  1. 抽象父类 字节流 字符流

    输入流 InputStream Reader
    输出流 OutputStream Writer

5.字符流依赖于字节流 InputStreamReader,OutStreamWriter(转换流)



XML解析:

1.格式良好的XML文档: 有且只有一个root节点,命名规则:不能以数字开头,必须是字母或下划线,标记名称可以包含数字、中文、 英文、_、.、-等字符,不能包含空格,标记区分大小写,非空标记应该对称的嵌套

2.XML解析时元素内容的文本也会被解析,CDATA标记中的内容被解析器当成纯文本解析

3.使用java创建XML文档的时候使用dom4j,解析的时候使用SAX



⚠️ **GitHub.com Fallback** ⚠️