使用软件处理最多的数据:文本、数值、日期
JDK提供了许多API接口进行处理
1、文本处理——使用字符和字符串
char:单字符,基本类型
String:字符串,类,拥有非常强大的字符串处理能力(String类的对象是不可变更的,每次对他产生操作都会产生一个新的对象(占内存、消耗时间),在大量字符串拼接的时候,性能低下)
示例如下:
public class StringDemo {
public static void main(java.lang.String[] args) {
//需求:将第一个首字母大写
String str = "hello world";
//分解题目:1、将原字符串分解成两段,首字母加后面部分;
String first = str.substring(0,1);
String second = str.substring(1);
//2、将首字母转大写
first = first.toUpperCase();
//3、拼接转换过的字符串
str = first + second;
System.out.println(str);
}
}
进阶的字符串处理类——带缓冲的字符串类(原地修改,不会频繁创建对象)
①StringBuilder——单线程处理
②StringBuffer——多线程处理
示例如下:
//用String进行大量字符串拼接
public class StringDemo {
public static void main(java.lang.String[] args) {
String tmp = "";
//引入计时,比较两种处理字符处理类的效率
long start = System.currentTimeMillis();
//大量的字符串拼接
for(int i = 0; i < 100000; i++) {
tmp += i;
}
long end = System.currentTimeMillis();
System.out.println("耗时:" + (end - start) + "ms");
}
}
//结果:16600ms
//用StringBulider进行改进
public class StringDemo {
public static void main(java.lang.String[] args) {
StringBulider tmp = new StringBuilder();
long start = System.currentTimeMillis();
for(int i = 0; i < 100000; i++) {
tmp.append(i);
}
long end = System.currentTimeMillis();
System.out.println("耗时:" + (end - start) + "ms");
}
}
//结果:6ms
2、数值处理
①基本类型、数学工具类Math(属于java.util类)、随机数工具类Random
//随机数Random类(设置范围)
Random rand = new Random();
System.out.println(rand.nextInt(100))
②特殊的数值类:包装类(解决了引用类型的参数转换问题)
基本类型——————包装类对照表
byte | Byte |
char | character |
int | integer |
short | Short |
long | Long |
float | Float |
double | Double |
boolean | Boolean |
int i = 10;
Integer i2 = i; // 自动装箱 -> 将基本类型数据转化为包装类型
int c = i2; //自动拆箱 -> 将包装类型自动转化为基本类型
String istr = i2.toString(); // 将数值转字符串
Integer i3 = Integer.parseInt("123"); // 将字符串转数值
3、日期和时间——Date类(属于java.util.Date包)
Date():用来创建当前时间的Date对象
Date(long Date):一个固定的时间,即是一个时间戳
日期格式化类:SimpleDateFormat类
DateFormat是一个抽象类,调用对象的Format方法就可以进行格式化了
//标准格式(toString控制输出)
Date now = new Date();
System.out.println(now);
//自定义格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String strDate = sdf.format(now);
System.out.println(strDate);
//获取一个周之前的今天
long timestamp = now.getTime();
timestamp -= 7*24*60*60*1000;
Date last = new Date(timestamp);
System.out.println(sdf.format(last));
JDK8新增了一个java.time包
//Java8的新玩法
LocalDateTime now2 = LocalDateTime.now();
System.out.println(now2);
System.out.println(now2.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
LocalDateTime.of(2022, 2, 26, 10, 10);