以下代码按预期编译:
class A {
class B {}
class C extends B {}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我们有类B
扩展类A
,我们会收到编译错误:
class A {
class B extends A {}
class C extends B {} // <-- Error here
}
Run Code Online (Sandbox Code Playgroud)
No enclosing instance of type A is available due to some intermediate constructor invocation.
这里发生了什么?为什么扩展会A
改变什么?
编辑:显然,这在Java 7中编译得很好.我将理解为什么它不能在较旧的Java版本中编译以及Java 7中的更改以允许它.
也可以看看:
System.out.print("Please select a game: ");
for (String s : gamesArray) {
System.out.print(s + ", ");
}
Run Code Online (Sandbox Code Playgroud)
输出:
Please select a game: spin, tof, Press any key to exit...
我除外的输出:
Please select a game: spin, tof Press any key to exit...
为什么在最后一个数组项后添加另一个','?我该如何预防呢?
print 'a' in 'ab'
Run Code Online (Sandbox Code Playgroud)
打印True
,而
print 'a' in 'ab' == True
Run Code Online (Sandbox Code Playgroud)
打印False
.
有什么猜?
我在使用该map
功能时遇到了麻烦。当我要打印创建的列表时,解释器显示指针:
>>> squares = map(lambda x: x**2, range(10))
>>> print(squares)
<map object at 0x0000000002A086A0>
Run Code Online (Sandbox Code Playgroud)
问题是什么?
考虑网址是
http://www.google.com/a/b/myendpoint
我想要的只是以下内容
http://www.google.com/a/b/
一种方法是拆分String url并加入除最后一个组件之外的所有组件.
我在想是否有更好的方法?
我读了接口Map的JavaDoc,它说:
Collections Framework接口中的许多方法都是根据equals方法定义的.例如,对于规范
containsKey(Object key)
法说:"返回true当且仅当此映射包含一个键的映射关系k
,使得(key==null ? k==null : key.equals(k))
".不应将此规范解释为暗示Map.containsKey
使用非null
参数调用key
将导致key.equals(k)
对任何键调用k
.实现可以自由地实现优化,从而equals
避免调用,例如,通过首先比较两个密钥的哈希码.(该Object.hashCode()
规范保证具有不等哈希码的两个对象不能相等.)
我的理解是在containsKey()
调用时,都会调用hashCode()和equals(),因此我编写了自己的代码来测试它.
HappyDay类将作为键存储在HashMap中,我重写hashCode()和equals()方法,并添加System.out.println("invoking hashCode()" + this.happyHour);
并System.out.println("invoking equals()");
检查方法是否被调用.
public class HappyDay {
private final int happyHour;
public HappyDay(int hh) {
this.happyHour = hh;
}
public int getHappyHour() {
return this.happyHour;
}
@Override
public boolean equals(Object o) {
System.out.println("invoking equals()");
if (o == null) {return false;}
if (o == …
Run Code Online (Sandbox Code Playgroud) 假设你有一个这样的字符串:"(hello) (yes) (yo diddly)"
.
你想要一个这样的列表: ["hello", "yes", "yo diddly"]
你会如何用Python做到这一点?
请考虑以下代码:
6. Set<Integer> set = new HashSet<Integer>();
7. Integer i1 = 45;
8. Integer i2 = 46;
9. set.add(i1);
10. set.add(i1);
11. set.add(i2); System.out.print(set.size() + " ");
12. set.remove(i1); System.out.print(set.size() + " ");
13. i2 = 47;
14. set.remove(i2); System.out.print(set.size() + " ");
15. System.out.println(set.contains(i2));
Run Code Online (Sandbox Code Playgroud)
代码输出:
2 1 1 false
在第14行之后我假设尺寸会是,0
但确实如此1
.我想i2
在第13行将一个新对象添加到集合中,所以我在第15行测试了它,但它返回false
(即i2
集合中没有),为什么会这样?
我有这个代码:
while (x < 10.0) {
x += y;
}
Run Code Online (Sandbox Code Playgroud)
如果x
和y
是浮点数,显然如果你添加它们,循环将无限继续.我不明白它怎么会通过10.似乎不可能不通过十,但它不是根据我的教科书.
这是为什么?是因为浮点数会发生舍入吗?或者我错过了什么?
编辑:顺便说一句x
,y
是严格积极的