资源描述
----------------------String---------------------
7.16
A.This关键字的部分用法(JAVA中为解决命名冲突和不确定性问题,引入“this”关键字来代表其所在方法的当前对象)
1. this关键字可以用来在一个构造器中调用另一个构造器,不能在自身调用自身
2. 使用this关键字调用其他构造器的时候,必须把该语句放在最前面
3. 在一个构造器中只能调用一个其他的构造器,不能调用多个构造器
4. 在多个构造器相互调用的时候,最终必须有一个出口
5. 在类本身的方法或构造器中可以用来引用该类的实例变量和方法
B.方法重载
1. 方法名相同
2. 方法名相同形参个数不同
3. 如果形参个数相同,则形参类型必须不同
4. 与返回类型无关
C.继承
1. 继承最少要发生在两个类之间,且是单一继承(一个类只能直接继承一个除自身以外的父类)
2. 它的主要目的是作为模板提高代码的重用性
3. Java中的所有类都存在继承关系
4. 继承的关键字为 extends,模式为(子类 (派生类))extends(父类 (基类、超类))
5. 子类是一个特殊的父类,是对父类的一个扩展
6. 如果两个类之间发生继承关系,那么在实例化子类对象的时候,JVM会隐式的为我们创建一个父类对象
7. 如果存在继承关系,在一定的访问权限下子类可以无偿的使用(直接调用)父类的属性和方法。在调用的父类的方法的时候,首先判断自身有没有该方法,若有就调用该方法,若无就向上找父类的该方法并调用之
8. 父类属于“风流类”,因为他永远不知道自己的子类是谁
典型案例
输出结果为:111111 22222 33333 44444
D.访问权限问题
1. private 本类中可以访问
2. 默认(default) 在同一个包中可以访问
3. protected 如果没有继承关系,则访问权限不能超过包;如果发生了继承关系,即使子类和父类不在同一个包里,“子类对象”也可以访问protected所修饰的属性或方法
4. public 在不在同一个包里都可以访问,没有限定
访问权限
同一类
同一包
不同包
private
√
x
x
默认(default)
√
√
x
protected
√
√
无继承关系
x
有继承关系,子类对象访问
√
public
√
√
√
E.实例化就是创建对象的过程
多态(Polymorphisn)
1. 就是一种运行时动态绑定机制
2.
F.向上转型:把子类型转换为父类型。使用父类的引用指向子类的对象,此种转型是自动的
面向对象三大特征:封装、继承、多态
封装:一个类把属性定义为私有的,给外界提供共有的set、get方法,别的类通过set、get方法并且加上逻辑判断来给属性赋值,达到保护属性的目的
7.17
A. 方法重写(子类继承父类的时候,父类中的有些行为(方法)不能满足子类的需求,这时候子类就需要重写修改父类中的这些行为(方法))
1. 方法名必须相同
2. 子类的访问权限不能小于父类被重写方法的访问权限
3. 父类中私有的方法是不能被继承的,所以也不能被重写
4. 子类重写方法的返回类型要和父类的返回类型一致
5. 参数列表相同(子类重写方法的形参类型必须和父类的形参类型一致)
6. 在父类构造器中不要调用被子类重写的方法
B.Java中Object类是所有引用数据类型的父类(即所有引用数据类型对象都属于Object类)
C.向下转型(类型强制转换)
按照正常写法在编译期可以通过,但在运行期就会出错
但是我们可以通过一定的手段来解决下转型,让其成功——先上转型在下转型
父类对象永远不能充当子类型
D.instanceof关键字
1. 没有继承关系的两个类是不能进行上转型或者下转型的
7.18
A.
B.JAVA中常量的初始化有两种方式:1.在定义的时候直接赋值初始化;2.在构造器中进行赋值初始化
C.一个被定义成final的方法是不能被子类重写的,所以当一个父类的方法不想让子类去修改的时候就把该方法定义为final的,定义为final的方法能被继承但不能被重写
D.Abstract
1. 在class关键字前面使用abstract将其定义为抽象类
2. 抽象类中可以定义抽象方法
3. 抽象方法没有方法体---只有方法定义没有具体实现,所以它不能被实例化
4. 要求其直接子类必须要有类中定义的所有方法
5. 普通类(非抽象类)中是不可以定义抽象方法的,只有抽象类中可以定义抽象方法
6. 抽象类中的所有方法只能靠子类去调用
E.super是一个在继承关系中用来区分父类对象和子类对象的关键字,如果发生了重写,在子类中调用父类中的被重写的方法时用super关键字调用父类的原方法
7.19
A. 在静态方法中是不能调用非静态方法的,也不能在静态方法中使用this、super关键字
B. 非静态的创建是在内存创建完对象之后才形成的
C. 一个类首先要通过加载然后才可以通过类去创建对象
D. 类加载的时候静态的内容就在内存中创建出来了,这个时候还没有对象,所以不能在静态方法中调用非静态的方法
E. 但是在非静态方法中可以调用静态的方法
F. 父类中的静态方法可以被子类继承但是不能被子类重写(因为静态的内容是前期绑定,即编译器绑定)引用是父类型就调用父类的该方法,引用是子类型就调用子类的该方法
单例设计模式
以下两种方法都属于单态设计,外界只能创建一个新的Person实例对象
单态设计模式可以减少对象创建,减少内存开销
接口 是不能new的。接口是一个特殊的抽象类,接口中所有的方法都是共有的抽象的,接口中所有的属性都是静态常量 ,接口中没有构造器 ,接口可以多继承(接口继承接口)但不能继承类,类是实现接口不是继承接口
7.20
抽象类和接口的区别:
1. 抽象类中可以有抽象方法也可以由非抽象方法,而且抽象类中的方法的访问权限没有限制
2. 接口中所有方法都只能是public abstract 的
3. 接口中所有的属性都是 public static final的,并且在定义的时候就要赋初始值
4. 抽象类只能单一继承,接口可以多继承
5. 抽象类还可以作为模板,让子类复用它的代码,而接口则是作为一种规则
*********************************集-合*************************************
插入顺序和输出顺序一致
添加“相同”的元素可以重复插入
不可以装重复元素
可以装重复元素
自动装箱
7.23
泛型有关
I/O
1. InputSream:磁盘、网络、电脑内存等数据源的数据通过JAVA程序读取到JVM的内存中的过程叫输入
2. OutputSteam:把JVM内存中的数据写到磁盘、网络、电脑内存等目标的过程叫输出
3. 按照处理单位来说:字节流(输出字节流(outputstream)、输入字节流(inputsteam))、字符流(输出:Reader、输入:Writer)。按照功能来说:节点流(直接和数据源或者目标打交道的流)、处理流(没有直接和数据源或目标打交道,而是对节点流的功能进行装饰,以达到提高节点流的输入或输出功能的流)。按照流向来说:输入流、输出流
4. 输入输出永远都是以计算机为参照点
5. File:File类代表的就是计算机磁盘上所有文件的模板,每一个文件对应的就是一个File类的实例
流是一种资源,对资源操作用完后要关闭:1、资源占内存,我们要释放资源来提高内存空间;2、在操作资源的时候如果不关闭那么其他的程序时不能使用该资源的,所以我们在所有的IO操作结束后要断开和资源之间的连接
7.26
---------------------------------------------对象序列化--------------------------------------------
1. 对象序列化:就是把对象通过IO保存在磁盘或网络中的目标的过程
2. 一个对象序列化的时候只有属性和类名序列化,方法不进行序列化,但是静态的属性也不会序列化,被transient关键字修饰的实例属性也不会被序列化
3. 在对象序列化的时候要生成序列化的版本号,这样不管class是否升级。还有出于安全角度考虑,当反序列化的时候就要被反序列化的类必须持有和序列化相同的版本号,如果版本号不一致会导致反序列化失败。
4. 对象反序列化就是把已经序列化在磁盘或网络中的数据通过IO在得到原来的“对象”的过程
7.27
-------------------------------------线程----------------------------------------------
class
class
Thread.currentThread() 得到当前运行线程的对象
td.setPriority() 设置线程优先级
线程优先级别是从1-10的整数优先级越大的可能占用cpu的资源多些,但不是说线程优先级大的一定先获取cpu资源,主线程默认优先级是5。
Synchronized 同步锁:在一些情况下如果多线程同时操作一个实例,由于操作系统的抢占式资源的方式所导致的数据错误,我们需要同步锁,同步锁有两种实现手段
1. 同步代码块 可以锁任意对象
2. 同步方法(非静态同步方法) 锁得是当前对象
不管是同步方法还是同步代码块,观察锁得是不是同一个对象,如果锁得是同一个对象,哪个线程先对对象上了锁,其他线程虽然可以获取cpu资源但是无法使用被锁上的对象,只有当所对象的线程使用完该对象并释放后其他线程才可以使用该对象,这样达到有顺序的目的
线程死锁:两条线程都拥有对方锁的对象,在这种情况下两条线程都等着对方放开锁的对象,谁也不会先放开,这样就造成了一种等待的现象,程序既不会停止也不会执行下去。Java中没有提供解决死锁的方法的,所以我们要避免死锁。
线程的生命周期:
//一个线程一旦启动了就不能再在连续的重复启动了否则或抛出异常
//如果让在主线程中启动子线程,要让启动的代码放在主方法体的"其他操作”的前面
8.1 CSS&HTML
------------------------------------------------JavaScript--------------------------------------------
//alert("hello javascript");
//EcmaScript javaScript的语法标准
//BOM bowroser object modol 浏览器统一对象模型
//DOM document object modol
//JavaScript笔记
//JavaScript使用var关键字定义变量,javaScript是一门弱类型的语言
//在定义变量的时候用var修饰变量
//循环 类似于java
//for循环
for(var i=0;i<10;i++){
alert(i);
}
//while(){}循环
//do{}while();循环
8.7
在JS中获取form元素的手段:document.getElementById();//很少用这个方法
如果组件被form标签包围着可以使用document.forms[index],document.formname(formname为表单的name值)
8.9
------------数据库-------------
Show databases;显示数据库
Create database 数据库名;创建数据库
Use 数据库名;使用数据库
表:是一个在文件中存储数据的结构
Show tables;查看表
Create table 表名(user_name(列名/字段名) 数据类型(可以有多个,用逗号隔开));创建表
show databases;
create database [数据名];
use [数据库名];//使用数据库
表:是一个在文件中存储数据的结构
show tables;//查看表
创建表
create table [表名](
[字段名] [数据类型],
[....] [.....]
)
---------------------------------修改-----------------------------------------
ALTER TABLE t1 RENAME t2;//修改表明
alter table [表名] add id int(3);//修改表结构 给表添加一个新字段
alter table [表名] chanage [老字段名] [新字段名] [数据类型]//修改字段名字
8.11
-----------------------------------------异常------------------------------------------
在捕获异常的时候,一个try后面可以跟多个catch,但是大异常要写在小异常的前面
常见异常:NullpointerException 空指针异常
ArithmeticException 数学异常
NoSuchElementException 元素不存在异常
IndexOutOfBoundsException 数组下标越界异常
ConcurrentModificationException 并发修改异常
-----------------------------------------------JDBC--------------------------------------------
JDBC:Java DataBase Connectivity
使用java去连接数据,让java作为数据库的客户端去数据库操作数据
1. 注册驱动
2. 建立java和数据库的连接
3. 向数据库发送并执行SQL语句
4. 关闭资源(数据库底层操作的是文件,所有数据库都是资源使用完一定要关闭)
Java只是制定了标准(标准即接口),让数据生产商去实现这些标准
想要遍历Map中的元素需要将Map先转换为Set,然后再用Iterator迭代器迭代Set<Entry<String,Object>> = Map.entrySet
或者
展开阅读全文