例如,考虑下面的代码捕捉:
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类本身的静态块中使用?没有班级名称,它工作正常.
这背后有什么理由吗?
考虑下面的代码捕捉.我们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) 我想将修正值加到大小数列表中.让我说我有下面的大小数列表与值
[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?
任何人都可以帮助我使用一些正则表达式。我想将以下字符串拆分为字母和数字。
ns01sp0001拆分后的示例字符串应该是
ns01sp 和0001。
我试过下面的正则表达式。
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)