一.
1.String,StringBuffer
2.length()
3.abs()
4.0~n
5.Long字段,标准Java计算时代到现在的秒数,纳秒数
二.
1.x
2.x
3.√
4.√
5.x
三.
1.D
2.C
3.A
4.A
5.A
四.
1.线性安全性
.StringBuffer:是线程安全的。这意味着它的方法是同步的,在多线程环境下可以安全地使用。例如,当多个线程同时访问和修改同一个 StringBuffer 对象时,不会出现数据不一致等并发问题。它通过在方法上加锁(synchronized 关键字)来实现线程安全。
StringBuilder:是非线程安全的。它没有像 StringBuffer 那样的同步机制,所以在单线程环境下,它的性能比 StringBuffer 要好。因为不需要进行加锁和解锁等操作,减少了额外的开销。
2.性能方面
StringBuffer:由于其线程安全的特性,在方法调用时会有额外的同步开销。这使得它在单线程环境下的性能不如 StringBuilder。例如,在频繁进行字符串拼接操作的单线程程序中,使用 StringBuffer 可能会比 StringBuilder 稍慢一些。
StringBuilder:因为没有同步机制的限制,在单线程环境下执行速度通常更快。尤其是在进行大量的字符串操作(如拼接、插入、删除等)时,它的性能优势会更加明显。
3.使用场景
StringBuffer:适合在多线程环境下对字符串进行频繁的修改操作。例如,在一个多线程的服务器应用程序中,多个线程可能会同时操作一个记录日志信息的字符串,这时使用 StringBuffer 可以保证数据的准确性和一致性。
StringBuilder:适用于单线程环境下对字符串进行大量的修改操作。比如,在一个简单的本地工具程序中,只有一个线程在处理字符串的拼接和修改,使用 StringBuilder 可以提高程序的执行效率。
<2>
1.byte与Byte
byte:是基本数据类型,占 1 个字节(8 位),用于存储整数,范围是 - 128 到 127。例如,byte b = 10;定义了一个 byte 类型的变量 b 并赋值为 10。它在内存中以二进制补码形式存储。
Byte:是 byte 的包装类。提供了一些方法来操作 byte 类型的值。比如Byte.parseByte(String s)方法可以将一个数字字符串转换为 byte 类型的值。例如,String str = "10"; byte value = Byte.parseByte(str);就将字符串 "10" 转换为 byte 类型的值 10 存储在 value 变量中。Byte 类还提供了valueOf(byte b)方法用于将 byte 基本类型转换为 Byte 包装类对象,方便在一些需要对象的场景中使用 byte 类型的数据。
2.short与Short
short:基本数据类型,占 2 个字节(16 位),范围是 - 32768 到 32767。通常用于存储范围比 byte 大一些的整数。如short s = 1000;。
Short:Short 包装类。和 Byte 类似,有Short.parseShort(String s)方法将字符串转换为 short 类型,例如String shortStr = "2000"; short shortValue = Short.parseShort(shortStr);。还有Short.valueOf(short s)用于将 short 基本类型转换为 Short 包装类对象。
3.int与Integer
int:基本数据类型,占 4 个字节(32 位),范围是 - 2147483648 到 2147483647。是最常用的整数类型,用于循环计数、数组下标等多种场景。如int i = 100;。
Integer:Integer 包装类。它有Integer.parseInt(String s)用于将字符串转换为 int 类型,这在从用户输入或文件读取等获取数据时很有用。例如String intStr = "500"; int intValue = Integer.parseInt(intStr);。同时,Integer.valueOf(int i)将 int 基本类型转换为 Integer 包装类对象。此外,Integer 类还定义了一些常量,如Integer.MAX_VALUE和Integer.MIN_VALUE分别表示 int 类型的最大值和最小值。
4.long与Long
long:基本数据类型,占 8 个字节(64 位),范围是 - 9223372036854775808 到 9223372036854775807。用于存储较大范围的整数,像时间戳(从 1970 年 1 月 1 日 00:00:00 UTC 以来的毫秒数)。例如long timestamp = System.currentTimeMillis();。
Long:Long 包装类。Long.parseLong(String s)用于将字符串转换为 long 类型,如String longStr = "1234567890123L"; long longValue = Long.parseLong(longStr);(注意这里的数字后面加 L 表示是 long 类型的字面量)。Long.valueOf(long l)用于将 long 基本类型转换为 Long 包装类对象。
5.float与Float
float:基本数据类型,占 4 个字节(32 位),是单精度浮点数。用于存储小数,精度有限。例如float f = 3.14f;(注意数字后面加 f 表示是 float 类型的字面量)。
Float:Float 包装类。Float.parseFloat(String s)用于将字符串转换为 float 类型,如String floatStr = "2.718f"; float floatValue = Float.parseFloat(floatStr);。Float.valueOf(float f)用于将 float 基本类型转换为 Float 包装类对象。由于浮点数的存储方式特殊,在比较两个 float 值是否相等时要注意精度问题。
6.doubie与Double
double:基本数据类型,占 8 个字节(64 位),是双精度浮点数,精度比 float 高。常用于存储更精确的小数,如金融计算等场景。例如double d = 3.1415926;。
Double:Double 包装类。Double.parseDouble(String s)用于将字符串转换为 double 类型,如String doubleStr = "1.41421356"; double
五.
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 StringConversion {
public static void main(String[] args) {
String str = "ITcastHeiMa";
StringBuffer stringBuffer = new StringBuffer();
for (int i = str.length() - 1; i >= 0; i--) {
char currentChar = str.charAt(i);
if (Character.isUpperCase(currentChar)) {
stringBuffer.append(Character.toLowerCase(currentChar));
} else {
stringBuffer.append(Character.toUpperCase(currentChar));
}
}
System.out.println(stringBuffer.toString());
}
}