String
String 类是不可变类,也就是说 String 对象声明后,将不可修改。
String 对象赋值后不能再修改,这就是不可变对象,如果对字符串修改,那么将会创建新的对象。
只要采用双引号赋值字符串,那么在编译期将会放到方法区中的字符串的常量池里,如
果是运行时对字符串相加或相减会放到堆中(放之前会先验证方法区中是否含有相同的字符
串常量,如果存在,把地址返回,如果不存在,先将字符串常量放到池中,然后再返回该对
象的地址)
使用 String 时,不建议使用 new 关键字,因为使用 new 会创建两个对象
注:堆区中是运行期分配的,常量池中是编译器分配的
String中常用的方法
- endsWith:判断字符串是否以指定的后缀结束
- startsWith,判断字符串是否以指定的前缀开始
- equals,字符串相等比较,不忽略大小写
- equalsIgnoreCase,字符串相等比较,忽略大小写
- indexOf,取得指定字符在字符串的位置
- lastIndexOf,返回最后一次字符串出现的位置
- length,取得字符串的长度
- replaceAll,替换字符串中指定的内容
- split,根据指定的表达式拆分字符串
- substring,截子串
- trim,去前尾空格
- valueOf,将其他类型转换成字符串
正则表达式
正则表达式(独立的学科),主要可以用来做字符串处理,可以描述特定的字符模式
例如:”\d”代表任意一个数字 0~9, \D 代表所有的非数字,\w 代表所有的英文字母,\W 代表所有的非英文字母。
具体的更细节内容可以查看帮助文档。
StringBuffer 和 StringBuilder
StringBuffer
StringBuffer 称为字符串缓冲区,它的工作原理是:预先申请一块内存,存放字符序列,如果字符序列满了,会重新改变缓存区的大小,以容纳更多的字符序列。StringBuffer 是可变对象。
StringBuffer的主要StringBuffer是append和insert方法,它们被重载以便接受任何类型的数据。每个都有效地将给定的数据转换为字符串,然后将该字符串的字符附加或插入到字符串缓冲区。append方法总是在缓冲区的末尾添加这些字符;insert方法将insert添加到指定点。
StringBuilder
作用和StringBuffer相似,区别在于StringBuffer 中所有的方法都是同步的,是线程安全的,但速度慢,StringBuilder 的速度快,但不是线程安全的 ,一般情况下,优先使用StringBuilder
基本类型对应的包装类
基本类型的包装类主要提供了更多的实用操作,这样更容易处理基本类型。所有的包装类都是final 的,所以不能创建其子类,包装类都是不可变对象
对应的转换
自动装箱和自动拆箱
自动装箱:就是将基础数本类型转换为对象/包装类型
自动拆箱:就是将包装类型转换为基本数据类型。
例如:
//自动装箱
Integer i1 = 100;
//自动拆箱
int i2 = i1;
日期类
常用的日期类
java.util.Date
java.text.SimpleDateFormat
java.util.Calendar
//日期类
Date date = new Date();
System.out.println(date);
SimpleDateFormat sdate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//将日期进行格式化
System.out.println(sdate.format(date));
Calendar cdate = Calendar.getInstance();
//输出当前日期是这个月的第几天,还有其他的格式
System.out.println(cdate.get(Calendar.DAY_OF_MONTH));
//输出当前日期是这个星期的第几天
System.out.println(cdate.get(Calendar.DAY_OF_WEEK));
数字类
常用的数字类
java.text.DecimalFormat
java.math.BigDecimal 可以做精确计算,特别是财务类的数据
//数字类
double num = 13654.154;
//设置格式为:设置千分位,并保留两位小数
DecimalFormat dnum = new DecimalFormat("###,###.##");
System.out.println(dnum.format(num));
//精确计算
int a1 = 10;
int a2 = 12;
BigDecimal ba1 = new BigDecimal(a1);
BigDecimal ba2 = new BigDecimal(a2);
BigDecimal ba3 = ba1.add(ba2);
System.out.println(ba3);
Random产生随机数
Random 位于 java.util 包下,可以产生随机数
//产生随机数
Random random = new Random();
//产生10个0-100的随机数
for (int i = 0; i < 10; i++) {
System.out.println(random.nextInt(100));
}
System.out.println("=====================");
//没有指定范围便是随机产生。
for (int i = 0; i < 10; i++) {
System.out.println(random.nextInt());
}
Enum枚举
如果程序只是单纯的对于成功就返回1,失败就返回0,没有什么辨识性,而且使用枚举可以自定义返回的结果形式,以及可以返回多个结果,不单只有成功、失败两个。
例如
//定义枚举
enum Season {
Spring,
Summer,
Autumn,
Winter
}