您的位置:首页 > 职场人生

黑马程序员——网路编程、正则表达式

2013-06-13 21:44 375 查看
 ------- android培训java培训、期待与您交流! ----------

———————————————————————————————————————————————————

29、GUI

Graphical User Interface

awt: Abstract Window ToolKit

布局管理器:

flow

|——Component 体系结构

|--Container

|---Panel

|---Window

|----Frame

|----Dialog

|-----FileDialog

30、网络编程

网络编程也叫Socket编程

|——UDP传输

DatagramSocket

此类表示用来发送和接收数据报包的套接字。

DatagramPacket

此类表示数据报包。

数据报包用来实现无连接包投递服务

|——TCP

ServerSocket 服务端套接字

Socket 客户端套接字

服务器端想要和客户端通信,就需要得到当前客户端的套接字

|——最常见的客户端:

浏览器:IE ,现在很多浏览器使用webkit内核

最常见的服务端:

服务器:Tomcat

|——模拟web服务器:

GET / HTTP/1.1
//请求行 。目前http协议有两个 1.0 和1.1

//请求消息头 属性名:属性值 其实就是键值对

Host: localhost:9090

Connection: keep-alive

User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko)

Chrome/23.0.1271.64 Safari/537.11 AirView3.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/ *;q=0.8

Accept-Encoding: gzip,deflate,sdch //支持的压缩方式

Accept-Language: zh-CN,zh;q=0.8
//支持的语言

Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
//支持的编码方式

//请求体 请求体和请求头有一个空行

自定义信息

|——模拟浏览器

HTTP/1.1 505 HTTP Version Not Supported //应答行 ,协议版本,应答状态码,应答状态描述协议

Server: Apache-Coyote/1.1

Date: Tue, 11 Jun 2013 12:42:50 GMT

Connection: close

//空行

应答体

|——URL

String url_str = "http://www.baidu.com/index.html?name=zhangsan";

URL url = new URL(url_str);

System.out.println("getProtocol:"+url.getProtocol());

System.out.println("getHost:"+url.getHost());

System.out.println("getPort:"+url.getPort());

System.out.println("getFile:"+url.getFile());

System.out.println("getPath:"+url.getPath());

System.out.println("getQuery:"+url.getQuery());

URL openStream()方法 返回值是InputStream

打开到此 URL 的连接并返回一个用于从该连接读入的 InputStream。

它其实是URL中openConnection().getInputStream()

|——获取URL的连接器对象。将连接封装成了对象:java中内置的可以解析的具体协议的对象//是一种底层实现

URLConnection con = url.openConnection(); //这个叫做URL连接器对象

//直接打印连接器对象

sun.net.www.protocol.http.HttpURLConnection:http://www.baidu.com/index.html?name

=zhangsan

|——为了解析服务器发回的web信息。就要使用URL对象

URL url = new URL(url_str);

URLConnection con = url.openConnection();

使用URL或者连接器的方法

31、 反射 提高了扩展性

java反射机制就是运行在运行状态中,对于任意一个类(class文件)都能够知道这个类的所有属性和方法

动态获取的信息以及动态调用对象的方法的功能称为反射机制

动态类获取类中信息就是java反射

反射一般有:接口、配置文件

想要对一个类文件进行解剖,只要拿到这个类的class文件就可以了

|——获取字节码的三种方式:

Class clazz = 类.class;

Class clazz = 对象.getClass();

Class clazz = Class.forName("完整类名");

|—— 基本的 Java 类型(boolean、byte、char、short、int、long、float 和 double)

和关键字 void 也表示为 Class 对象。

32、 正则表达式

正则表达式是用于操作字符串数据的

通过一定的符号来体现的

|——一些常用的表达式:

字符类

[abc] a、b 或 c(简单类)

[^abc]
任何字符,除了 a、b 或 c(否定)

[a-zA-Z]
a 到 z 或 A 到 Z,两头的字母包括在内(范围)

[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集)

[a-z&&[def]]
d、e 或 f(交集)

[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去)

[a-z&&[^m-p]]
a 到 z,而非 m 到 p:[a-lq-z](减去)

预定义字符类

. 任何字符(与行结束符可能匹配也可能不匹配)

\d 数字:
[0-9]

\D 非数字: [^0-9]

\s 空白字符:
[ \t\n\x0B\f\r]

\S 非空白字符:
[^\s]

\w 单词字符:
[a-zA-Z_0-9]

\W 非单词字符:
[^\w]

边界匹配器

^ 行的开头

$ 行的结尾

\b 单词边界

\B 非单词边界

\A 输入的开头

\G 上一个匹配的结尾

\Z 输入的结尾,仅用于最后的结束符(如果有的话)

\z 输入的结尾

Greedy 数量词

X? X,一次或一次也没有

X* X,零次或多次

X+ X,一次或多次

X{n} X,恰好 n 次

X{n,} X,至少 n 次

X{n,m} X,至少 n 次,但是不超过 m 次

组和捕获

捕获组可以通过从左到右计算其开括号来编号。例如,在表达式 ((A)(B(C))) 中,存在四个这样的组:

1 ((A)(B(C)))

2 \A

3 (B(C))

4 (C)

组零始终代表整个表达式。

|——正则表达式对字符串的常见操作:

1、 匹配:

其实使用的就是String类中的matches方法

2、 切割:

其实就是使用String类的split方法

String str = "zhangsantttlisimmmmwangwu";

String []names = str.split("(.)\\1+");

3、 替换:

其实使用的就是String类中replaceAll方法

String tel = "15000002222";

tel = tel.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");

4、 获取:

String str = "ni men hao.hello world";

Pattern p = Pattern.compile("\\b[a-z]{3}\\b"); // \b表示单词边界

Matcher m = p.matcher(str);

while(m.find()){

System.out.println(m.group());

}

|——建立表达式的方法:

String reg = "[1-9][0-9]{4,14}"; //直接使用string

//将正则表达式封装成对象

Pattern p = Pattern.compile("a*b");

Matcher m = p.matcher("aaaaab");

boolean b = m.matches();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: