Net包,对于网络连接
Awt包
swing包
几种网络:E,D为保留网络
V4
W,x,y,z
A:w从0~126 W代表网络,剩余代表本机
B:128~191 w,x代表网络,剩余代表本机
C:192~223 w,x,y代表网络,z代表本机
应用程序需要一个或多个端口和外接连通
80http协议端口
8080tomcat
1521oracle
3306mysql
1433sqlserver
4000~5000安全
Net包支持tcp和udp协议
Tcp套接字
serverSocket
Sockect
传出内容
字符 文本文件 支持中文
字节 传文件
服务器端
1.
如果端口号已用,报异常
2.
3.
建立管道
4.b.realine();读取
5.发送建立管道反馈。PrintStream p = new PrintStream(so.getOutPutStream());
P.println();不要用print,另一端要读取
6.关闭端口及流
客户端
1.
Socket so = (服务器IP字符串,服务器端口号);默认用与服务器相同端口号。
如果访问正常,继续。否则报异常。
2. 发送建立管道PrintStream p = new PrintStream(so.getOutPutStream());
P.println();不要用print
3. 接受信息BufferedReader b = new BufferedReader(new InputStreamReader(so.getInputStream));建立管道。
b.realine();读取
4.关闭端口及流
Netstat –a –n查看端口
传送文件(现在这种方式不流行了)
用Socket
一个服务器,一个客户端
建立连接
1.
2.
3.
4.
5.
6.
7.
do.write(b,0,i);
I = df.read(b);
}
8.
9.
10.
11.
12.
13.
14.
15.
df.write(b,0,i);
I = di.read(b);
}
对各种流的总结:
字符流
输入根类reader
输出根类writer
输入
低级流IntputStreamReader
高级流BufferedReader
文件
低级流
高级流
输出
低级流
高级流
网络
输出
PrintStream p = new PrintStream(so.getOutputStream());
BufferedReader b = new BufferedReader(new InputStreamReader(so.getInputStream()));
控制台
输入
BufferedReader b = new BufferedReader(new InputStreamReader(System.in));
输出
System.out.println("服务器端说: " + value);
字节流
输入根类InputStream
输出根类OutputStream
文件
二进制 DataInputStream
输出
二进制 DataOutputStream
网络
输出
低级流
BufferedOutputStream bo = new BufferedOutputStream(so.getOutputStream());
高级流
DataOutputStream dd = new DataOutputStream(bo);
输入
低级流
BufferedInputStream b = new BufferedInputStream(so.getInputStream());
高级流
DataInputStream d = new DataInputStream(b);
线程 每个线程完成应用程序的一个功能
Thread t = Thread.currentThread();//该方法用来获取系统的当前线程。Thread类是线程的父类
Thread [main,5,main]
1.
2.
3.
两种方法创建子线程
1.
2.
T.start();
Start()方法自动调用run()方法,run方法结束后死亡,run不允许向上抛异常
创建 就绪 启动 运行
Sleep(毫秒);//捕获异常
线程
创建 就绪启动(调用start方法,start自动调用run方法) 运行结束
运行的四种情况
1.
2.
3.
4.
Notify();//解
这两种方法必须是同步的。
同步,线程安全。
同步:当一个对象调用同步方法时,第一个方法没执行完,第二个方法不会启动。
同步方法:被关键字synchronized修饰
Synchronized(对象){}同步块。里面的对象调用的方法全部同步。
Wait();谁调用就挂谁
Notify();挂过谁就解谁
不要把线程类和实体类并在一起。
public class one extends Thread {
。。。}
每个实体类需要多个run方法。
Java线程优先级。
有10级
10~1
10最高,1最低
垃圾回收线程为1;
默认为5.
操作系统的优先级有6级。1和6是不给java用的。
Java的优先级映射到操作系统
1,2一级,3,4一级,5单个一级,6,7,8,9,10一级。这是对应的xp系统。
Thread t1 = new One();//自定义类one继承自Thread,父类声明子类实例化
One类覆盖了Thread类的run方法
T1.GetPriority();获取优先级
SetPriority(int);设置优先级
优先级设高了报异常
精灵线程(守护线程)
主线程结束后,精灵线程还会运行
垃圾回收就是精灵线程
T1.isDaemon()判断是否精灵线程
T1.setDaemon(true)设置为精灵线程
实现runnable的类,而不是继承Thread的类,的启动方法
Class One implements Runnable{
}
One o = new One();
Thread t1 = new Thread(o);//不能像之前那样实例化了
Ti。Start();
GUI图形界面
AWT重量级
包含窗体frame
控件
布局管理器
事件
Swing轻量级,扩展包
窗体
控件
用swing的窗体和控件
用awt的布局和事件
AWT的窗口
Frame. f = new Frame();
F.setVisible(true);//显示
SetSize(宽,高(单位像素));设置大小
SetLocation(x,y);初始位置
SetTitle(String);设置标题
SetResizable(true);设置是否可以改变
自己建一个窗体类
Class MyFrame. extends Frame
控件设为属性
窗体设置放在构造方法中
控件有:
按钮Button
This。Add(b);
文本框 文本域 下拉菜单 单选 多选 标签
布局
默认为覆盖
先设置布局,后添加控件
FlowLayout f = new FlowLayout();
This.setLayout(f);
或者This.setLayout(new FlowLayout());
三种常用布局
1.
默认以居中对齐添加,控件大小以字符为标准
2.
BorderLayout
可以指定添加的位置
Add(bn,BorderLayout.NORTH);
Add(bc,BorderLayout.CENTRE);
3.
GridLayout
分为表格
如果建的多于表格数,行保持不变,列增加
Button b[] = new Button[12];只是声明了,并没有实例
4.
Panel p = new Panel();看不见的容器
P.setLayout(new GridLayout());
文本框
TestField t = new TestField();
TestField t = new TestField(显示的字符数);
T.setColumns(显示的字符数);
SetEchoChar(‘*’)设置显示的字符,此处为输密码时使用
setEditable(false)是否可编辑
setTest(“”)
getTest()
GUI
AWT
窗体
控件
布局
网格GridLayout
事件
TextField
Button
Label
CheckBox//多选
CheckBoxGroup//单选按钮组
CheckBox(“”,g,true)//添加单选按钮(名称,所属按钮组,是否被选中)
CheckboxGroup g = new CheckboxGroup();/
Checkbox r1 = new Checkbox("男",g,true);
Checkbox r2 = new Checkbox("女",g,true);
如果有多个设置被选中,则后面的替换前面的,此例中r2被选中
Choice
c.add(“辽宁”);//第一个默认
一般第一个都是“请选择”,防止懒人不选
TextArea(行数,列数)
事件类implements接口{
}
}
1.
2.
做成一个private修饰的内部类,因为他可以使用原类的属性
或者原类直接implements接口,以后将自己添加进去就可以。
可以为一个控件添加多个事件
单击事件ActionListener
Button b = new Button("ok");
b.addActionListener(d);
ActionPerformed(ActionEvent a)
有两个以上控件同时使用该事件,触发不同的方法
第一种方法:使用参数a处理,其中也有两种方法。
1.
比较字符确定点了那个按钮,只适用于按钮
2.
比较对象是否相等
鼠标事件(5个方法)MouseListener
Button bg = new Button("绿色");
bg.addMouseListener(sg);
有两个以上控件同时使用该事件,触发不同的方法
第二种方法:为每个控件添加不同的事件对象
sbsj sg = new sbsj(Color.GREEN);
sbsj sr = new sbsj(Color.RED);
bg.addMouseListener(sg);
br.addMouseListener(sr);
窗体事件(七个方法)WindowListener
this.addWindowListener(c);
WindowClosing()//点关闭按钮时调用
WindowDeactivated()//不活动时
关闭窗体程序不退setVisibale()
关闭则system。Exit(0);
键盘事件KeyListener
TextField t = new TextField(20);
t.addKeyListener(j);
下拉列表事件ItemListener
Choice c = new Choice();
c.addItemListener(x);
文本框改变事件TextListener
TextField t
t.addTextListener(w);
textValueChanged//内容改变时
焦点事件FocusListener
TextField tu = new TextField(26);
tu.addFocusListener(j);
//弹出对话框(从本对象弹出,提示内容,提示框标题,符号—比如3是问号)