今天在大学时我们谈了一些try,catch并且finally.我对这两个例子感到困惑:
PrintWriter out = null;
try {
out = new PrintWriter(...); // We open file here
} catch (Exception e) {
e.printStackTrace();
} finally { // And we close it here
out.close();
}
Run Code Online (Sandbox Code Playgroud)
关闭文件finally和我们只是这样做有什么区别:
PrintWriter out = null;
try {
out = new PrintWriter(...); // We open file here
} catch (Exception e) {
e.printStackTrace();
}
out.close();
Run Code Online (Sandbox Code Playgroud)
catch之后的这段代码将始终执行.
你能给我一些很好的例子来说明我们何时使用finally以及何时将代码放入catch之后的差异?我知道最终将永远执行,但程序也会在catch块之后继续运行.
我有一个Map<String, String>和一个List<String>.我想Map根据条件进行分区
foreach(map.key -> list.contains(map.key))
Run Code Online (Sandbox Code Playgroud)
并产生两个Map.最优雅的方式是什么?我在Java 11上,所以你可以在答案中抛出你想要的一切.
我现在要做的是:
map.entrySet()
.stream()
.collect(partitioningBy(e -> list.contains(o.getKey())));
Run Code Online (Sandbox Code Playgroud)
但这给了一个Map<Boolean, List<Entry<String, String>>>.
我期望下面的代码将输出,10因为它(~port)等于10100101
So,当我们右移它时,4得到的00001010是10。但是输出是250!为什么?
int main()
{
uint8_t port = 0x5a;
uint8_t result_8 = (~port) >> 4;
//result_8 = result_8 >> 4;
printf("%i", result_8);
return 0;
}
Run Code Online (Sandbox Code Playgroud) 一般来说IEnumerable<>,当我传入参数时,我倾向于使用作为类型。然而,根据 BenchmarkDotNet:
[Benchmark]
public void EnumeratingCollectionsBad()
{
var list = new List<string>();
for (int i = 0; i < 1000; i++)
{
Bad(list);
}
}
[Benchmark]
public void EnumeratingCollectionsFixed()
{
var list = new List<string>();
for (int i = 0; i < 1000; i++)
{
Fixed(list);
}
}
private static void Bad(IEnumerable<string> list)
{
foreach (var item in list)
{
}
}
private static void Fixed(List<string> list)
{
foreach (var item in list)
{
}
}
Run Code Online (Sandbox Code Playgroud)
| 方法 | 工作 … |
|---|
我有一个变量s,其中包含一个字母的字符串
s = 'a'
Run Code Online (Sandbox Code Playgroud)
根据该变量的值,我想返回不同的东西.到目前为止,我正在做一些事情:
if s == 'a' or s == 'b':
return 1
elif s == 'c' or s == 'd':
return 2
else:
return 3
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来写这个?一个更Pythonic的方式?或者这是最有效的?
以前,我错误地有这样的事情:
if s == 'a' or 'b':
...
Run Code Online (Sandbox Code Playgroud)
显然这不起作用,对我来说相当愚蠢.
我知道条件赋值并试过这个:
return 1 if s == 'a' or s == 'b' ...
Run Code Online (Sandbox Code Playgroud)
我想我的问题是专门有一种方法可以将变量与两个值进行比较,而无需键入 something == something or something == something
我知道
all(map(compare,new_subjects.values()))==True
Run Code Online (Sandbox Code Playgroud)
会告诉我列表中的每个元素是否为True.但是,如何判断除其中一个元素之外的每个元素是否为True?
我实现了自己在接口中定义的方法.但是,当我尝试将Javadoc添加到此方法时,Eclipse给了我这样的注释:
/* (non-Javadoc)
* @see javax.servlet.ServletContextListener#contextInitialized(javax.servlet.ServletContextEvent)
*/
Run Code Online (Sandbox Code Playgroud)
实际上,我真的需要为这个方法添加一些注释.我该怎么办?
如何转换OrderedDict
OrderedDict([(73, 'Mocha My Day'), (77, 'Coffee Cafe'), (83, 'Flavour Fusion'), (85, 'Mexican Grill')])
Run Code Online (Sandbox Code Playgroud)
列表?
[(73, 'Mocha My Day'), (77, 'Coffee Cafe'), (83, 'Flavour Fusion'), (85, 'Mexican Grill')]
Run Code Online (Sandbox Code Playgroud)
谢谢!!
我想在我的C++游戏引擎中实现一个继承层次结构,它与Java有一些类比:
Object类,这只是一个类比,给了我一些好处(不是严格的1:1 Java:C++映射,这是不可能的).
通过"接口",我的意思是这里只有纯虚拟公共方法的类.我知道这不是一个严格而准确的定义.
所以我做了:
class Object{...};
/* interfaces */
class Nameable : public Object{...};
class Moveable : public Object{...};
class Moveable3D : public Moveable{...};
class Moveable2D : public Moveable{...};
class Model3D : public Moveable3D, public Nameable{...}
class Line3D : public Moveable3D{...}
class Level: public Nameable{...}
class PathSolver : public Object{...}
Run Code Online (Sandbox Code Playgroud)
如您所见,Model3D现在Object通过多种方式继承:
Moveable3D -> Moveable -> Object,Nameable -> Object.我在VS2013(VC++)中的编译器警告我.
这是一个问题吗?
如果是这样,如何解决它以获得更好的继承结构? …
考虑:
String s1 = new StringBuilder("Cattie").append(" & Doggie").toString();
System.out.println(s1.intern() == s1); // true why?
System.out.println(s1 == "Cattie & Doggie"); // true another why?
String s2 = new StringBuilder("ja").append("va").toString();
System.out.println(s2.intern() == s2); // false
String s3 = new String("Cattie & Doggie");
System.out.println(s3.intern() == s3); // false
System.out.println(s3 == "Cattie & Doggie"); // false
Run Code Online (Sandbox Code Playgroud)
我糊涂了,为什么它们是由不同产生的返回值的String.intern()其中说:
调用intern方法时,如果池已经包含等于equals(Object)方法确定的此String对象的字符串,则返回池中的字符串。否则,将此String对象添加到池中,并返回对此String对象的引用。
特别是经过以下两个测试:
assertFalse("new String() should create a new instance", new String("jav") == "jav");
assertFalse("new StringBuilder() should create a new instance",
new StringBuilder("jav").toString() == …Run Code Online (Sandbox Code Playgroud) java ×4
python ×3
benchmarking ×1
c ×1
c# ×1
c++ ×1
exception ×1
finally ×1
ienumerable ×1
inheritance ×1
java-stream ×1
javadoc ×1
performance ×1
try-catch ×1