Java官方文档指出:
"boo:and:foo"例如,字符串使用这些表达式生成以下结果Regex结果:
{ "boo", "and", "foo" }"
Run Code Online (Sandbox Code Playgroud)
这就是我需要它工作的方式.但是,如果我运行这个:
public static void main(String[] args){
String test = "A|B|C||D";
String[] result = test.split("|");
for(String s : result){
System.out.println(">"+s+"<");
}
}
Run Code Online (Sandbox Code Playgroud)
它打印:
><
>A<
>|<
>B<
>|<
>C<
>|<
>|<
>D<
Run Code Online (Sandbox Code Playgroud)
这远非我所期望的:
>A<
>B<
>C<
><
>D<
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
我总是用Java编程,这可能就是为什么我对此很困惑:
在Java中我声明了一个指针:
int[] array
Run Code Online (Sandbox Code Playgroud)
并初始化它或为其分配一些内存:
int[] array = {0,1,0}
int[] array = new int[3]
Run Code Online (Sandbox Code Playgroud)
现在,在C中,这一切都让人感到困惑.起初我以为它就像宣布它一样容易:
int array[]
Run Code Online (Sandbox Code Playgroud)
并初始化它或为其分配一些内存:
int array[] = {0,1,0}
int array[] = malloc(3*sizeof(int))
int array[] = calloc(3,sizeof(int))
Run Code Online (Sandbox Code Playgroud)
除非我错了,以上所有内容都等同于Java-C,对吗?
然后,今天我遇到了一个代码,其中我发现了以下内容:
pthread_t tid[MAX_OPS];
Run Code Online (Sandbox Code Playgroud)
以及下面的一些行,没有任何初始化......
pthread_create(&tid[0],NULL,mou_usuari,(void *) 0);
Run Code Online (Sandbox Code Playgroud)
令人惊讶的是(至少对我而言)代码有效!至少在Java中,会返回一个很好的"NullPointerException"!
所以,按顺序:
我是否正确使用所有Java-C"翻译"?
为什么该代码有效?
使用malloc(n*sizeof(int))和之间有什么区别calloc(n,sizeof(int))吗?
提前致谢
我从来没有使用过"throws"子句,今天一个配偶告诉我,我必须在方法声明中指定方法可能抛出的异常.但是,如果不这样做,我一直在使用异常而没有问题,所以,如果事实上它需要它,为什么还需要呢?
我有这样的代码
int a,b;
switch(whatever){
case 1:
lots_of_lines_dealing_with_variable_a;
case 2:
same_lines_but_dealing_with_variable_b;
}
Run Code Online (Sandbox Code Playgroud)
我想到了:
int a,b;
pointer_to_int p;
switch(whatever){
case 1:
p=a;
case 2:
p=b;
}
lots_of_lines_dealing_with_pointer_p;
Run Code Online (Sandbox Code Playgroud)
它会将代码减少到大约一半的行,但Java不允许指向整数.那么,有什么方法可以解决这个问题吗?
编辑:作业比这个方法大得多.我需要创建一个名为"DoubleList"的类,它在一个Vector中包含两个链接列表.我所谈到的整数是指向列表开头的指针,在向列表中添加或删除元素时,我需要将其移动到列表的其他位置
我struct item在.h文件中定义了一个.现在我struct tPCB在另一个.h中定义另一个.h,它是同一个项目的一部分,我需要tPCB有一个item.我认为只是制作相同的TurboC项目的一部分将允许我在另一个头文件中使用item,但编译器会抛出" undefined type: ite".
我想我不得不在第二个包含第一个标题,但是我已经看到了相同的代码,但没有这样做.
除了添加一条#include线以使其工作之外,还有其他方法吗?
我正在尝试学习C多线程,我已经看到了一些罕见的东西.
我知道将参数传递给线程必须使用指针完成.我找到了一个我不明白的例子.我将复制相关的行:
pthread_t tid[MAX_THREADS]
int n_veg
pthread_create(&tid[n],NULL,caracter,(void *)n_veg)
Run Code Online (Sandbox Code Playgroud)
caracter显然是一个预先宣布的功能.
现在,为什么我们使用void指针转换而不是int指针转换?有什么相关的区别吗?
其次,为什么我们首先使用指针式转换?我们不能像第一个参数那样使用"&n_veg"吗?
提前致谢.
这段代码是:
elem1!=elem2
Run Code Online (Sandbox Code Playgroud)
相当于这一个?
!elem1.equals(elem2)
Run Code Online (Sandbox Code Playgroud)
它汇编了两种方式,但我仍然不确定它...
这是代码:
#include <stdio.h>
#include <math.h>
static double const x = 665857;
static double const y = 470832;
int main(){
double z = x*x*x*x -(y*y*y*y*4+y*y*4);
printf("%f \n",z);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
神秘地(对我来说)这个代码打印"0.0"如果在32位机器上编译(或者在64位机器上使用-m32标志,就像我的情况一样)使用GCC 4.6.据我所知,浮点运算可能会溢出/下溢它们或者它们会失去精度,但是...... 0?怎么样?
提前致谢.
我有一段代码,这行:
user.attributes.except('created_at', 'created_by', 'updated_at', 'updated_by', 'id')
Run Code Online (Sandbox Code Playgroud)
工作(返回散列与传递的键作为从中删除的参数),而将其更改为:
user.attributes.except(:created_at, :created_by, :updated_at, :updated_by, :id)
Run Code Online (Sandbox Code Playgroud)
不(返回的哈希仍然包含所有键).这怎么可能?
我从这个答案中理解为什么警告存在.但是,为什么它的默认值是2?在我看来,除了一个公共方法的类__init__是完全正常的!设置是否有任何警告
min-public-methods=1
Run Code Online (Sandbox Code Playgroud)
在pylintrc文件中?
设V是一个具有名为K的单个属性及其getter和setter的类.
如果我这样做会发生什么:
V v = new V();
v.setK("a");
HashMap<K,V> map = new HashMap<K,V>();
map.put(v.getk(),v);
v.setK("b");
Run Code Online (Sandbox Code Playgroud)
据我所知,这应该会导致某种问题,因为地图键应该是不变的.这会发生什么?
编辑:考虑键不是字符串而是可变对象,如下面的文章中所述.
假设我有A,B和C类型的对象。我有3个Map,分别包含A,B和C的所有实例。在内部,A和B都具有C的Maps。我希望能够随时存储和恢复应用程序的状态。
因此,直到今天,我始终序列化类似金字塔的应用程序,在这里我将在最顶层的对象上调用序列化,并且该调用将传播到其他所有对象。我该如何处理这种情况?如果我先在A映射上然后在B映射上调用序列化,那么C实例不是要保存两次吗?即使这样做,反序列化也会在我反序列化A映射后反序列化B映射时离开应用程序状态,就像覆盖C实例一样吗?
提前致谢。
我有这门课......
public class Entry <K, V> {
private final K mKey;
private final V mValue;
public Entry() {
mKey = null;
mValue = null;
}
}
Run Code Online (Sandbox Code Playgroud)
如果我使用int作为mKey会发生什么?据我所知,整数不能为空!