一、
1.String和StringBuilder
2.length()
3.abs()
4.随机生成数字
5.部分,1970-01-01T00:00:00z开始到指定时间,纳秒数
二、
× × × ✓ ✓
三、
1.B 2.B 3.A 4.A 5.A
四、
1.区别:
线程安全方面: StringBuffer 是线程安全的类。这意味着在多线程环境下,多个线程可以安全地访问和操作 StringBuffer 对象。它的方法都被关键字 synchronized 修饰,当一个线程在访问 StringBuffer 的方法时,其他线程会被阻塞,直到当前线程操作完成,这样能保证数据的一致性和完整性。StringBuilder 是线程不安全的。在单线程环境下,它的性能比 StringBuffer 高,因为它没有线程安全相关的开销。如果可以确定代码在单线程环境下运行,使用 StringBuilder 可以获得更好的性能。
性能方面:在单线程场景下, StringBuilder 性能更好。因为 StringBuffer 为了保证线程安全会有额外的开销,而 StringBuilder 没有这些额外的开销,所以它在频繁修改字符串的操作(如拼接、插入、删除等)中执行速度更快。在多线程场景下, StringBuffer 是更好的选择,虽然性能会受到一定程度的影响,但可以保证多个线程操作数据的正确性。
2.基本数据类型和包装类如下:
byte:对应的包装类是 Byte 。 byte 类型在内存中占1个字节,取值范围是 -128到127,用于存储较小的整数。
short:包装类是 Short 。占2个字节,取值范围是 -32768到32767,也是用于存储整数。
-int:包装类是 Int 。这是最常用的整数类型,占4个字节,取值范围是 -2147483648到2147483647。
long:包装类是 Long 。用于存储较大的整数,占8个字节,取值范围非常大。
float:包装类是 Float 。用于存储单精度浮点数,占4个字节,在存储一些精度要求不是特别高的小数时使用。
double:包装类是 Double 。占8个字节,用于存储双精度浮点数,精度比 float 更高,在很多涉及小数运算的场景中使用。
char:包装类是 Char 。占2个字节,用于存储单个字符,如字母、数字、符号等。
boolean:包装类是 Boolean 。用于存储逻辑值,只有 true 和 false 两个取值,占1个字节。
五、
1.
import java.util.Random;
public class RandomNumberGenerator {
public static void main(String[] args) {Random random = new Random();
for (int i = 0; i < 10; i++) {
int randomNumber = random.nextInt(101);
System.out.print(randomNumber + " ");
}
}
}
2.public class StringManipulation {
public static void main(String[] args) {
String str = "ITcastHeiMa";
StringBuffer reversedStr = new StringBuffer();
for (int i = str.length() - 1; i >= 0; i--) {
char currentChar = str.charAt(i);
if (Character.isUpperCase(currentChar)) { reversedStr.append(Character.toLowerCase(currentChar));
} else { reversedStr.append(Character.toUpperCase(currentChar));
}
}
System.out.println(reversedStr.toString());
}
}