小编Sne*_*tel的帖子

为什么我们不能通过类名在静态块中设置静态最终变量的值

例如,考虑下面的代码捕捉:

public static final int a;
public static final int b;

static {
    a = 8;       // it's working
    Test.b = 10; // compilation error Test.b cannot be assigned. 
}
Run Code Online (Sandbox Code Playgroud)

为什么我们不能Test.b = 10;Test类本身的静态块中使用?没有班级名称,它工作正常.

这背后有什么理由吗?

java static final static-block

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

使用equals()比较包装类和基元会产生奇怪的行为

考虑下面的代码捕捉.我们equals()用来比较对象是否有意义?这两个值都有意义相等,但为什么会longWrapper.equals(0)返回false?当我将两个值与==运算符进行比较时,它返回true.

    Long longWrapper = 0L;
    long longPrimitive = 0;

    System.out.println(longWrapper == 0L); // true
    System.out.println(longWrapper == 0); //true
    System.out.println(longWrapper == longPrimitive); //true


    System.out.println(longWrapper.equals(0L)); //true
    System.out.println(longWrapper.equals(0));  //false
    System.out.println(longWrapper.equals(longPrimitive)); //true
Run Code Online (Sandbox Code Playgroud)

java equals wrapper

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

将修复值添加到bigdecimal列表中

我想将修正值加到大小数列表中.让我说我有下面的大小数列表与值

[10, 20, 30, 40]
Run Code Online (Sandbox Code Playgroud)

现在想要添加修复值,让我们10将每个项目说成列表,这样结果列表就是

[20, 30, 40, 50]
Run Code Online (Sandbox Code Playgroud)

目前的做法:

public static void main(String... args) {
        List<BigDecimal> bigDecimals = new ArrayList<>();

        bigDecimals.add(new BigDecimal(10));
        bigDecimals.add(new BigDecimal(20));
        bigDecimals.add(new BigDecimal(30));
        bigDecimals.add(new BigDecimal(40));
        System.out.println(bigDecimals);

        for(int i=0;i<bigDecimals.size();i++)
        {
            bigDecimals.set(i, bigDecimals.get(i).add(new BigDecimal("10")));
        }

        System.out.println(bigDecimals);
    }
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法或替代方式使用Java 8?

java bigdecimal java-8

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

在字母和数字中拆分字符串

任何人都可以帮助我使用一些正则表达式。我想将以下字符串拆分为字母和数字。

ns01sp0001拆分后的示例字符串应该是

ns01sp0001

我试过下面的正则表达式。

String array[] = str.split("[^A-Z0-9]+|(?<=[A-Z])(?=[0-9])|(?<=[0-9])(?=[A-Z])");
Run Code Online (Sandbox Code Playgroud)

对于大写,它是返回

[NS, 01, SP, 0001]
Run Code Online (Sandbox Code Playgroud)

但对于小写,它是回报

[, 01, 0001] // not able to get alphabet.
Run Code Online (Sandbox Code Playgroud)

有什么办法可以得到像

[NS01SP,0001] // if input = NS01SP0001
[ns01sp,0001] //if input = ns01sp0001.
Run Code Online (Sandbox Code Playgroud)

java regex string split

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

标签 统计

java ×4

bigdecimal ×1

equals ×1

final ×1

java-8 ×1

regex ×1

split ×1

static ×1

static-block ×1

string ×1

wrapper ×1