小编Ach*_*les的帖子

Java Arrays.equals()为二维数组返回false

我只是很想知道 - 为什么Arrays.equals(double [] [],double [] [])返回false?实际上,当数组具有相同数量的元素并且每个元素是相同的?

例如,我进行了以下测试.

double[][] a,  b;
int size =5;

a=new double[size][size];
b=new double[size][size];

for( int i = 0; i < size; i++ )
    for( int j = 0; j < size; j++ ) {
        a[i][j]=1.0;
        b[i][j]=1.0;
    }

if(Arrays.equals(a, b))
    System.out.println("Equal");
else
    System.out.println("Not-equal");
Run Code Online (Sandbox Code Playgroud)

返回false并打印"不相等".

另一方面,如果我有这样的事情:

double[] a,  b;
int size =5;

a=new double[size];
b=new double[size];

for( int i = 0; i < size; i++ ){
    a[i]=1.0;
    b[i]=1.0;
} 

if(Arrays.equals(a, b))
    System.out.println("Equal");
else
    System.out.println("Not-equal");
Run Code Online (Sandbox Code Playgroud)

返回true并打印"Equal".该方法仅适用于单个尺寸吗?如果是这样,Java中的多维数组是否有类似的东西?

java arrays

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

Java DateFormat

我知道Java Date Time不是一个很好的前进方式,但我只是好奇发生了什么:

为什么以下行:

DateFormat df = new SimpleDateFormat("dd-MMM-yyyy", Locale.US)

不会产生任何错误,以下行:

DateFormat df = new SimpleDateFormat("DD-MMM-YYYY", Locale.US)

DateFormat df = new SimpleDateFormat("dd-mm-YYYY", Locale.US)

抛出以下异常:

Exception in thread "main" java.lang.IllegalArgumentException: Illegal pattern character 'Y'

    at java.text.SimpleDateFormat.compile(SimpleDateFormat.java:769)
    at java.text.SimpleDateFormat.initialize(SimpleDateFormat.java:576)
    at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:501)
    at testing.MySchedule.main(MySchedule.java:18)
Run Code Online (Sandbox Code Playgroud)

我的意思是我只是改变案子吧?但DateFormat真的那么愚蠢还是我做错了什么?或者它与我正在使用的Locale有关?

干杯

java date-format

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

将字符串替换为下一行的大写字母(Pascal Casing)

我想从字符串中删除所有下划线,并在下划线后面加上字符的大写字母.所以例如:_my_string_变成:MyString相似:my_string成为MyString

有更简单的方法吗?我目前有以下(假设没有输入有两个连续的下划线):

        StringBuilder sb = new StringBuilder();
        int i;
        for (i = 0; i < input.Length - 1; i++)
        {
            if (input[i] == '_')
                sb.Append(char.ToUpper(input[++i]));
            else if (i == 0)
                sb.Append(char.ToUpper(input[i]));
            else
                sb.Append(input[i]);
        }
        if (i < input.Length && input[i] != '_')
            sb.Append(input[i]);

        return sb.ToString();
Run Code Online (Sandbox Code Playgroud)

现在我知道这并不是完全相关的,但我想在答案中提供的实现上运行一些数字,这里是使用1000000 iterations字符串的每个实现的毫秒结果"_my_string_121_a_":

Achilles: 313
Raj: 870
Damian: 7916
Dmitry: 5380
Equalsk: 574
Run Code Online (Sandbox Code Playgroud)

方法:

        Stopwatch stp = new Stopwatch();
        stp.Start();
        for (int i = 0; …
Run Code Online (Sandbox Code Playgroud)

c# string replace replacewith

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

Java程序输出 - 并发

这可能是一个愚蠢的问题但是,这个程序的输出(它的方式)可以为零吗?

public class Test2{

    int a = 0;
    AtomicInteger b = new AtomicInteger();
    public static Test2  c = new Test2();

    public static void main(String[] args){

        Thread t1 = new Thread(new MyTest1());
        Thread t2 = new Thread (new Mytest2());

        t1.start();
        t2.start();
    }

}

class MyTest1 implements Runnable{

    public void run(){
        Test2.c.a = 1;
        Test2.c.b.compareAndSet(0,1);

    }
}

class Mytest2 implements Runnable{
    public void run(){
        int x = 0;

        if(Test2.c.b.get() == 1)
            x = Test2.c.a;

        System.out.println("Value of x = "+x);
    }

}
Run Code Online (Sandbox Code Playgroud)

我问这个的原因是,虽然我正在使用AtomicInteger,但MyTest2中的if()语句可能先执行,然后x的值为zero..right? …

java concurrency

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

标签 统计

java ×3

arrays ×1

c# ×1

concurrency ×1

date-format ×1

replace ×1

replacewith ×1

string ×1