小编blu*_*llu的帖子

使用split("|")通过管道符号拆分Java String

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 regex string

190
推荐指数
3
解决办法
23万
查看次数

我对C上的malloc()和calloc()非常困惑

我总是用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"!

所以,按顺序:

  1. 我是否正确使用所有Java-C"翻译"?

  2. 为什么该代码有效?

  3. 使用malloc(n*sizeof(int))和之间有什么区别calloc(n,sizeof(int))吗?

提前致谢

c arrays malloc calloc

27
推荐指数
2
解决办法
7万
查看次数

如果方法抛出未在方法声明中使用"throws"指定的异常,会发生什么情况

我从来没有使用过"throws"子句,今天一个配偶告诉我,我必须在方法声明中指定方法可能抛出的异常.但是,如果不这样做,我一直在使用异常而没有问题,所以,如果事实上它需要它,为什么还需要呢?

java exception throws

20
推荐指数
3
解决办法
3万
查看次数

指向Java中的整数的指针

我有这样的代码

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中包含两个链接列表.我所谈到的整数是指向列表开头的指针,在向列表中添加或删除元素时,我需要将其移动到列表的其他位置

java int pointers

11
推荐指数
2
解决办法
1万
查看次数

在另一个头文件中包含标头

struct item在.h文件中定义了一个.现在我struct tPCB在另一个.h中定义另一个.h,它是同一个项目的一部分,我需要tPCB有一个item.我认为只是制作相同的TurboC项目的一部分将允许我在另一个头文件中使用item,但编译器会抛出" undefined type: ite".

我想我不得不在第二个包含第一个标题,但是我已经看到了相同的代码,但没有这样做.

除了添加一条#include线以使其工作之外,还有其他方法吗?

c header include

10
推荐指数
1
解决办法
2万
查看次数

如何正确地将参数传递给c多线程中的线程

我正在尝试学习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"吗?

提前致谢.

c parameters multithreading pthreads

4
推荐指数
1
解决办法
1万
查看次数

两个Java运算符之间的区别:!= vs!equals

这段代码是:

elem1!=elem2
Run Code Online (Sandbox Code Playgroud)

相当于这一个?

!elem1.equals(elem2)
Run Code Online (Sandbox Code Playgroud)

它汇编了两种方式,但我仍然不确定它...

java operators

4
推荐指数
2
解决办法
774
查看次数

双精度奇怪的行为.需要解释

这是代码:

#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?怎么样?

提前致谢.

c floating-point gcc

4
推荐指数
2
解决办法
581
查看次数

Hash.except()不适用于符号键

我有一段代码,这行:

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)

不(返回的哈希仍然包含所有键).这怎么可能?

ruby ruby-on-rails ruby-on-rails-3.2

4
推荐指数
2
解决办法
3329
查看次数

为什么pylint每个类需要2个公共方法?

我从这个答案中理解为什么警告存在.但是,为什么它的默认值是2?在我看来,除了一个公共方法的类__init__是完全正常的!设置是否有任何警告

min-public-methods=1
Run Code Online (Sandbox Code Playgroud)

在pylintrc文件中?

python pylint

3
推荐指数
1
解决办法
3598
查看次数

更改用作Map键的对象

设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)

据我所知,这应该会导致某种问题,因为地图键应该是不变的.这会发生什么?

编辑:考虑键不是字符串而是可变对象,如下面的文章中所述.

java map

2
推荐指数
1
解决办法
3014
查看次数

Java中相关对象的序列化

假设我有A,B和C类型的对象。我有3个Map,分别包含A,B和C的所有实例。在内部,A和B都具有C的Maps。我希望能够随时存储和恢复应用程序的状态。

因此,直到今天,我始终序列化类似金字塔的应用程序,在这里我将在最顶层的对象上调用序列化,并且该调用将传播到其他所有对象。我该如何处理这种情况?如果我先在A映射上然后在B映射上调用序列化,那么C实例不是要保存两次吗?即使这样做,反序列化也会在我反序列化A映射后反序列化B映射时离开应用程序状态,就像覆盖C实例一样吗?

提前致谢。

java serialization

2
推荐指数
1
解决办法
1739
查看次数

Java泛型问题

我有这门课......

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会发生什么?据我所知,整数不能为空!

java generics integer

1
推荐指数
1
解决办法
195
查看次数