叨叨两句
- 搞定~
牛客网——java专项练习037
1
Java中用正则表达式截取字符串中第一个出现的英文左括号之前的字符串。比如:北京市(海淀区)(朝阳区)(西城区),截取结果为:北京市。正则表达式为()
正确答案: A
- ".*?(?=\()"
- ".*?(?=()"
- ".*(?=\()"
- ".*(?=()"
http://www.cnblogs.com/xudong-bupt/p/3586889.html
1.什么是正则表达式的贪婪与非贪婪匹配
如:String str="abcaxc";
Patter p="ab*c";
贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配。如上面使用模式p匹配字符串str,结果就是匹配到:abcaxc(ab*c)。
非贪婪匹配:就是匹配到结果就好,就少的匹配字符。如上面使用模式p匹配字符串str,结果就是匹配到:abc(ab*c)。
2.编程中如何区分两种模式
默认是贪婪模式;在量词后面直接加上一个问号?就是非贪婪模式。
量词:{m,n}:m到n个
*:任意多个
+:一个到多个
?:0或一个
以上来自博主的博客,然后这道题目
.表示除\n之外的任意字符
*表示匹配0-无穷
+表示匹配1-无穷
(?=Expression) 顺序环视,(?=\\()就是匹配正括号
懒惰模式正则:
src=".*? (?=\\()) "
结果:北京市
因为匹配到第一个"就结束了一次匹配。不会继续向后匹配。因为他懒惰嘛。
2
下列不属于java语言鲁棒性特点的是
正确答案: B
- java能检查程序在编译和运行时的错误
- java能运行虚拟机实现跨平台
- java自己操纵内存减少了内存出错的可能性
- java还实现了真数组,避免了覆盖数据的可能
鲁棒性(Robust,即健壮性)
Java在编译和运行程序时,都要对可能出现的问题进行检查,以消除错误的产生。它提供自动垃圾收集来进行内存管理,防止程序员在管理内存时容易产生 的错误。通过集成的面向对象的例外处理机制,在编译时,Java揭示出可能出现但未被处理的例外,帮助程序员正确地进行选择以防止系统的崩溃。另外, Java在编译时还可捕获类型声明中的许多常见错误,防止动态运行时不匹配问题的出现。
感觉B选项虽然描述也对,但是,不应该把它归结于鲁棒性,B选项主要是体现Java的由于虚拟机,实现了一次编译,到处运行,跨平台性的特点。因此,我选B。
3
java中Hashtable, Vector, TreeSet, LinkedList哪些线程是安全的?
正确答案: A B 你的答案: B (错误)
- Hashtable
- Vector
- TreeSet
- LinkedList
线程安全概念:
如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。
线程安全问题都是由全局变量及静态变量引起的。
若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑线程同步,否则的话就可能影响线程安全。
LinkedList 和 ArrayList 都是不同步的,线程不安全;
Vector 和 Stack 都是同步的,线程安全;
Set是线程不安全的;
Hashtable的方法是同步的,线程安全;
HashMap的方法不是同步的,线程不安全;
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。