本帖最后由 小石姐姐 于 2018-4-26 13:58 编辑
学习内容总结
File:文件和目录路径名的抽象表示形式,File类的实例是不可变的
构造方法:
Fill(String paehname):
File(String parent ,String child):
File(File parent,String child):
File的常用功能:
创建功能
boolean createNewFile():指定路径不存在该文件时时创建文件,返回true,否则返回false
boolean mkdir():当指定的单级文件夹不存在时创建文件夹并返回true,否则返回false
boolean mkdirs():当指定的多级文件夹某一级文件夹不存在时,创建多级文件夹并返回true,否则返回false
boolean delete():删除文件或者删除单级文件夹
删除功能
boolean delete()
判断功能:
boolean exists():判断指定路径的文件或文件夹是否存在
boolean isAbsolute():判断当前路路径是否是绝对路径
boolean isDirectory():判断当前的目录是否存在
boolean isFile():判断当前路径是否是一个文件
boolean isHidden():判断当前路径是否是隐藏文件
File类的获取功能和修改名字功能
File getAbsoluteFile():获取文件的绝对路径,返回File对象
String getAbsolutePath():获取文件的绝对路径,返回路径的字符串
String getParent():获取当前路径的父级路径,以字符串形式返回该父级路径
File getParentFile():获取当前路径的父级路径,以字File对象形式返回该父级路径
String getName():获取文件或文件夹的名称
String getPath():获取File对象中封装的路径
long lastModified():以毫秒值返回最后修改时间
long length():返回文件的字节数
boolean renameTo(File dest): 将当前File对象所指向的路径 修改为 指定File所指向的路径
· 注意:修改的文件路径不能存在,如果存在则修改失败
File类的其它获取功能
String[] list():以字符串数组的形式返回当前路径下所有的文件和文件夹的名称
注意:只有指向文件夹的File对象才可以调用该方法
File[] listFiles():以File对象的形式返回当前路径下所有的文件和文件夹的名称
static File[] listRoots():获取计算机中所有的盘符
删除指定的目录(包含子目录)
注意:如果要删除一个目录,则需删除这个目录下的所有文件的子文件和子目录
IO流的分类
** ****************************************************************************************
流向
输入流 读取数据 FileReader Reader
输出流 写出数据 FileWriter Writer
*******************************************************************************************
数据类型
字节流
字节输入流 读取数据 InputStream
字节输出流 写出数据 OutputStream
字符流
字符输入流 读取数据 Reader
字符输出流 写出数据 Writer
*********************************************************************************************
标准输入输出流:
public static final InputStream in:字节输入流,用来读取键盘录入的数据
public static final PrintStream out:字节输出流,将数据输出到命令行
utputStreamWriter:将字节输出流转换为字符输出流
由于标准输出流是一个字节输出流,所以只能输出字节或者字节数组,但是我们读取到的数据则是字符串,如果想进行输出还需要转换成字节数组
我们要想通过标准输出流输出字符串,把标准输出流转换成一种字符输出流即可,OutputStreamWriter转换流()
字符打印流:PrintWriter
打印流添加输出数据的功能,使它们能够方便地打印各种数据值表示形式.
void print(String str): 输出任意类型的数据,
void println(String str): 输出任意类型的数据,自动写入换行操作
打印流:
PrintStream
PrintWriter
可以自动换行,println()
不能输出字节,但是可以输出其他任意类型
通过某些配置,可以实现自动刷新(只有在调用 println、printf 或 format才有用)
也是包装流,不具备写出功能
可以把字节输出流转换成字符输出流
注意:只能输出不能输入
注意:创建FileWriter对象时boolean参数是是否追加,
创建打印流对象的boolean类型参数是是否自动刷新
ObjectInputStream 称为 反序列化流,利用输入流从文件中读取对象
ObjectOutputStream 称为 序列化流,利用输出流向文件中写入对象
注意: 使用对象输出流写出对象,只能使用对象输入流来读取对象 只能将支持 java.io.Serializable 接口的对象写入流中
Serializable:序列号,是一个标识接口,只起标识作用,没有方法
*************************************************************************************************************************
进程:
* Process, 一个应用程序在内存中的执行区域
线程:进程中的一个执行控制单元,执行路径
单线程:安全性高,但是效率低
多线程:安全性低,效率高
Thread (线程) 实现runnable接口
创建线程有两种方法,一种是将类声明为Thead的子类。重写Thead的run方法接下来可以分配和启动该类的实例
String getname 返回该线程的名称
void SetName(String name) 修改线程名称使之与参数name名称相同
CPU 执行程序的随机性
创建线程的另一种方法是声明实现Runnable接口的类。该类然后实现run方法。然后可以分配该类的实例,在创建Thread时作为一个参数
Thread(Runnable target)
Static Thread currentThread()
synchronized:同步(锁),可以修饰代码块和方法,被修饰代码块和方法一旦被某个线程访问,则直接锁定,其他的线程将无法访问
同步代码块:
synchronized(锁对象){ }
注意:锁对象需要被所有的线程锁共享
同步:安全性高,效率低
非同步:效率高,但是安全性低
*************************************************************************************************************************************
反射:
字节码文件获取的三种方式:
1. 对象名.getCalss(); 次方法来自于Object 对象已经存在的情况下, 可以使用这种方式
2. 类名.class 类名.class这是一个静态的属性, 只要知道类名, 就可以获取
3. Class.forName(“com.itheima_01.Student”); 通过Class类中的静态方法, 指定字符串, 该字符串是类的全类名(包名+类名)
此处将会抛出异常都系 ClassNotFoundException 防止传入错误的类名
直接通过Class类中的newInstance()和获取getConstructor()有什么区别?
newInstance()方法, 只能通过空参的构造方法创建对象
getConstructor(Class<T>… parameterTypes)方法, 方法接受一个可变参数, 可以根据传入的类型来匹配对应的构造方法
方法总结
通过反射获取成员变量并使用
Field[] getFields() --> 返回该类所有(公共)的字段
Field getField(String name) --> 返回指定名称字段
Field[] getDeclaredFields()--> 暴力反射获取所有字段(包括私有)
Field getDeclaredField(String name) --> 暴力反射获取指定名称字段
void setAccessible(boolean flag) --> 让jvm不检查权限
Field:
Object get(Object obj) --> Field对象调用, 返回传入对象的具体字段
void set(Object obj, Object value) --> Field对象调用
参数1: 要修改的对象
参数2: 将此对象的字段修改为什么值.
BeanUtils的常用方法
static void setProperty(Object bean, String name, Object value) 用来给对象中的属性赋值
static String getProperty(Object bean, String name) 用来获取对象中的属性
static void populate(Object bean, Map properties) 用来给对象中的属性赋值
**********************************************************************************************************************
网络通信三要素
传输协议`: 通信的规则
IP地址`: 是一个二进制数字 www.baidu.com -> DNS -> 10.123.34.1
端口号`: 标识使用网络通信的进程的逻辑地址, 用于定位一个主机上的具体服务
常见协议
TCP: Transmission Control Protocol, 传输控制协议Transmission Control Protocol
UDP: User Datagram Protocol, 用户数据报协议User Datagram Protocol
UDP和TCP区别
UDP: USER DATAGRAM PROTOCOL, 用户数据报协议.
1、无连接的不可靠协议
2、数据传输大小限制为64K(一个包)
3、不需要建立连接即可传输
4、数据发送速度快, 发送方只发送数据, 不检查接收方是否真正接收到数据, 所以数据可能有丢包的情况
适用场景:适合实时性要求强的场合, 比如网络电话等环境, 这种协议延迟很小
TCP: TRANSMISSION CONTROL PROTOCOL, 传输控制协议
1、 需要建立连接的可靠协议
2、没有数据传输大小的限制
3、在传输前需要先建立连接(三次握手)
4、它的重发机制保证了数据传输的准确性, 但因为需要接收方发回验证信息, 所以数据发送时间长, 数据流量大
适用场景:这种方式适合准确性要求强的场合, 比如金融系统, 视频点播, 用户可以等待数据传输但是不能忍受错误
Java.net.InetAddress`类: 用于表示IP地址对象 (InetAddress的实例包含 IP 地址,还可能包含相应的主机名)
静态方法
static InetAddress getLocalHost()`: 获取本机的InetAddress对象
static InetAddress getByName(String host)`: 根据**主机名**或**IP的字符串**获取主机的InetAddress对象
static InetAddress getLoopbackAddress()`: 获取回环地址的InetAddress对象. 即`127.0.0.1`或` localhost`
static InetAddress getByAddress(byte[] addr)`: 根据IP获取InetAddress对象
成员方法
String getHostAddress()`: 返回主机的IP地址
String getHostName()`: 返回主机名
UDP协议发送数据
java.net.DatagramSocket`类: 基于UDP协议的Socket
构造方法
DatagramSocket()`: 创建DatagramSocket对象, 随机分配端口号
DatagramSocket(int port)`: 创建DatagramSocket对象, 指定端口号
成员方法
void send(DatagramPacket p)`: 发送数据包
void receive(DatagramPacket p)`: 接收数据, 数据保存在DatagramPacket对象中
void close()`: 关闭通信, 释放资源
java.net.DatagramPacket`类: UDP数据包
构造方法
DatagramPacket(byte[] msg, int msgLength, InetAddress host, int port)`: 创建数据包对象, 指定数据, 目标主机对象, 端口
DatagramPacket(byte[] buf, int length)`: 创建数据包对象, 接收数据为length的数据, 存入byte数组中
成员方法
InetAddress getAddress()`: 获取数据包发送方的InetAddress对象
byte[] getData()`: 获取包中的数据, 以byte数组形式
int getLength()`: 获取数据包中数据的长度, 即byte数组的长度
int getPort()`: 获取发送方端口号
UDP协议接收数据
UDP不区分发送端和客户端**, 所以都使用DatagramSocket即可
端口绑定异常:
java.net.BindException: Address already in use: Cannot bind`: 端口已经被占用
如何解决: 要更改为其他端口号, 或将占用端口的应用关闭
TCP协议发送数据
java.net.Socket`类: 基于TCP协议的Socket, 作为客户端
构造方法
Socket(InetAddress add, int port)`: 创建TCP客户端对象
成员方法
OutputStream getOutputStream()`: 获取输出流对象, **用于发送数据**
InputStream getInputStream()`: 获取输入流, **用于接收数据**
void close()`: 释放资源
TCP协议接收数据
java.net.ServerSocket`: TCP服务端
构造方法
ServerSocket(int port)`: 创建一个TCP服务端, 并监听指定端口
成员方法
Socket accept()`: 监听数据, 会阻塞. 收到数据后返回Socket对象
void close()`: 关闭Socket
*********************************************************************************************************************
HTML:Hyper Text Markup Language --- 超文本标记语言.
标记语言:指的是通过一组标签的形式描述事物的一门语言.
超文本:比普通的文本更强大.
HTML的结构标签
跟标签:<html></html>
<head> -- html的头标签
<body> -- html的体标签
【HTML的字体标签】
<font>标签:HTML中的字体标签.
<font>标签的属性:
<标签 属性名=”属性值” 属性名=”属性值”></标签>
属性:
color属性:字体颜色
英文单词设置:black,red,green,blue...
使用16进制数设置:#FFFFFF , #FFF(了解)
size属性:字体的大小
face属性:字体
HTML的排版标签
标题标签:h标签<h1>...<h6>
<!-- HTML的标题标签 -->
<h1>一级标题</h1>
<h2>二级标题</h2>
<h3>三级标题</h3>
段落标签:p标签 <p></p>
字体加粗标签:b标签
字体斜体标签:i标签
字体下划线:u标签
居中标签:<center>标签
HTML的图片标签
图片标签:<img>
属性:
src :图片的来源.
width:图片的宽度.
height:图片的高度.
alt:图片找不到显示的内容
HTML的列表标签
有序列表
<ol>
<li></li>
</ol>
无序列表
<ul>
<li></li>
</ul>
HTML的超链接标签:<a>
属性:
href:链接的路径
target:打开的方式
_self :在自身页面打开
_blank:新打开一个窗口
无序列表的属性:
type属性
disc实心点.
circle:空心圆
square:方块.
有序列表的属性:
type属性:
1:数字类型
a:英文类型
i:罗马字符
start属性:从哪开始
超链接的target属性:
_self
_blank
_parent
【HTML的表格标签】
<table>
<tr>
<td></td>
<td></td>
</tr>
</table>
属性:
width :表格宽度
height :表格高度
border :边框
align :表格水平位置:
left
center
right
<td>的属性:
colspan=”列数”
rowspan=”行数”
HTML的表单标签(*****)
HTML的表单标签:<form>
常用属性:
action属性:提交的路径.默认提交到当前页面
method属性:请求的方式.GET和POST.默认是GET.
GET方式和POST方式的区别?
GET:数据会显示到地址栏中.GET方式提交是有大小的限制.
POST:数据不会显示到地址栏中.POST方式提交的是没有大小限制.
HTML中表单元素:
<input type=”text”>:文本框.
常用属性:
name:表单元素的名称.必须有name属性,然后后台才可以接收数据.
value:文本框的默认值.
size:文本框的长度.
maxlength:文本框输入的最大长度.
readonly:只读文本框.
<input type=”password”>:密码框.常用属性:
name:表单元素的名称.必须有name属性,然后后台才可以接收数据.
value:密码框的默认值.
size:密码框的长度.
maxlength:密码框输入的最大长度.
<input type=”radio”>:单选按钮.
常用的属性:
name:表单元素的名称.必须有name属性,然后后台才可以接收数据.
value:单选按钮的默认值.
checked:单选按钮默认被选中.
<input type=”checkbox”> :复选按钮.
常用的属性:
name:表单元素的名称.必须有name属性,然后后台才可以接收数据.
value:单选按钮的默认值.
checked:单选按钮默认被选中.
<input type=”button”>:普通按钮.没有任何功能的按钮.
<input type=”submit”>:提交按钮.
<input type=”reset”>:重置按钮.
<input type=”file”>:文件上传的表单项.
<input type=”hidden”>:隐藏字段.
<input type=”image”>:图片按钮
<select>:下拉列表.
<textarea>:文本域.
<input type=”email”>
<input type=”date”>
<input type=”number”>
<input type=”color”>
HTML的框架标签
框架标签:<frameset >,标签与body标签是冲突,有frameset就可以没有body.
属性:
rows
cols
使用<frame>标签,frame代表切分的每个部分.
特殊字符的标签:
空格 :
< :<
> :>
|