------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
配置文件可以实现应用程序数据的共享。
键盘 System.in,控制台 System.out,硬盘FileStream,内存 ArrayStream。
编码:字符串变成字节数组。
解码:字节数组变成字符串。
RandomAccessFile该类不是IO子类。它是IO包中成员。因为它具备读和写功能。
内部封装了一个数组,而且通过指针对数组的元素进行操作。
getFilePointer获取指针位置。
seek改变指针的位置。
skipBytes(8);跳过指定的字节数
如果模式为只读 r。不会创建文件。会去读取一个已存在文件,如果该文件不存在,
则会出现异常。
如果模式rw。操作的文件不存在,会自动创建。如果存则不会覆盖。
AWT
Frame f =new Frame("my awt");
f.setSize(500,400);设置大小
f.setLocation(300,200);设置位置
f.setBounds(300,100,650,600);设置大小及位置
f.setLayout(newFlowLayout());设置布局
Button b =new Button("我是一个按钮");
f.add(b);添加按钮
f.setVisible(true);设置可见
监听机制:XXX代表Window,Key,Mouse;
监听对象.addXXXListener(newXXXAdaper(){
public void方法(XXXEvent e){}
});
活动监听
对象.addActionListener(newActionListener(){
publicvoid actionPerformed(ActionEvent e){}
});
Menu下拉式菜单
MenuItem菜单
MenuBar()菜单栏
功能少的类应该是功能多的类的父类
new FileDialog(f,"我要打开",FileDialog.LOAD);打开文件对话框
new FileDialog(f,"我要保存",FileDialog.SAVE);保存文件对话框
如何制作可以双击执行的jar包呢?
1,将多个类封装到了一个包(package)中。
2,定义一个jar包的配置信息。
定义一个文件a.txt 。文件内容内容为:
Main-Class:(空格)包名.类名(回车)
3,打jar包。
jar -cvfmmy.jar a.txt 包名
4,通过winrar程序进行验证,查看该jar的配置文件中是否有自定义的配置信息。
5,通过工具--文件夹选项--文件类型--jar类型文件,通过高级,定义该jar类型文件的打开动作的关联程序。
jdk\bin\javaw.exe-jar
6,双击试试!。哦了。
传输用的是字节!
Tcp
Socket客户端和ServerSocket服务端:客户端指定ip和端口,服务端指定端口。
服务端通过accept和客户端相关联。通过Socket对象.getXXX获取XXX流。
.shutdownOutput();关闭客户端的输出流//告诉服务端数据已写完
.getInetAddress().getHostAddress();获取ip
UDP
DatagramSocket接受和发送数据,接收时指定端口。
DatagramPacket(byte[] buf,intlength,SocketAddress)数据包,发送时指定端口
send发送(数据包);receive接收(数据包)
PrintWriter out = newPrintWriter(s.getOutputStream(),true); 带自动刷新
BufferedWriter bufOut =
newBufferedWriter(new OutputStreamWriter(s.getOutputStream()));
前者比后者更优化,后者还得自动刷新。
URL url = newURL("http://192.168.1.254:8080/myweb/demo.html");
URLConnection conn = url.openConnection();
InputStream in = conn.getInputStream();
.getFile() 获取此 URL 的文件名。
.getHost() 取此 URL 的主机名(如果适用)。
.getPath() 获取此 URL 的路径部分。
.getPort() 获取此 URL 的端口号。
.getProtocol() 获取此 URL 的协议名称。
.getQuery() 获取此 URL 的查询部
正则表达式:用于专门操作字符串。
1,匹配:.matches方法。判断字符是对是错。
2,切割:.split();一字符串到多字符串。
3,替换:.replaceAll(regex,str);如果regex中有定义组,可以在第二参数中通过$符号
获取正则表达式中的已有的组。一字符串变成另一字符串!
[]表示:里面其中元素之一
//d表示:数字
表示:单词边界 |
{数字}表示:多少个
(.)\\1+表示:任意重复元素
.replaceAll(“(.)\\1+”,”$1”);将叠词去掉。
4,获取:将字符串中的符合规则的子串取出。取子串!
//将规则封装成对象。
Pattern p = Pattern.compile(reg);
//让正则对象和要作用的字符串相关联。获取匹配器对象。
Matcher m =p.matcher(str);
boolean b = m.find();//将规则作用到字符串上,并进行符合规则的子串查找。
System.out.println(m.group());//用于获取匹配后结果。
ip地址进行地址段顺序的排序
ip = ip.replaceAll("(\\d+)","00$1");
ip = ip.replaceAll("0*(\\d{3})","$1");
String[] arr = ip.split(" ");
TreeSet<String> ts = new TreeSet<String>();
for(String s : arr)
{
ts.add(s);
}
for(String s : ts)
{
System.out.println(s.replaceAll("0*(\\d+)","$1"));
}