对于以下Ocean
课程,
public class Ocean {
/**
* Define any variables associated with an Ocean object here. These
* variables MUST be private.
*/
// width of an Ocean
private final int width;
// height of an Ocean
private final int height;
class Critter {
/**
* Defines a location of a Critter in an Ocean.
*/
Point location;
public Critter(int x, int y) {
location = new Point(x,y);
}
public Point getLocation() {
return location;
}
}
private …
Run Code Online (Sandbox Code Playgroud) 这个概念与a class
和它的实例的概念相矛盾.
下面的程序对我来说很好,NullPointerException
并按预期给出:
class SuperClass{
int x = 2;
}
class SubClass extends SuperClass{
int x = 4;
}
public class Dummy2 {
public static void main(String[] args){
SubClass obj1 = new SubClass();
SuperClass obj2 = null;
System.out.println(obj1.x);
System.out.println(obj2.x);
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我SuperClass obj2 = obj1;
奇怪地说 我看到SuperClass
实例成员值的值时2
,尽管class SuperClass
在上面的程序中没有创建实例.
这是Java中的有效概念吗?
关于下面提到的3份合同:
1)每当
hashCode()
在执行应用程序期间多次在同一对象上调用时,该hashCode
方法必须始终返回相同的整数,前提是不修改在对象的等比较中使用的信息.从应用程序的一次执行到同一应用程序的另一次执行,该整数不需要保持一致.
从这个陈述中,我理解,在单个执行应用程序时,如果hashCode()
在同一个对象上使用一次或多次,它应该返回相同的值.
2)如果两个对象根据
equals(Object)
方法相等,则hashCode()
在两个对象中的每一个上调用方法必须产生相同的整数结果.
从这个陈述中,我理解,要在子类中执行相等操作(在宽范围内),至少有四种不同的相等程度.
(a)引用相等(==),比较两个引用类型对象的内部地址.
(b)浅层结构平等:如果所有字段均为==,则两个对象为"等于".{例如,两个SingleLinkedList
"大小"字段相等且"头部"字段指向相同的字段SListNode
.}
(c)深层结构平等:如果所有字段都是"等于",则两个对象"等于".{例如,两个SingleLinkedList
代表相同序列的"项目"(尽管SListNodes
可能不同).}
(d)逻辑平等.{两个例子:(a)如果两个"Set"对象包含相同的元素,则它们是"equals",即使基础列表以不同的顺序存储元素.(b)分数1/3和2/6是"等于",即使它们的分子和分母都不同.}
基于以上四类相等,第二个契约只能保持良好:如果(Say)equals()
方法基于两个对象之间的logical_equality返回真值,那么hashCode()
方法还必须在计算中考虑逻辑_equality,然后为每个新对象生成整数,而不是考虑内部地址一个新的对象.
但我在理解这第三份合同时遇到了问题.
3)根据
equals(Object)
方法,如果两个对象不相等,则不需要hashCode()
在两个对象中的每一个上调用方法必须产生不同的整数结果.但是,程序员应该知道为不等对象生成不同的整数结果可能会提高哈希表的性能.
在第二个合同中,正如我们所说的那样hashCode()
方法应该相应[例如:考虑生成整数之前的logical_equality]实现,我觉得,如果两个对象根据then 方法不相等可能会产生相同的整数结果,这是不正确的如第三份合同中所述?根据第二个合同中的参数,必须产生不同的整数结果.一个只是写在被打破第二份合同!equals(Object)
hashCode()
hashCode()
return 42
hashCode()
请帮我理解这一点!
在下面的代码中,
<head>
<meta charset="UTF-8">
<title>JSON ex</title>
<script type = "text/javascript"
src = "http://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js">
</script>
<script type="text/javascript" language = "javascript">
var accountGrid = [];
$(document).ready(function(){
$.getJSON('result.json', function(entry){
accountGrid.push({
name: entry.name,
marketValue: entry.marketValue,
cash: entry.cash,
legend: entry.legend
});
});
});
</script>
</head>
<body>
</body>
Run Code Online (Sandbox Code Playgroud)
result.json
{
'name': 'Account1',
'marketValue': '10990',
'cash': '199926',
'legend': 'orange'
},
{
'name': 'Account2',
'marketValue': '156590',
'cash': '133856',
'legend': 'darkorange'
}
Run Code Online (Sandbox Code Playgroud)
我看到JSON not well formed
错误.result.json
坐在同一个文件夹中.
由于此错误,请为accountGrid
空.
not well formed
在执行时说错误是什么意思jQuery.getJSON
?
以下是三个文件,
/* HANDLERS.H */
#define TRUE 1
#define FALSE 0
/* Functions declarations - included in both UI.C & tiffhandler.c */
int canHandle(char *);
int drawImage(char *);
int saveFile(char *);
Run Code Online (Sandbox Code Playgroud)
/* tiffhandler.c */
#include "HANDLERS.H"
int canHandle(char *fileName){
return TRUE;
}
int drawImage(char *fileName){
return TRUE;
}
int saveFile(char *fileName){
return TRUE;
}
Run Code Online (Sandbox Code Playgroud)
/* UI.C */
#include "HANDLERS.H"
int main(void){
}
Run Code Online (Sandbox Code Playgroud)
编译为,
> gcc HANDLERS.H tiffhandler.c UI.C
我的问题,
HANDLERS.H
包含在UI.C
&tiffhandler.c
.因此,函数声明包含在两者中.
在链接阶段,在tiffhandler.o
&UI.o
链接之前,为什么链接器不会抱怨,通过说,每个函数的多个函数声明(比如说canHandle …
在GO中,我了解到,
1)
程序员只能将命名类型(
X
)或指针(*X
)的方法定义为命名类型2)
类型明确的方法定义
X
隐含定义了相同的方法类型*X
和反之亦然,所以,我的理解是,如果我宣布,Run Code Online (Sandbox Code Playgroud)func (c Cat) foo(){ //do stuff_ }
并宣布,
Run Code Online (Sandbox Code Playgroud)func (c *Cat) foo(){ // do stuff_ }
然后GO编译器给出,
Compile error: method re-declared
这表明,指针方法是隐式定义的,反之亦然
使用给定的命名类型(
Cat
),Run Code Online (Sandbox Code Playgroud)type Cat struct{ Name string Age int Children []Cat Mother *Cat }
场景1
方法(
foo
)Cat
由程序员在命名类型()上定义,Run Code Online (Sandbox Code Playgroud)func (c Cat) foo(){ // do stuff.... }
通过GO编译器隐式地将
foo
指针*Cat
类型的指针()定义为命名类型,看起来像,Run Code Online (Sandbox Code Playgroud)func (c *Cat) foo(){ // do stuff.... } …
下面的代码有auto
函数指针的参数(带说明符),
void g( bool(*fptr)(const auto) ){
//
}
bool f(const int a){
//
}
int main(int argc, char *argv[])
{
g(&f); // Error
}
Run Code Online (Sandbox Code Playgroud)
工作良好.
有了这段代码,
bool k(const auto); // Compiler accepts declaration with auto specifier
auto h(auto& output, const auto& value) // Compiler accepts definition with auto specifier
{
// output << value << "\n";
}
typedef bool(*fptr)(const auto); // Error
void g( fptr f ){
//
}
bool f(const int a){
//
}
int main(int argc, …
Run Code Online (Sandbox Code Playgroud) 每当我创建一个新的亚马逊EC2实例(linux或windows)时,除了公共IP之外,还会分配给它的私有IP。
我们使用公共 IP 来访问该实例上的资源。tomcat等资源...
为该实例提供的私有 IP 的确切目的是什么?
linux ipv4 amazon-ec2 amazon-web-services aws-security-group
在下面的代码中:
package main
import "fmt"
func main() {
for i := 0; i <= 9; i++ {
go func() {
fmt.Println(i)
}()
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
code$
code$ go install github.com/myhub/cs61a
code$ bin/cs61a
code$
Run Code Online (Sandbox Code Playgroud)
以上程序不提供任何输出。
1)他们是否i
在 10 个 go-routines 之间进行单一内存位置的数据竞争?
2)为什么上面的代码不打印自由变量的值i
?
在下面的main()
代码中:
package main
import (
"fmt"
"github.com/myhub/cs61a/poetry"
)
func main() {
p := poetry.NewPoem([][]string{
{
"And from my pillow, looking forth by light",
"Of moon or favoring stars, I could behold",
"The antechapel where the statue stood",
"Of Newton, with his prism and silent face,",
"The marble index of a mind forever",
"Voyaging through strange seas of thought, alone.",
},
{
"inducted into Greek and Christian",
"modes of thinking, must take a longer way around.",
"Like children born …
Run Code Online (Sandbox Code Playgroud)