Java高级特性–实用类
1、枚举
枚举指由一般固定的常量组成的类型
[Modifier]enum enumName{
enumContatName1;
[,enumConstantName2...[;]]
//[field, method]
}
如:
//创建枚举
public enum Genders{
Male,Female
}
//创建对象
public class Student{
public Gends sex;
}
//测试类
public class Text{
public static void main(String[] args){
Student stu = new Student();
stu.sex=Genders.Male;
}
}
枚举的优点:
①类型安全(只能输枚举里的常量)
②易于输入(直接点出常量)
③代码清晰
2、Java API
常用Java API
①Java.lang(系统默认导入,不需要手动导入)
Enum、包装类、Math、String、StringBuffer、System
②java.util(工具包)
③java.io
④java.sql
…
3、包装类
包装类把基本类型数据转换为对象
每个基本类型在java.lang包中都有一个相应的包装类
作用
①提供了一系列实验的方法,②集合不允许存放基本数据类型数据,存放数字时,要用包装类型
包装类的构造方法
①所有包装类都可将与之对应的基本数据类型作为参数,来构造它们的实例
public Type(type value)
如:Integer i = new Integer(1);
②除Character类外,其他包装类可将一个字符串作为参数构造它们的实例
public Type(String value)
如:Integer i = new Integer(“123”);
注意事项
①Boolean类构造方法参数为String类型时,若该字符串内容为true(不考虑大小写),则该Boolean对象表示true,否则表示false
②当Number包装类构造方法参数为String类型时,字符串不能为null,且该字符串必须可解析为相应的基本数据类型的数据,否则编译不通过,运行时会抛出NumberFormatException异常
常用方法
①xxxValue( ):包装类转换成基本类型
Integer integerId = new Integer(25);
int intId = integerId.inValue();
②toString( ):以字符串形式返回包装对象表示的基本类型数据(基本类型–>字符串)
String sex = Character.toString('男');
String id = Integer.toString(25);
③parsexxx( ):把字符串转换为相应的基本数据类型数据(Character除外)(字符串–>基本类型)
int num = Integer.parseInt("36");
boolean bool = Boolean.parseBoolean("false");
④valueOf( ):
1、所有包装类都有如下方法(基本类型–>包装类)
public static Type valueOf(type value)
如:Integer intValue = Integer.valueOf(21);
2、除了Character类为,其他包装类都有如下方法(字符串–>包装类)
public static Type valueOf(String s)
如:Integer intValue = Integer.valueOf(“21”);
装箱和拆箱
基本类型和包装类的自动转换
Integer intObject = 5;
int intValue = intObject;
装箱:基本类型转换为包装类的对象
拆箱:包装类对象转换为基本类型的值
包装类的特点
①JDK1.5后,允许基本数据类型和包装类型进行混合数学运算
②包装类并不是用来取代基本数据类型的
在基本数据类型需要用对象表示时使用
4、Math类
java.lang.Math类提供了常用的事项运算方法和两个静态常量E(自然对数的底数)和PI(圆周率)
Math.abs(-3.5);//绝对值返回3.5
Math.max(2.5,90.5);//返回最大值90.5
int random =(int)(Math.random()*10);//生成一个0~9之间的随机数
5、Random类
生成随机数的其他方法
java.util.Random类
Random rand = new Random();
for(int i=0;i<20;i++){//随机生成20个随机整数,并显示
int num = rand.nextInt(10);//返回下一个伪随机数,整型的
System.out.println("第"+(i+1)+"个随机数时: "+num);
}
注意:
用同一个种子值类初始化两个Random对象,然后用每个对象调用相同的方法,得到的随机数也是相同的
rand.nextInt();//int范围内随机整数
rand.nextInt(10);//0~10(不含10)的随机整数
6、String类
String类位于java.lang包中,具有丰富的方法
(计算字符串的长度、比较字符串、连接字符串、提取字符串)
使用String对象存储字符串
String s="Hello world"
String s = new String();
String s = new String("Hello world");
String常用方法
①length()方法:
确定字符串的长度,返回字符中的字符数
(与数组length熟悉相似,但是是方法)
②equals()方法:
比较存储在两个字符串对象的内容是否一致
(重写了object的equals方法,object的equals方法比较地址)
原理:
“==”:判断两个字符串在内存中的地址,即判断是否同一个字符串对象
字符串比较其他方法:
1、equalsIgnoreCase( )方法(忽略大小写比较)
2、toLowerCase( )方法 (换成小写字母)
3、toUpperCase( )方法 (换成大写字母)
字符串连接
①方法1:使用"+"
②方法2:使用String类的concat( )方法
String s= "你好";
String s2 = "张三";
String newStr = s.concat(s2);
字符串常用提取方法
方法名 | 说明 |
---|---|
public int indexOf(int ch) | 搜索第一个出现的字符ch(或字符串value),如果没有找到,返回-1 |
public int indexOf(String value) | 搜索第一个出现的字符ch(或字符串value),如果没有找到,返回-1 |
public int lastIndexOf(int ch) | 搜索最后一个出现的字符ch(或字符串value),如果没有找到,返回-1 |
public int lastindexOf(String value) | 搜索最后一个出现的字符ch(或字符串value),如果没有找到,返回-1 |
public String substring(int index) | 提取从位置索引开始的字符串部分 |
public String substring(int beginindex,int endindex) | 提取beginindex和endindex之间的字符串部分 |
Public String trim( ) | 返回一个前后不含任何空格的调用字符串的副本 |
split(String S);通过S将字符串拆分,分开后的每一部分都存在一个数组里
如:String[ ] infors = intfor.split("*");
(char)charAt(num);提取出字符串中下标为num的字符
7、操作日期时间
java.util.Date类:表示日期和时间
提供操作日期和时间个组成部分的方法
java.text.SimpleDateFormat类
用于定制日期时间的格式
//创建日期对象
Date date = new Date();
//定制日期格式
SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String now = formater.format(date);
System.out.println(now);
注意:format(Date date),返回(String)
8、Calender类
(日历)抽象类
抽象类,java.util.Calender
无法new,通过下面创建对象
Calendar t = Calender.getInstance();
t.get(int i)可以提出日期中的一部分
t.get(Calendar.YEAR)+(t.get(Calendar.MONTH)+1) //西方月份从0开始
+t.get(Calendar.DAY_OF_MONTH);
Calendar.DAY_OF_WEEK-1 //西方从周日开始
方法或属性 | 说明 |
---|---|
int get(int field) | 返回给定日历字段的值 |
MONTH | 指示月 |
DAY_OF_MONTH | 指示一个月中的某天 |
DAY_OF_WEEK | 指示一个星期中的某天 |
9、StringBuffer
对字符串频繁修改(如字符串连接)时,使用StringBuffer类可以大大提高程序执行效率
StringBuffer声明
StringBuffer strb = new StringBuffer();
StringBuffer strb = new StringBuffer("aaa");
StringBuffer使用
sb.toString( );//转化为String类型
sb.append("**");//追加字符串
sb.insert(1,"**");//插入字符串
①String 转 StringBuffer
把String作参数进StringBuffer的构造方法
②StringBuffer转String
用toString( )方法
10、String和StringBuffer
①String是不可变对象
经常改变内容的字符串最好不要使用String
②StringBuffer是可变的字符串
字符串经常改变的情况可使用StringBuffer更高效
③JDK5.0后提供了StringBuilder,等价StringBuffer