【298天】我爱刷题系列057(2017.11.30)

叨叨两句

  1. 搞定~

牛客网——java专项练习037

1

Java中用正则表达式截取字符串中第一个出现的英文左括号以前的字符串。好比:北京市(海淀区)(朝阳区)(西城区),截取结果为:北京市。正则表达式为()
正确答案: Ahtml

  1. ".*?(?=\()"
  2. ".*?(?=()"
  3. ".*(?=\()"
  4. ".*(?=()"
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语言鲁棒性特色的是
正确答案: Bjava

  1. java能检查程序在编译和运行时的错误
  2. java能运行虚拟机实现跨平台
  3. java本身操纵内存减小了内存出错的可能性
  4. java还实现了真数组,避免了覆盖数据的可能
鲁棒性(Robust,即健壮性)
Java在编译和运行程序时,都要对可能出现的问题进行检查,以消除错误的产生。它提供自动垃圾收集来进行内存管理,防止程序员在管理内存时容易产生 的错误。经过集成的面向对象的例外处理机制,在编译时,Java揭示出可能出现但未被处理的例外,帮助程序员正确地进行选择以防止系统的崩溃。另外, Java在编译时还可捕获类型声明中的许多常见错误,防止动态运行时不匹配问题的出现。
感受B选项虽然描述也对,可是,不该该把它归结于鲁棒性,B选项主要是体现Java的因为虚拟机,实现了一次编译,处处运行,跨平台性的特色。所以,我选B。

3

java中Hashtable, Vector, TreeSet, LinkedList哪些线程是安全的?
正确答案: A B 你的答案: B (错误)程序员

  1. Hashtable
  2. Vector
  3. TreeSet
  4. LinkedList

线程安全概念:
若是你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。若是每次运行结果和单线程运行的结果是同样的,并且其余的变量的值也和预期的是同样的,就是线程安全的。正则表达式

线程安全问题都是由全局变量及静态变量引发的。编程

若每一个线程中对全局变量、静态变量只有读操做,而无写操做,通常来讲,这个全局变量是线程安全的;如有多个线程同时执行写操做,通常都须要考虑线程同步,不然的话就可能影响线程安全。数组

LinkedList 和 ArrayList 都是不一样步的,线程不安全;
Vector 和 Stack 都是同步的,线程安全;
Set是线程不安全的;安全

Hashtable的方法是同步的,线程安全;
HashMap的方法不是同步的,线程不安全;spa