String类
演示
-
String 对象创建 。
-
获取字符串信息(包括长度、索引位置) 。
-
字符串操作(判断相等、分割) 。
-
字符串格式化(日期时间格式化)。
package string;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @author WuYongheng
* @date 2021/12/4
* @description String类的使用
*/
public class TestString {
public static void main(String[] args) {
// 用构造函数创建字符串
String s1 = new String("hello-java");
// 直接创建
String s2 = "hello";
// 获取字符串的长度
int i = s1.length();
System.out.println("字符串s1的长度为:" + i);
// 获取字符串索引位置,返回指定索引处的 char 值。
char a1 = s1.charAt(2);
System.out.println("下标为2处的char值为:" + a1);
// 两个字符串进行比较
int result = s1.compareTo(s2);
System.out.println("比较的结果为:" + result);
// 字符串分割
System.out.println("- 分隔符,设置分割份数2,返回值 :");
for (String r : s1.split("-", 2)) {
System.out.println(r);
}
// 使用 SimpleDateFormat 格式化日期
Date dNow = new Date();
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
System.out.println("格式化之前:"+ dNow);
System.out.println("格式化之后: " + ft.format(dNow));
}
}
StringBuffer 和 StringBuilder的比较(简答题)
定义
- String:字符串常量,不可变。
- StringBuffer:字符串变量(Synchronized,线程安全)。如果要频繁对字符串内容进行修改,出于效率考虑最好使用StringBuilder。如果想转成String类型,可以调用StringBuffer的toString()方法。
- StringBuilder:字符串变量(非线程安全)。在内部,StringBuilder对象被当作是一个包含字符序列的变长数组。
区别
- String :不可变字符串。
- StringBuffer:可变字符串、效率低、线程安全。
- StringBuilder:可变字符串、效率高、线程不安全。
- 由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下使用 StringBuilder 类。
- 当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。
- 和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
-
StringBuilder 和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。
获取随机数
package javaRevise.math;
import java.util.Random;
/**
* @author WuYongheng
* @date 2021/12/4
* @description 演示获取随机数
*/
public class TestRandom {
public static void main(String[] args) {
Random random = new Random();
for (int i = 0; i < 10; i++) {
int numA = random.nextInt(20);
System.out.println(numA);
}
}
}
Java的开发人员规定了,取值范围是 [ 0 , value )
效果
20不在取值范围内。
装箱和拆箱的概念(简答题)
答:
- 装箱就是 自动将基本数据类型转换为包装器类型。
- 拆箱就是 自动将包装器类型转换为基本数据类型。
Integer i = 10; //装箱
int n = i; //拆箱
int(4字节) | Integer |
byte(1字节) | Byte |
short(2字节) | Short |
long(8字节) | Long |
float(4字节) | Float |
double(8字节) | Double |
char(2字节) | Character |
boolean(未定) | Boolean |
演示
public class Main {
public static void main(String[] args) {
Integer i1 = 100;
Integer i2 = 100;
Integer i3 = 200;
Integer i4 = 200;
System.out.println(i1==i2); // true
System.out.println(i3==i4); // false
}
}
如果数值在 [-128,127] 之间,便返回指向IntegerCache.cache中已经存在的对象的引用;否则创建一个新的Integer对象。
instanceof 运算符
概念
instanceof是Java中的二元运算符,左边是对象,右边是类;当对象是右边类或子类所创建对象时,返回true;否则,返回false。
该运算符用于操作对象实例,检查该对象是否是一个特定类型(类类型或接口类型)。
演示
package javaRevise.math;
/**
* @author WuYongheng
* @date 2021/12/4
* @description 演示instanceof运算符
*/
public class TestInstanceof {
public static void main(String[] args) {
Integer a = 10;
boolean result1 = a instanceof Object;
boolean result2 = a instanceof Integer;
System.out.println(result1);
System.out.println(result2);
}
}