草庐IT

Else-block

全部标签

Java 同步块(synchronized block)与 concurrentHashMap 与 Collections.synchronizedMap

假设如果有一个同步方法并且在该方法中,我会像这样更新一个hashmap:publicsynchronizedvoidmethod1(){myHashMap.clear();//populatethehashmap,takesabout5seconds.}现在当method1正在运行并且hashmap正在重新填充时,如果有其他线程试图获取hashmap的值,我假设它们会被阻止?现在不使用sync方法,如果我像下面这样将hashmap更改为ConcurrentHashMap,会有什么行为?publicvoidmethod1(){myConcurrentHashMap.clear();//p

java - 在 Java 中捕获 Scala 中抛出的异常 - 无法访问的 catch block

斯卡拉doesn'thave检查异常。但是,当从java调用scala代码时,最好捕获scala抛出的异常。斯卡拉:deff()={//dosomethingthatthrowsSomeException}Java:try{f()}catch(SomeExceptione){}javac不喜欢这样,并提示“这个异常永远不会从try语句体中抛出”有没有办法让scala声明它抛出一个已检查的异常? 最佳答案 使用throws注解:@throws(classOf[SomeException])deff()={//dosomethingth

java - 正则表达式中带有可选 block 的组编号

有没有办法让方括号中的表达式不被抓到一个组中?例如我有这样的表达:(A(B|C)?)D(E(F|G)?)注意可选block(B|C)?和(F|G)?需要括号。我对这些组中捕获的内容不感兴趣。我只想捕获完整的第一个和最后一个block。但是由于可选block,组编号会发生变化,我无法判断(E(F|G)?)是第2组还是第3组。我可以告诉表达式忽略结果组中的可选部分,以便组编号保持不变吗?或者我是否可以让可选的捕获始终出现在组中-即使它们为空? 最佳答案 (E(F|G)?)将始终被捕获为第3组。编号由模式字符串中左括号的顺序决定,即:(A

java - Java中finally block 的要点是什么?

我思考下面的例子;但无法弄清楚finallyblock的重要性是什么。你能告诉我这两个代码示例的执行差异吗?现实生活中的例子也会有所帮助。示例1:try{//somecode1}catch(Exceptionex){//printexception}finally{//somecode2}示例2:try{//somecode1}catch(Exceptionex){//printexception}//somecode2 最佳答案 您提供的两个片段有很大的不同,例如当catchblock本身抛出异常时,finallyblock仍将按

java - 为什么静态 block 中的代码不执行?

当我在main中打印constant时,staticblock不执行,但是当我打印stat,它确实执行了。Java中的staticfinal有什么重要性吗?packagecom.test.doubt;classDoubt{publicstaticfinalintconstant=123;publicstaticintstat=123;static{System.out.println("StaticBlock");}}publicclassMyProgram{publicstaticvoidmain(String[]args){System.out.println(Doubt.cons

java - 新的 ObjectInputStream() block

publicclassSerProg{staticServerSocketser=null;staticSocketcli=null;staticObjectInputStreamins=null;staticObjectOutputStreamouts=null;publicstaticvoidmain(String[]args){try{ser=newServerSocket(9000,10);cli=ser.accept();System.out.println("Connectedto:"+cli.getInetAddress().getHostAddress()+"AtPor

java - 当你有静态 block 时,为什么我们需要 main 方法

这个问题是问我认识的人的。我能想到的是main方法需要接受命令行参数作为方法参数。是否有任何其他论点来捍卫publicstaticvoidmain(Stringargs[])方法? 最佳答案 它可以测试一个主要方法它使得从其他类调用一个main方法成为可能它可以多次调用主方法,而类型初始化只发生一次它可以在不运行程序的情况下创建包含main方法的类的实例。在应用程序完成之前阻塞“主”类的类型初始化的想法是可恶的。我们可以应对吗?我敢说。但我怀疑我最终会写:publicclassEntryPoint{static{//Workarou

java - finally block 是否有可能不执行?

这个问题在这里已经有了答案:DoesafinallyblockalwaysgetexecutedinJava?(51个答案)关闭2年前。我们知道无论是抛出异常还是捕获并处理异常,finallyblock都会被执行,所以我很好奇finallyblock有没有可能不执行。如果System.exit()在try或catch中被调用,那么finally也会被调用吗?

java - Java 中许多 if-else 语句的性能不佳

我有一个方法可以使用32个if-else语句(想想真值表)来检查5个不同条件的所有组合。5个不同的字母代表方法,每个方法在字符串上运行自己的正则表达式,并返回一个boolean值,指示字符串是否与正则表达式匹配。例如:if(A,B,C,D,E){}elseif(A,B,C,D,!E){}elseif(A,B,C,!D,!E){}...etc,etc.但是,它确实影响了我的应用程序的性能(抱歉,我不能说太多细节)。谁能推荐一种更好的方法来处理这种逻辑?每个使用正则表达式的方法如下所示:Stringre1="regexhere";Patternp=Pattern.compile(re1,P

java - for 循环与 if-else 语句中的代码

我试图解决这个问题:https://leetcode.com/problems/longest-substring-without-repeating-characters/以下代码在44毫秒内通过了所有测试。for(inti=0;i=first){first=mp.get(s.charAt(i))+1;}mp.put(s.charAt(i),i);//max=Math.max(max,i-first+1);}max=Math.max(max,i-first+1);}但下面的代码只用了20毫秒就通过了所有测试。for(inti=0;i=first){first=mp.get(s.cha