replace和replaceAll是JAVA中常用的替换字符的方法,它们的区别是:
1)replace的参数是char
和CharSequence
,即可以支持字符的替换,也支持字符串的替换(CharSequence即字符串序列的意思,说白了也就是字符串);
2)replaceAll的参数是regex
,即基于规则表达式的替换,比如,可以通过replaceAll("\d", "*")把一个字符串所有的数字字符都换成星号;
相同点是都是全部替换,即把源字符串中的某一字符或字符串全部换成指定的字符或字符串,如果只想替换第一次出现的,可以使用 replaceFirst(),这个方法也是基于规则表达式的替换,但与replaceAll()不同的是,只替换第一次出现的字符串。
另外,如果replaceAll()和replaceFirst()所用的参数据不是基于规则表达式的,则与replace()替换字符串的效果是一样的,即这两者也支持字符串的操作;
还有一点注意:执行了替换操作后,源字符串的内容是没有发生改变的。
举例如下:
String src = new String("ab43a2c43d");
System.out.println(src.replace("3","f"));=>ab4f2c4fd.
System.out.println(src.replace('3','f'));=>ab4f2c4fd.
System.out.println(src.replaceAll("\\d","f"));=>abffafcffd.
System.out.println(src.replaceAll("a","f"));=>fb43fc23d.
System.out.println(src.replaceFirst("\\d,"f"));=>abf32c43d
System.out.println(src.replaceFirst("4","h"));=>abh32c43d.```
如何将字符串中的"\"替换成"\\\":
```java
String msgIn;
String msgOut;
msgOut=msgIn.replaceAll("\\\\","\\\\\\\\");```
原因:
'\'在java中是一个转义字符,所以需要用两个代表一个。例如System.out.println( "\\\" ) ;只打印出一个"\"。但是'\'也是正则表达式中的转义字符(replaceAll 的参数就是正则表达式),需要用两个代表一个。所以:\\\\\\\被java转换成\\\,\\\又被正则表达式转换成 \ 。
将字符串中的'/'替换成'\'的几种方式:
msgOut= msgIn.replaceAll("/", "\\");
msgOut= msgIn.replace("/", "\");
msgOut= msgIn.replace('/', '\');```
java socket中的getinputstream和getoutputstream都有什么用?
java socket
中有两个流,
一个是输入流getinputstream,用于读取socket发送过来的数据,就是接收消息用的,
另一个是输出流getoutputstream,用于向socket端发送数据,就是发送消息用的.
java中flush()函数的作用是什么?
flush()意思是把缓冲区的内容强制的写出。 因为操作系统的某些机制,为了防止一直不停地磁盘读写,所以有了延迟写入的概念,(注意不要和frush()刷新混淆了)
主要用在IO中,即清空缓冲区数据,一般在读写流(stream)的时候,数据是先被读到了内存中,再把数据写到文件中,当你数据读完的时候不代表你的数据已经写完了,因为还有一部分有可能会留在内存这个缓冲区中。这时候如果你调用了close()方法关闭了读写流,那么这部分数据就会丢失,所以应该在关闭读写流之前先flush()。。
在网络web服务器上也是,为了防止写一个字节就发送一个消息,所以有缓冲区的概念,比如64K的内存区域,缓冲区写满了再一次性写入磁盘之中(或者发送给客户端浏览器)。
flush方法一般是程序写入完成时执行。随后跟着close方法。例如:
// 取得输出流。当然,看具体环境。
PrintWriter out = Util.getWriter();
out.println("输出一些信息,可能很多");
out.flush();
out.close();```
*******
####response.getStatusCode()
页面请求的状态值,分别有:200请求成功、303重定向、400请求错误、401未授权、403禁止访问、404文件未找到、500服务器错误。
*******
####java中如何在map中实现一对多的关系?
1、可以使用Map格式来达到一对多的关系
2、key值可以为一个整型数,作为一个类似ID主键来使用,value值可以用List集合来保存多条数据
3、这样就达到了一个key,对应多条记录。
Map
List
list.add("a");
list.add("b");
coll.put("1",list);
List
Map List 简易初始化
//初始化List
List list = new ArrayList(){{
add("string1");
add("string2");
//some other add() code......
add("stringN");
}};
//初始化Map
Map map = new HashMap(){{
put("key1", "value1");
put("key2", "jb51.net");
//.... some other put() code
put("keyN", "valueN");
}};```
更简单实例,利用Array与ArrayList的相互转换方法,代码如下:
ArrayList