一、枚举类型
1.枚举指由一组固定的常量组成的类型
2.枚举的定义和使用
public enum Genders{
Male,Female
}
System.out.println(Sex.Male);
System.out.println(Sex.Female);
3.枚举作用
1)类型安全
2)易于输入和赋值
3)代码清晰
二、常用Java API
1.java.lang:
Enum、包装类、Math、String、StringBuffer、System…
2.java.util
3.java.io
4.java.sql
三、包装类
1.包装类把基本类型数据转换成对象
每个基本类型在java.lang包中都有一个相应的包装类
2.包装类的作用
1)提供了一系列实用的方法
2)集合不允许存放基本数据类型数据,存放数字时,要用包装类型
3.包装类的构造方法
1)所有包装类都可将与之对应的基本数据类型作为参数,来构造它们的实例
如:Integer i=new Integer(1);
除Character类外,其他包装类可将一个字符串作为参数构造它们的实例
如:Integer i=new Integer("123");
2)注意事项:
Boolean类构造方法参数为String类型时,若该字符串内容为true(不考虑大小写),则该Boolean对象表示true,否则表示false。
当Number包装类构造方法参数为String 类型时,字符串不能为null,且该字符串必须可解析为相应的基本数据类型的数据,否则编译不通过,运行时会抛出NumberFormatException异常。
4.包装类的常用方法
1)XXXValue():包装类转换成基本类型
2)toString():以字符串形式返回包装对象表示的基本类型数据(基本类型->字符串)
3)parseXXX():把字符串转换为相应的基本数据类型数据(Character除外)(字符串->基本类型)
4)valueOf():
所有包装类都有如下方法(基本类型->包装类)
如:Integer intValue=Integer.valueOf(21);
除Character类外,其他包装类都有如下方法(字符串->包装类)
如:Integer intValue=Integer.valueOf("21");
5.装箱和拆箱
1)装箱:基本类型转换为包装类的对象
2)拆箱:包装类对象转换为基本类型的值
四、Math类
double pi=Math.PI;//圆周率
double e=Math.E;//自然对数的底数
double v=Math.random();//0~1之间的随机数
int a =Math.abs(-123);//绝对值
long b=Math.round(12.5);//四舍五入
int c=Math.round(12.5f);
System.out.println(Math.floor(12.9));//向下取整
System.out.println(Math.ceil(12.3));//向上取整
System.out.println(Math.sqrt(2));//开根号
System.out.println(Math.log(e));
System.out.println(Math.log10(1));
五、Random类,生成随机数
Random r=new Random();//创建一个Random对象
System.out.println(r.nextInt());//范围在全int的范围
System.out.println(r.nextInt(100));//范围在0~100
Random ran=new Random(2);//伪随机,当种子值固定时,就没办法随机
System.out.println(ran.nextInt(100));
六、String类
String类本身用final修饰,不能被继承,如果方法上用final修饰,不能被重写。
String s="abc";//String类型底层存储时char类型的数组
String a=new String("abc");//很少用
char[] c={'a','b','c'};
String s1=new String(c);
System.out.println(s1.length());//确定字符串的长度
System.out.println(s.equals(s1));//用equals比较
String s2=String.valueOf(c);//valueOf常用于接收数组
char[] chars=s2.toCharArray();//将字符串转换为字符数组
String test=" abc, 123 , hello ,nihao ";
System.out.println(test.trim());//左右去空格
String[] strs=test.split(",");//可以匹配正则表达式
System.out.println(Arrays.toString(strs));//这种切分会切成String数组
byte[] bytes=test.getBytes();//可以获取ascii码值
String abc=new String(bytes);
System.out.println(abc.startsWith(", ", 5));//用于检测字符串是否以指定的前缀开始
System.out.println(abc.charAt(15));//用于返回指定索引处的字符,索引范围为从 0 到 length() - 1
System.out.println(abc.indexOf(","));//搜索第一个出现的字符
System.out.println(abc.substring(5, 10));//左闭右开
System.out.println(abc.contains("123 "));//是否包含
abc.compareTo(" abc,");//这里的比较规则,会先按位比较,其次就按长度比较
String aaa = abc.concat("aaa");//拼接字符串,等同于+拼接
String s3= aaa.replace('a','m');//替换字母
System.out.println(s3.toUpperCase());//小写字母转大写字母
七、StringBuffer类
-
//StringBuffer是线程安全的类型,StringBuilder是单线程类型 StringBuffer sb=new StringBuffer(); sb.append("abc,"); sb.append(123); char[] c={',','h','e','l','l','o',','}; sb.append(c); sb.append(12.5f); System.out.println(sb); String s=sb.toString();//StringBuffer转成String StringBuffer ss=new StringBuffer(s);//使用构造方法将String转换成StringBuffer StringBuffer replace = ss.replace(1, 10, "kb11 nb"); System.out.println(replace);
八、String类和StringBuffer类异同点
String:
- 底层是一个不可变的char数组常量
- 变更时会先新建String对象,再新建char[],再重新赋值
StringBuffer:
- 底层是可变的char数组变量
- 如果在长度以内,变更时不会再次新建StringBuffer对象和char[]对象
- 如果超出长度,变更时也不会新建StringBuffer对象,只是新建char[]对象
- 对性能消耗非常小
String安全性最高,性能最低
StringBuilder的安全性最低,性能最高
StringBuffer折中,在实际工作当中,只要可能涉及多线程,就会使用StringBuffer