本章将会对String类与Integer,System,Date,Random,BigInteger,Math进行简单介绍
1.String
String类是不可变的,这里说的不可变是指值(堆内存中存储的),而不是引用地址。
String类型变量声明时,会现在字符串常量池中寻找,是否有值,如果有直接赋值给变量,如果没有找到这个值,将会在堆内存中创建一个对象,再进行赋值。
两个字面量字符串拼接,会在编译时就直接拼接成功
1.1 常用方法
如下图为常用方法
String string=" 23 4 ";
string.charAt(0);//charAt方法会返回指定索引处的字符
string.trim();//trim方法会去掉字符串首尾的空格
string.toUpperCase();//将字符串字母全部大写,string.toLowerCase();相反,小写
string.toLowerCase();
string.startsWith("2");//字符串以指定字符串开头
string.endsWith("4");//字符串以指定字符串结尾
string.split(" ");//将字符串以某个字符分割,返回一个String数组
string.substring(2);//将字符串截取,用开始索引(包含)开始截取,[用第二个参数索引结束截取()不包含]
string.toCharArray();//将字符串转换成字符数组
string.getBytes();//将字符串转换成字节数组
string.replace("1", "3");//替换字符串,将第一个参数替换成第二个参数
string.replaceAll("1", "3");//与replace功能一样,除此之外其还支持正则表达式
string.indexOf("3");//返回字符串中指定字符串的起始索引
string.lastIndexOf("s");//返回最后一个指定字符串的索引
string.equals(" ");//比较两个字符串是否相等
string.equalsIgnoreCase(" ");//忽略大小,比较两个字符串是否相等
string.length();//返回字符串的长度
StringBuilder与StringBuffer都是可变的,频繁拼接字符串时可以根据情况使用其中一个
StringBuilder,线程不安全,可用于单线程
StringBuffer,线程安全,可用于多线程
StringBuilder sb = new StringBuilder("sodifjh");
//字符串拼接
sb.append("");
//字符串反转
sb.reverse();
// 转换为字符串
sb.toString();
//容量
sb.capacity();
//元素个数
sb.length();
2.八种包装类
八种基本类型对应八个包装类
int-->Integer byte-->Byte short-->Short long-->Long float-->Float
char-->Character double-->Double boolean-->Boolean
基本类型与包装类之间会发生自动装箱与自动拆箱
//自动拆箱,在编译时编译器会自动加上intValue(),i1=ir.intValue()
int i1=ir;
//自动装箱,编译器会自动将代码变成Integer ir=Integer.valueOf(i);
Integer ir=40;
Integer包装类有常量池的定义,整形常量池 -- 在Integer类加载时会创建一个整型常量池,里面存储了256个对象(值为-128~127)当值在这个范围中时,会直接使用常量池里的地址值,如果超出这个范围,Integer类将会在堆内存中创建相应对象
Integer in=300;
Integer in1=300;
System.out.println(in==in1);
形参为Object类型的,实参为int基本类型也能传入,是因为int自动装箱变成Integer类型,然后向上转型成Object类型
//形参为Object类型的,实参为int基本类型也能传入,
是因为int自动装箱变成Integer类型,然后向上转型成Object类型
m1(i);
public static void m1(Object o) {
System.out.println(o);
}
//也可以把纯数字字符串转换成Integer类型,使用下列方法
Integer num=Integer.valueOf("234");
Integer num1=Integer.parseInt("45");