我得到了以下代码,我被问到哪个选项获得以下模式:
XXXX-XXXX-XXXX-2324
...
代码如下:
public class CCMark {
public static String maskCC(String creditCard){
String x = "XXXX-XXXX-XXXX-";
//line 1
}
public static void main(String[] args) {
System.out.println(maskCC("1234-5678-1234-2324"));
System.out.println(maskCC("4567-5678-1234-5643"));
System.out.println(maskCC("1234-5678-1234-4654"));
System.out.println(maskCC("4567-5678-1234-5435"));
}
}
Run Code Online (Sandbox Code Playgroud)
下面可以插入"第1行"的可能选项:
A)
return x + creditCard.substring(15, 19);
B)
StringBuilder sb = new StringBuilder(x);
sb.append(creditCard, 15, 19);
return sb.toString();
Run Code Online (Sandbox Code Playgroud)
我认为这里最好的选择,因为A和B为我们提供了相同的输出,是B,因为它使用的是StringBuilder,这意味着它的方法是可变的,因此它将使用比选项A更少的内存.
我错了吗?可能是这种特殊情况的选项A是最好的选择吗?
我正在学习Java证书,我得到一个问题,我知道它可能是非常基本的.但是,我不确定:
问题:关于Java字节码的说法是什么?
a)它可以在任何平台上运行.
b)只有在为该平台编译时,它才能在任何平台上运行.
c)它可以在任何具有Java运行时环境的平台上运行.
d)它可以在任何具有Java编译器的平台上运行.
e)只有当该平台同时具有Java Runtime Environment和Java编译器时,它才能在任何平台上运行.
假设Java Runtime Environment是解释器,我认为(c)是正确的答案.
我正在测试Strings,我提出了以下代码:
public static void main(String[] args){
StringBuilder sb1 = new StringBuilder("Cuba");
String str1 = sb1.toString();
// n1
System.out.println(str1 == str2);
}
Run Code Online (Sandbox Code Playgroud)
在n1如果我把:
String str2 = sb1.toString();
Run Code Online (Sandbox Code Playgroud)
我得到false.但是,如果我放置:
String str2 = str1;
Run Code Online (Sandbox Code Playgroud)
我得到true.
我不确定为什么会发生这种情况:两个代码都指的是同一个实例,因此,两个输出必须是true.
知道为什么两个输出都不同吗?我知道如何比较字符串,我只是对结果不同的原因感到好奇.
我试图将字符串解析为日期时间.但是,我在运行时收到错误.
代码如下:
public static void main(String[] args) {
String date = LocalDate
.parse("2015-11-29")
.format(DateTimeFormatter.ISO_DATE_TIME);
System.out.println(date);
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?