一.常用的dos命令操作符
什么是dos命令
window操作系统通过命令提示符cmd模拟ms-dos系统的功能。
常用的dos命令
切换当前盘 :想去那个盘,直接那个盘加:
快捷打开cmd : win + R
进入/打开文件夹:cd 文件夹路径名
返回上一级 :cd..
看文件目录:dir
清屏 :clr
退出:exit
二.java的简介及组成
java语言的特性
跨平台:不区分操作系统,真正的运行依靠虚拟机JVM实现。
Tip:java程序跨平台,JVM不跨平台,不同的操作系统对应要有不同的JVM.
JRE和JDK
JRE:
Java Development Kit 的简称,Java 开发工具包,提供了 Java 的开发环境和运行环境。包含jvm以及其核心类库。
JDK:
Java Runtime Environment 的简称,Java 运行环境,为 Java 的运行提供了所需环境。
具体来说 JDK 其实包含了 JRE,同时还包含了编译 Java 源码的编译器 Javac,还包含了很多 Java 程序调试和分析的工具。
区别:
简单来说:如果你需要运行 Java 程序,只需安装 JRE 就可以了,如果你需要编写 Java 程序,需要安装 JDK。
Tip:通过javac编译器进行编译将java源程序转化为字节码以“.class"结尾的文件进行运行。
三.类及其定义
什么是类
类是java当中所有源代码的基本组织单位,类的名称必须与包含该类的文件名相同。
测试类
-
含义
包含main方法的类。main方法:程序开始运行的入口。
-
定义格式:
public static void main(String [],args) {
}
四.变量及其命名规则
关键字
均为小写字母构成,不能用作变量名。
标识符
可以由字母,数字,下划线组成,当不能以数字作为开头。
变量取名规则
-
类名:大驼峰式,每个单词的首字母大写
-
变量名及方法名:小驼峰式,第一个单词首字母小写,后单词首字母小写。
五.数据类型
基本数据类型
整数型:
- byte(1B)
- short (2B)
- int (4B)
- long(8B,加上L后缀)
浮点型:
- float(要加上F后缀)
- double
字符型:
- char
布尔型:
- boolean
Tip:数据的表示范围与其数据存储字节无关,eg float存储的范围会比long存储的范围来的广。因为float采用科学记数法进行表示。
数据类型转换
自动类型转换
范围从小到大进行转换,不需要人为进行操作。
强制类型转化
可能发生精度损失和数据溢出。
字节缓冲流
作用:利用缓冲区(数组),提高读写效率
字节缓冲输出流(bufferfos)
继承了outputstream ,继承了其方法【close,flush,write】close在关闭流时会先调用flush
构造方法:(ops out)//不指定大小,out输出的目的地
(ops out ,int size ) //指定buff大小
字节缓冲输入流(bufferfis)
继承的方法:read,read(byte[]),close
构造方法:构造方法:(fis iut)//不指定大小,out输出的目的地
(fis iut ,int size ) //指定buff大小
两者直接关闭缓冲流对象即可,不用再关闭fis/fos对象。
字符缓冲流
字符缓冲输出流(bufferwriter)
继承方法:write(char[],buf)
特有成员方法:void newline()//根据系统输出换行符。
println调用的就是newline
字符缓冲输入流(bufferreader)
继承方法:read(),read(char[] buf),close
特有成员方法
String readline()//读单行,返回该行字符串。读至末尾返回,NULL 但是不会读取换行
行判断标准:/r /n /r/n
字符编码和字符集
编码按照某种规则将字符存储到计算机当中
字符集也叫编码表,系统能支持的所有字符//计算机存储对应规则
一旦编码方式被指定,字符集也确定下来。
常见的字符集:ASCII码表(0-127),
GBK(双字节编码)/GBxxx,
unicode(万国码,最多使用4字节进行存储)u-8(最经常使用,3字节存储中文)
中文系统编码(gbk) ansi---系统默认
idea默认读取utf-8
转换流
作用:
将字符在不同编码之间进行转换。
InputStreamReader
可以按照指定编码表进行编码转换,将字节转换为字节【解码】
继承了reader 可使用其方法
构造方法:
1.默认字符集:(ips in)
2.指定字符集 (ips in ,Str charsetname)
构造方法的字符集要好读取文件的编码格式相同
OutputStreamWriter
将字符转换为字节【编码】字符通向字节的桥梁,按照致电给的编码表
继承自Write 可使用其方法
构造方法:
(ops)//默认格式【utf-8】
(ops out String charsetname)//charsetname不区分大小写
序列化与反序列化
序列化:将对象以流的方式写入到文件当中,该过程既包括字符也包括字节
【ObjectOutputStream】
继承flieoutputstream
构造方法:传参fos
writeObject(对象);//该对象必须实现serializable接口,该接口会给此类一个标记才可进行序列化
反序列化:将文件种保存的对象以流的方式读取出来,也叫读对象,叫对象的反序列化
【ObjectInputStream】
继承了fileinputstream
构造方法:传参fis
Object readObject();//抛出classNotFund异常,没有找到class文件
transient
被其修饰的成员不能被序列化,但是没有静态的含义。
静态static变量不能进行序列化
在生成class文件之后因为存在serializable之后就会为其添加一个序列号,该序列号也会被写入到txt文件当中。
如果对象被更改就会产生新的序列号,反序列化之后就会有invalidClassException
解决方法:人为加上静态的序列号
static final long serialVersionUID=42L;//常量不能改变
打印流-PrintStream
只负责输出,没有输入,不会抛出IO异常,继承自字节输出流
构造方法:
写了打印的目的地->文件/字节输出流/文件路径
自己特有方法:print/println输入的是啥就写入啥//默认的目的地是控制台。
改变目的地:systerm.setout(目的地),目的地可以是任意目的的输出流
继承的方法write输入字节写入的是字符。
网络编程
软件体系结构
1.c/s:client客户端和浏览器端
2.b/s:browser浏览器端和服务器端
网络通信协议
使得同一网络当中的计算机可以进行通信的通信规则。通信双方需同时遵守
tcp/ip协议(传输控制协议,应用层协议)
协议分类
udp协议:
面向无链接的协议,不能保证数据的完整性,可用于视频音频的数据传输。发送的协议数据再64B以内
tcp协议:
面向链接,客户端和服务器端进行三次握手。数据传输安全。
ip地址:
相当于计算机的标号,ipv4,由4字节构成。32个2进制,可写成a.b.c.d,a-d表示十进制(0-255)
ipv6由16个字节构成。
查看本机IP:cmd->ipconfig
ping +ip 成功表示可以进行通信
127.0.0.1/localhost代表本地的ip地址
端口号:
逻辑端口,操作系统为软件随机分配的端口号。或者软件自己向系统要,2B组成(0-65535)1024前的端口号不能使用,已经分配给已知的端口号。发送时使用IP加上端口号。
常用端口号:
80端口:网络端口号
3306:mysql 1521:oracle
8080: Tomcat
TCP通信程序
服务器端和客户端进行逻辑链接,该链接之中,包含一个对象,IO对象,IO对象是字节流对象。
服务器端自己没有IO流,使用客户端(socket)的流和客户端进行数据交互。
客户端Socket类:
在java.net包下,此类实现客户端的套接字(包括ip和端口号)
构造方法:
(string host,int port)//host可以是ip也可以是主机名
成员方法:
ops getops();//返回此套接字的输出流(网络流而不是自己创建的)
Ips getips()//返回输入流
void close()
创建socket对象就会和服务进行3次握手,没有链接成功返回异常(连接异常)。
服务器端serverSocket:
服务器实现的套接字。
构造方法:
(int port)//创建绑定到特定端口的服务器套接字
特有方法:
socket accep(),侦听并接受此套接字的链接
获得socket之后使用它的流。
函数式编程
函数式接口:有且仅有一个抽象方法的接口,但接口中可以包含其他类型的方法
格式可以在定义接口时增加一个注解,@functionalinterface:j检测接口是不是函数式接口。
体现就是lambda
匿名内部类会有一个class文件,lambda表达式不会产生class文件。
lambda:延迟加载