java
2020-11-23 10:45:48 0 举报
AI智能生成
Java知识点总结
作者其他创作
大纲/内容
面向对象
封装
通常是指类中的方法的处理不想让调用方了解其中的细节
多态
父类应用指向子类对象
抽象(abstract)
意义:封装子类中重复的内容
表示该类只能够被继承,不能够被实例化,并且其中的方法需要在子类中实现
修饰类时,其中可以有构造器,普通方法,抽象方法,并且抽象类的方法可以是任意权限
继承(extends)
子类能够继承父类中的所有属性和方法
接口(interface)
意义
统一规范,定义共有方法
多重继承
其中的属性都是静态的静态常量
其中的方法都是公共的抽象的方法
final
修饰类:表示该类不能被继承
修饰方法:表示该方法不能被重写
修饰属性:表示该类初始化后不能被修改
修饰方法:表示该方法不能被重写
修饰属性:表示该类初始化后不能被修改
static
修饰属性时表示该属性属于类对象,并且在类信息加载时就加载到了方法区中
重载与重写的区别
重写必须在子类中,并且方法名称,参数列表必须与父类一致,返回值范围相同或比父类广
重载:1.方法名相同
2.参数列表不同(参数类型,参数列表)
3.与返回值无关
字符串
String
底层使用的是final修饰char数组,该类不能被继承,并且其存储的位置在方法区上,是一个 不可变的字符串,每次操作都会生成新的字符串
String(byte[] bytes) 对存为byte的字节解码
charAt(int index) 返回指定字节的索引
concat(String str) 拼接字符串
endsWith(String suffix) 以什么结尾
StringBuffer
线程安全
append
StringBudder
String Buffer与StringBudder的区别
stringbuffer属于线程安全
都是可变字符串
枚举
下·
与常量相比,常量能参与计算,而枚举中没个都是枚举类型
集合
list
Arraylist
效率高,线程不安全,底层使用数组形式,查询快,增删慢
vector
效率低,线程安全
LinkedList
底层使用链表形式,增删快,查询慢
CopyOnWriteList
线程安全,采用复制写入
set
HashSet
底层使用HashMap的key实现,value为空的object数组
LinkedSet
底层使用双向链表实现,增删快,查询效率低
CopyOnWriteSet
线程安全,采用复制写入
map
HashMap
jdk1.8采用数组+链表+红黑树实现,只有当链表长度大于8,并且总长度大于64时,才采用红黑树
当链表长度小于6时会转化为链表,因为红黑树的查询效率为log(n),8时查询次数为3,6时链表的效率为6/2=3
当链表长度小于6时会转化为链表,因为红黑树的查询效率为log(n),8时查询次数为3,6时链表的效率为6/2=3
HashTable
结构和HashMap一样,但是是线程安全的,效率低下
treeMap
ConCurrentHashMap
线程安全,底层使用分段锁(sagent),对数据进行分段加锁,效率高
分段锁,锁的是数组也就是key的hash值
colliections
工具类
max(Collection<? extends T> coll)
min(Collection<? extends T> coll)
shuffle(List<?> list)
sort(List<T> list, Comparator<? super T> c)
synchronizedMap(Map<K,V> m)
泛型
java虚拟机中有泛型擦除机制,会在编译时转换为对应的过程,可以利用反射来破坏其结构
数组与集合的区别
数组
内容在物理空间的存储地址连续,
不仅可以存基础类型,还可以存储对象
可以使用索引直接获取值
声明时必须指定其空间大小
集合
只能存储对象类型
存储空间可变
throwable
error
错误,通常是jvm无法解决的,只能避免,比如内存溢出
exception
运行时异常
能通过编译,运行时出现的异常,不会导致jvm停止
非运行时异常
不能通过编译
throw与throws的区别
throw是在方法内定义的,通常是指抛出一个异常实列,一次性只能抛出一个
thorws是在方法声明后面的,通常可以声明多个,由调用方来处理异常
异常的解决方案
try{可能发生的异常}
catch(excetion e){}
finally{关闭资源}
catch(excetion e){}
finally{关闭资源}
throw exception
常见异常类
NullPointerException
ClassCastException
IllegalArgumentException
ArithmeticException
IndexOutOfBoundsException
NumberFormatException
自定义异常
需要实现exception
多线程
进程与线程的区别
进程是资源分配最小单位,线程是程序执行的最小单位;
地址空间和其它资源:进程间相互独立,同一进程的各线程间共享
隶属关系:线程是进程中的一部分,一个进程中可以包含若干个线程
调度和切换:线程上下文切换比进程上下文切换要快得多
进程特征
动态性:进程是程序的一次执行过程,是临时的,有生命期的,是动态
产生,动态消亡的
产生,动态消亡的
并发性:任何进程都可以同其他进程一起并发执行
独立性:进程是系统进行资源分配和调度的一个独立单位
结构性:进程由程序、数据和进程控制块三部分组成
进程的生命周期
创建
就绪
运行
阻塞
死亡
创建线程的方式
继承thread
实现runable
实现callable
线程池
常用方法
thread.start()
thread.sleep()
setdemo(),设置线程为守护线程
wait与sleep的区别
sleep是thread的方法,会暂停当前线程,但是不会释放当前锁,
wait是object的方法,调用后会自动释放当前锁,进入等待,直到调用notify才有可能唤醒
锁
多线程导致数据的不安全性,引入了锁
可重入锁
同一个线程在外层方法获取锁的时候,在进入内层方法会自动获取
Synchronized
Java关键字
程序结束不需要手动释放资源
lock
ReentrantReadWriteLock
读与读不互斥
读与写
写与写
公平锁
非公平锁
默认
乐观锁
认为读多写少
导致ABA问题,也就是第一次读取后,有人修改后,但又修改回来,再一次读取时,认为是没有改变的
解决方案:加入版本号字段,每次修改令版本号加1
悲观锁
认为写多读少
解决方案:修改时加入 for update
io流
字节流
InputStream
fileInputStream
BufferedInputstream
是通过fileInputeStream流读入内存,在直接操作,是一种高效流
OutputStream
fileOutputStream
BufferedOUtputstream
字符流
Write
fileWrite
Bufferedwrite
Reader
fileReader
BufferReader
转换流
inPutStreamWrite
OutputStreamReader
网络通信
udp
面向无连接,不区分服务端与客户端
关键字:dataGramSocket
对数据打包:dataGrampacket,指明发送数据变编码,指明ip
发送:send
接收:receive
tcp
面向连接,区分客户端与服务端,一次连接客户端与服务端只能通信一次,想多次就必须不断建立连接
客户端
Socket(ip,port)
通常利用缓冲流来发送和接收数据
socket.getOutputStream()
socket.ShutDownOutpu(),关闭输出流
服务端
serverSocket(port)
Socket.accept(),等待客户端接入,会阻塞
反射
在程序运行时生效
获取方式
源码阶段
对象(obj.getClass())
编译阶段
类对象(obj.class())
运行阶段
Class.forName(全限定名)
常用方法
getConstructor(类<?>... parameterTypes)
getClassLoader()
getAnnotation(类<A> annotationClass)
获取方法后属性上的注解,可以获取注解的值
getFields()
getField(String name)
getMethod(String name, 类<?>... parameterTypes
getMethods()
getResourceAsStream(String name)
通常用来加载配置文件
注解
作用
在程序运行时,通常与反射一起使用
注解类型
标记注解
注解中没有属性
单值注解
注解中只有一个属性
完整注解
注解中有多个属性
元注解
@document
@Inherited
表示子类能继承父类上的注解
@Target
表示注解的类型
ElementType.METHOD
表示用于方法上
ElementType.FIELD
表示用于成员方法上
ElementType.PARAMETER
表示可用于形参上
ElementType.LOCAL_VARIABLE
表示用于局部变量上
@Retention
表示注解的生命周期
RetentionPolicy.RUNTIME
表示在程序运行时有效
RetentionPolicy.SOURCE
表示在源码阶段有效
RetentionPolicy.CLASS
表示在编译阶段有效
代理
静态代理
接口
被代理类(需要实现接口)
代理类(需要实现接口)
缺点:
代理类需要实现被代理类的所有方法,但不是所有的方法都需要扩展
可以使用中间包装类,让代理类继承包装类
代理类有用被代理类的所有权
装饰者模式
与静态代理的区别:代理类对象由构造方法注入
动态代理
roxy.newProxyInstance
classloader
代理类加载器
getInterfaces
代理类实现接口
InvocationHandler
能获取实现接口上的注解,这是直接用反射无法获取的
cglib代理
enhance
java8新特性
四大接口类型
函数式接口
functionalInterface
决断式接口
Predicate
消费式接口
Consumer
供给式接口
supplier
对外提供数据
lambda表达式
与匿名内部类的区别
语法简短
lambda少生成一个class文件(内部类),提高了速率
Stream
延迟方法
返回值是stream,可以继续操作
filter
limit(需要几个)
skip(跳过几个)
concat(合并流)
终结方法
返回值不是stream
forEach()
count
流的获取
collection中方法(stream)获取
数据使用stream.of(数组名称)
map集合,只能转换为集合再获取
xml
作用
传输数据
已被json取代
配置文件
声明
标签
属性
文本内容
注释
约束(规范)
dtd约束
只能对标签,属性约束
schema约束
对所有约束
解析
dom
一次性全部读入内存,支持crud
多用于增删改
sax
串行方式读取,一次一行
只能读取,不能修改
第三方解析包
jaxp
jdom
dom4J
SaxRead
Document =saxReader.read(new File("stu.xml"))
getRootElement
elements
element
getText()
attribute
getValue()
mysql
概念
对数据存储,并且相对io流更高使用的是文件系统,只能通过特定的mysql语句获取
mysql库java项目的联系
一个库对应一个java项目,
一个表对应一个类,
一条记录对应一个对象
sql分类
DDL(数据定义语言)
数据库中库与表的建立
DMl(数据处理语言)
数据库对数据增删改
DQL(数据查询语言)
处理数据库的查询
DCL(数据控制语言)
用来定义数据库的创建和权限,和用户
查询顺序
1.from
2.where
3.group by
4. having
对group by过滤
5.select
6.order by
asc
升序,默认
desc
降序
sql语句
添加
添加字段
alter table 表名 add 字段名 字段类型 约束
添加数据
insert into 表名 values(字段名,类型)
删除
删除字段
alter table 表名 drop 字段名
删除数据
delete from 表名 where 条件
支持事务
truncate table 表名
不支持事务
是删除了表,在创建表结构
修改
修改字段名
alter table 表名 change 旧字段名 新字段名 类型 约束
修改字段类型
alter table 表名 modify 字段名 字段新类型
修改表名
rename table 旧表名 to 新表名
查询
select [distinct] 字段名... form 表名 where 条件
select 字段(*) from 表名 where [条件][group by 字段名 having 名称 order by 字段名称 排序方式]
关键字
primary key
主键约束
unique
唯一
auto_increment
自增约束
not null
非空
foreign key(字段名) references 表名(字段名)
外键约束
check
函数
max(字段名)
distinct
去除重复的数据
min(字段名)
avg(字段名)
count(*)
limit(起始值,页面大小)
数据库用户管理
create user '用户名'@'访问主机名' identified by 密码
权限管理
查看权限
show grants for '用户名'@‘访问主机名’
授予权限
grant 权限1,权限2 数据库名.表名 to ‘用户名’@‘访问主机名’
撤销权限
revoke 权限1,权限2 数据库名.表名 from ‘用户名’@‘访问主机名’
表于表之间的关系
一对一
一对多
多对多
连接
内连接
显式内连接
select * from t1 inner join t2 on 条件
隐式内连接
select * from t1 , t2 on 条件
外连接
左外连接
select * from t1 left outer join t2 on 条件
右外连接
子主题 1
select * from t1 right outer join t2 on 条件
事务
概念
一条或多条sql组成一个执行单元,要么同时成功,要么同时失败
SELECT @@autocommit;
查看自动提交状态,默认为1,自动提交
设置为0,则为手动提交
顺序
开事务
start transaction;(start)
savepoint(保存点)
回滚事务
rollback
提交
commit
特征(ACID)
原子性
一致性
持久性
隔离性
隔离级别
查看隔离级别
select @@tx_isolation();
问题类型
脏读
脏读指的是读到了其他事务未提交的数据,未提交意味着这些数据可能会回滚,也就是可能最终不会存到数据库中
不可重复读
不可重复读指的是在同一事务内,不同的时刻读到的同一批数据可能是不一样的,可能会受到其他事务的影响
幻读
事务A对某些行的内容作了更改,但是还未提交,此时事务B插入了与事务A更改前的记录相同的记录行,并且在事务A提交之前先提交了,而这时,在事务A中查询,会发现好像刚刚的更改对于某些数据未起作用,但其实是事务B刚插入进来的,让用户感觉很魔幻,感觉出现了幻觉
数据库默认的是不可重复读
repeatable read
设置隔离级别
设置会话隔离级别,不用断开连接生效
set session transaction isolation level 级别
设置全局级别,重新连接生效
set session transaction isolation level 级别
隔离级别
读未提交
read uncommit
读已提交
read commit
解决了脏读
可重复读
repeatable read
可重复读指的是在一个事务内,最开始读到的数据和事务结束前的任意时刻读到的同一批数据都是一致的
解决了可重复读,即在事务中无法查看另一个已提交的数据
串行话(序列化)
Serializable
解决了所有问题,但是效率比较低
底层原理
使用b+树
使用多重红黑树组成,除了叶子节点其余节点都是冗余节点,所有的值都是存储在叶子节点上,并且叶子节点上还有指针,存储的是下一个叶子节点的地址
与b-树的区别
b树上所有的节点都是数据,不存在冗余节点,并且没有指针,每次查询只能从根节点比较
JDBC
执行顺序
加载jar
一般使用5.1.47
加载驱动
DriverManager.registerDriver(new Driver());
会加载两次驱动,因为driver中static会加载一次
Class.forName("com.mysql.jdbc.Driver")
利用反射只会加载一个
获取连接
使用drivermanager获取连接
drivermanager.getconnection()
获取执行sql对象
connection.createstatement()
此方法中的sql语句是拼接的,容易sql注入,即是用or '1=2'或者'-- '采用数据库注释的方式使sql注入
connection.preparedstatement()
采用预编译的方式,有效的防止了sql注入
编辑sql,执行sql
stat.execute()
能执行dml语句和dql语句,返回boolean,true表示sql,false表示sml语句
stat.executeupdate()
执行dml语句
stat.executequery()
执行dql语句
result处理结果集
result.next()
判断是否有下一个
rs.getint()
获取一个int类型的值,其中可以写字段名或者获取结果的字段索引
rs.getString
获取一个String类型的值,其中可以写字段名或者获取结果的字段索引
rs.getObject()
获取一个object类型的值,其中可以写字段名或者获取结果的字段索引
释放资源(关闭后最好制为null,容易被jvm回收)
connect.close(),
statment.close()
result.close()
连接池
连接池的意义
不断的连接和销毁数据库连接是一个消耗系统资源的,
数据库连接池的思想是一建立一个缓冲池,同时也提高了对数据库连接池的一个管理
数据库连接池的思想是一建立一个缓冲池,同时也提高了对数据库连接池的一个管理
c3p0(自动扫描配置)
使用xml方式配置
c3p0-config.xml
使用properties方式配置
c3p0.properties
Java带码配置
setDriverClass
setURl
setUser
setPassword
数据库池combopooldasource()
geconnection
druid
使用properties方式配置,不会自动扫描,需要手动装配
druiddatasourcefactory.createsource()
dhcp
dbutils
queryrunner(连接池)
update
sql语句
参数列表
query
sql语句
beanhander<类型>(类对象)
beanlisthander<类型>(类对象)
localThread
这是一个map集合,其中的key为线程名,value为泛型,这里存储的是连接
set(connect)
只需要设置其值即可,不可设置其key,
get();
根据线程获取之前的值
remove()
移除其中存储的值,也是根据其线程移除
jsp+servlet
servlet
Servlet是一个运行在web服务端的java程序
实现方法
继承GenericServlet或者HttpServlet,或者实现servlet接口
生命周期
初始化
init
servlet第一次调用时创建
srvice
doget
dopost
destroy
servlet初始化时机
于load-on-startup它的可以配置的值有10个,1代表优先级最高
映射方式
完全匹配 要求以”/”开始
目录匹配 要求以”/”开始,以*结束
扩展名匹配 要求不能以”/”开始,以*.xxx结束
一个Servlet可以有多个映射路径
缺省servlet
它的url-pattern的配置值为”/”
做不到urlpattern时
加载静态资源
跳转方式
forward
客服端发送一次请求,服务端响应一次
属于服务器内部转发,转发时已有项目路径
可以携带参数,服务端使用request.parameters(参数名)获取
redirect
客服端发送两次请求,服务端响应两次
客户端首先发送一次请求,服务端响应后,客户端又重新发送一个请求,服务端再响应
servletconfig
获取Servlet名称 getServletName
获取Servlet初始化参数 getInitParameter, getInitParameterNames
获取ServletContext对象
ServletContext
上下文对象,域对象(存储 数据)
每一个web应用程序创建一个ServletContext对象
在web应用中的servlet要想实现资源的共享,可以通过ServletContext来完成,
public String getRealPath(String path)
获取资源在服务器上的真实磁盘路径
@WebServlet
String name() default ""
设置Servlet的名称
String[] value() default {}
设置Servlet的访问路径,等价于urlPatterns,不能同时使用
String[] urlPatterns() default {}
请求乱码
8.5之后的tomcat不会产生乱码,原因是tomcat在请求路径中默认加了URLEncoding="utf-8"
post
设置请求响应的解码码方法:request.setcharEncoding="utf-8"
设置页面解码的方法:response.setcontexttype("text/html;charset='utf-8'")
http协议
hyper text transfer protocol : 超文本传输协议
http协议是基于tcp/ip协议的
组成
请求行
请求方式
请求地址
请求版本及协议
请求头
Accept-Encoding
客户浏览器支持的压缩格式
子主题 1
Content-Type
告知服务器,请求正文的MIME类型。
User-Agent
浏览器相关信息
Cookie
会话管理相关,非常的重要。
请求正文
Location
请求重定向的地址,常与302配合使用。
Content-Type
告知客户浏览器,响应正文的MIME类型。
Content-Disposition
告知客户浏览器,以下载的方式打开响应正文
Refresh
定时刷新
常用状态码
200 一
302
请求重定向(客户端行为,两次请求,地址栏发生改变)
304
请求资源未发生变化,使用缓存
404
请求资源未找到
500
服务器错误
request
getContextPath
获取虚拟目录
getServletPath
获取映射路径
getHeader
getParameter
根据名称获取参数值
getParameterValues
获取多个值,通常获取多选框
getParameterMap
获取一个map,常与beanutil一起使用
request.getRequestDispatcher("/listServlet").forward(request, response);
获取项目的路径
getrequesturi
表示不带协议的路径
getrequesturL
获取带协议的绝对路径
response
setCharacterEncoding("utf-8")
告诉服务器,应该以utf-8编码响应正文
setHeader("Content-Type","text/html;cha
rset=utf-8")
告诉浏览器,应该以utf-8解码,响应正文
response.setHeader("Refresh", "2;URL=/login.html")
response.sendRedirect("ResponseDemo7")
session
getAttribute
setAttribute
removeAttribute
生命周期
第一次请求中若没有sessionid的话request.getSession()就会自动创建session
Session的相关信息是存储到Cookie中的,
而session的销毁默认是在30分钟内不使用会自动销毁
setMaxInactiveInterval(int interval)
单位是秒
由服务器创建,数据存储在服务端
cookie
生命周期
是web开发中的一次通话过程,当打开浏览器,访问网站地址后,会话开始,当关闭浏览器或者会话到期
HTTP协议请求和响应消息头的一部分
setMaxAge(int expiry)
设置cookie的生命周期
由服务器创建,存储在浏览器
path
设置的是cookie的路径,若下一次的访问在此路径下,请求头中就会含有cookie
监听器
概念
事件源
:事件发生的源头
request域对象、session域对象、ServletContext域对象
监听器
监听事件发生
绑定
将监听器绑定到事件源
事件
能够触发监听器的事
一类监听器
监听域对象的创建、销毁
ServletRequestListener
HttpSessionListener
ServletContextListener
二类监听器
监听域对象中的属性变更(属性设置、属性替换、属性移除)
ServletRequestAttributeListener
HttpSessionAttributeListener
ServletContextAttributeListener
三类监听器
监听域对象的java对象的绑定
HttpSessionBindingListener
jsp
本质上是servlet,其编译的Java文档中可以看到继承了htttpjspbase,间接继承了httpservlet
包括了HTML的展示技术,同时具备Servlet输出动态资源的能力。
变量级别
<%! java代码 %>
成员变量级别
<% java代码 %>
servlce方法中,局部变量级别
<%= 变量值 %>
向浏览器输出内容,相当于response.getWriter().write()
注释
html注释,会在源码中显示
<!‐‐ ‐‐>
Java注释
//
jsp注释
不会在源码中显示
<%‐‐ ‐‐%>
jsp指令
page
contentType="text/html;charset=UTF-8"
设置服务器响应正文解码方式和浏览器解码方式
language="java"
jsp页面支持的语言
import="java.util.List"
导入对应的jar
isELIgnored="false"
是否忽略大小写
errorPage="error.jsp"
发生错误,跳转页面
isErrorPage="true"
标记当前是否是一个错误页面。是否可用使用exception
taglib
作用:在当前jsp页面中导入jstl标签库
格式:<%@taglib prefix="前缀" uri="路径" %>
include
九大内置对象
页面对象
request
session
response
application
servletcontext
out
页面
page
pagecontext
信息
exception
config
el表达式
用${msg}没有指明域,那么就从pageScop->requestScop->sessionScop->applicationScop中依次查找
关系运算符
>(gt) >=(ge) <(lt) <=(le) == (eq) !=(ne)
逻辑运算符
&&(and) ||(or) !(not)
if:条件判断
forEach:遍历
forToken:分割字符串
web设计模式
model
维护数据提供数据的访问 javaBean
view
视图层
controller
web层:处理请求
service层:业务逻辑,业务层
dao层:操作数据库,持久层
分页
作用:主要解决页面的数据加载的过多,导致页面访问速度过慢
分析
请求中包含:
当前页currentPage
响应中包含
当前页数(currentPage)
总页数(totalPage)
总记录数(totalSize)
每页记录数(pageSize)
当前页数据(list)
上传文件
若不设置的话,服务器会自动把他认为自己可识别的字段,
在类方法上使用@@MultipartConfig
表示服务器不会转化为自己的格式
获取的方式
req.getPart("myfile");
获取单个文件
re.getParts()
获取多个文件
获取文件头内容
getHeader("Content-Disposition")
获取文件名称
substring(header.lastIndexOf("."),header.length()-1)
获取上传文件的文件流
part.getInputStream();
获取服务器中图片的位置
req.getServletContext().getRealPath("file");
利用流存储数据
下载文件
req.getServletContext().getRealPath("file");
获取服务器中存储位置,需要加上具体的文件名
getServletContext().getMimeType(name);
通过servletcontext来获取其文件的类型(浏览器能够识别的类型)
res.setHeader("Content-type", mimeType)
设置头,表示浏览器识别的类型
res.addHeader( "Content-Disposition","attachment;filename="+name);
设置头文件,表示此文件为下载文件,并指定下载名称,注意的是下载会中文乱码
res.setContentLength(fis.available());
设置相应头的长度,表示下载完成后会有提示
res.getOutputStream();
获取向浏览器输出的流,用于输出文件
前端基础
html
头部
<title>
标题
<base>
标签描述了基本的链接地址/链接目标,该标签作为HTML文档中所有的链接标签的默认链接:
<link>
标签定义了文档与外部资源之间的关系。
标签通常用于链接到样式表:
<style>
<meta>
提供了元数据.元数据也不显示在页面上,但会被浏览器解析。
通常设置字符集的编码
通常用于指定网页的描述,关键词,文件的最后修改时间,作者,和其他元数据。
<script>
标签用于加载脚本文件,如: JavaScript。
form
<input>
定义输入域
<textarea>
定义输入域
<label>
<select>
定义了下拉选项列表
<option>
checked
表示选中状态
<button>
table
<table>
表格定义
<tr>
行
<th>
表头
<td>
普通列
<caption>
表格标题
ifframe
height 和 width
属性用来定义iframe标签的高度与宽度。
设置name,在其他标签中设置跳转为这个name的话,则是在这里显示跳转内容
frameborder
属性用于定义iframe表示是否显示边框。
列表
oi
order list
有序列表
ul
unorder list
无序列表
li
列表项
<dl>
定义列表
<dt>
自定义列表项目
<dd>
定义自定列表项的描述
css
字体属性
font-size
font-family
font-weight
文本属性
color
line-height
word-spacing
text-align
text-decoration
文本修饰,例如下划线等
text-indent
首先缩进
背景属性
backgroud-color
backgroud-image
backgroud-position
尺寸属性
height
line-height
width
边框属性
border-style
border-width
border-color
盒子模型
position
bottom
right
left
定位
相对定位(relative)
绝对定位(absolute)
javaScript
概念
JavaScript是一种`基于对象的事件驱动型的脚本语言,是在客户端的一种语言
基于对象
区别于Java中的面向对象,遵循`对象.方法`的规则,但是没有类的概念
事件驱动
脚本语言代码需要由网页中的事件来触发执行
脚本语言
JS作为寄生语言,写在HTML网页中
功能
修改HTML标签的属性
修改HTML标签的样式
动态修改网页中的内容
在网页中输入的数据进行校验
实现与服务端的异步交互
数据类型
Number
String
属性length
indexOf(str)
match(str)
内容匹配
replace()
toUpperCase() / toLowerCase():
split()函数转为数组:
Date
getFullYear()
getDay()
获取周几
Array
pop()
获取最后一个元素,并且删除
push
添加元素
Boolean
Math
RegExp(正则表达式)
BOM
Window(Bom)
Screen
screen.width
获取屏幕的宽度
screen.height
获取屏幕的高度
Location
location.assign
设置新的地址
location.href
location.reload
刷新网页
Navigater
弹窗
alert
confirm
product
Document(Dom)
可以修改html内容
innerText
innerHTML
可以修改css样式
内容校验
获取cookie
遍历
运算符
函数,事件
0 条评论
下一页