第三小节之Java API
1、String类和StringBuffer类
字符串中可以包含任意字符,这些字符必须包含在一对双引号” “之内
1.1String类
String a=null与String a=""的区别,前者表示对象是空对象即没有对象,后者表示有对象(只是对象没有内容)。
构造方法:String();//创建一个内容为空的字符串
String(char[] value);//根据指定的字符数组创建对象
String(String value);//根据指定的字符串内容创建对象
常见方法:int indexOf(int ch);//返回指定字符在此字符串中第一次出现处的索引
int lastIndexOf(int ch);//返回指定字符在此字符串中第一次出现处的索引
char charAt(int index);//返回字符串中index位置上的字符,其中index的取值范围是:0~(字符串长度-1)
int length();//返回此字符串的长度
boolean equals(Object anObject);//将此字符串与指定字符串比较
boolean isEmpty();//当且仅当字符串的长度为为0时返回true
boolean contains(CharSequeue cs);//判断此字符串是否包含了指定的字符串
boolean starts/endsWith(String string);//判断此字符串与指定的字符串时候开始或结束
String toLower/toUpperCase();//全部转换为小写或者大写
String valueOf(int i);//整数转换为字符串,float、double、char等其它基本类型的数据都可以通过该方法转为String字符串类型
char[] toCharArray();//将此字符串转换为一个字符数组
String replace(CharSequeue oldstr,CharSequeue newstr);//返回一个新的字符串,通过newstr替换此字符串中出现的所有oldstr得到
String[] split(String regesx);//根据参数regex将原来的字符串分割为若干个子字符串
String substring(int beginIndex,int endIndex);//返回一个新的字符串,它包含此字符串中从索引beginIndex到索引endIndex之间的所有字符
String trim();//返回一个新的字符串,它去除了原字符串首尾的空格
equals()方法用于比较两个字符串中的字符是否相等,==方法用于比较两个字符串对象的地址是否相同。
1.2StringBuffer类
由于字符串是常量,因此一旦创建,其内容和长度是不可改变的。如果需要对一个字符串进行修改,则只能创建新的字符串。为了便于字符串的修改,JDK提供了一个StringBuffer类(也称为字符串缓冲区),它的长度和内容是可以改变的。StringBuffer类似一个字符容器,当且在其中添加或删除字符串时,并不会产生新的StringBuffer对象。
常用方法:
StringBuffer append(char c);//添加参数到StringBuffer对象中,始终将这些字符添加到缓冲区的末尾;
StringBuffer insert(int offset,String str);//将字符串中的offset位置插入字符串str,插入到指定位置;
StringBuffer deleteCharAt(int index);//移除指定位置的字符;
StringBuffer delete(int start,int end);//删除Stringbuffer对象中指定范围的字符或字符串序列;
StringBuffer replace(int start,int end,String s);//在Stringbuffer对象中替换指定的字符或字符串序列
void setCharAt(int dex,char ch);//修改指定位置index处的字符序列
String toString();//返回Stringbuffer缓冲区的字符串
StringBuffer reverse();//将此字符串反转取代
1.3String类和StringBuffer类的比较:
1、String类表示的字符串是常量,一旦创建后,内容和长度都是无法改变的。而StringBuffer表示字符容器,其内容和长度都可以随时修改。
2、String类覆盖了Object类的equals()方法,而StringBuffer类没有覆盖Object类的equals()方法。
3、String类对象可以用操作符+进行连接,而StringBuffer类对象之间不能。
2、System类与Runtime类
2.1、System类定义了一些与系统相关的属性和方法,它所提供的属性和方法都是静态的。
常用方法:
static void exit(int status);//该方法用于终止当前正在运行的Java虚拟机,其中参数status表示状态码,若状态码非0,则表示异常终止
static long gc();//运行垃圾回收器,并对垃圾进行回收
static long currentTimeMillis());//返回以毫秒为单位的当前时间
static void arraycopy(Object src,int srcPos,Object dest,int desPos,int length);//从src引用的指定源数组复制到dest引用的数组,复制从指定的位置开始,到目标数组的指定位置结束,快速拷贝一个数组,且目标数组必须要有足够的空间来存放拷贝的元素。
static Properies getProperties();//取得当前的系统属性,返回一个Properties对象,其中封装了系统的所有属性,这些属性是以键值对的形式存在
static String getProperty(String key);//获取指定键描述的系统资源
2.2、Runtime类用于表示虚拟机运行时的状态,它用于封装JVM虚拟机进程,并且只有一个实例,因此该类采用单例模式进行设计,对象不可以直接实例化。
Runtime run=Runtime.getRuntime();
availableProcessors();//返回当前虚拟机的处理器个数
freeMemory();//空闲内存数
maxMemory();//最大内存数
exec();//用于执行一个dos命令,返回一个Process对象,该对象表示操作系统的一个进程
3、Math类与Random类
3.1、Math类中都是static方法和两个静态常量PI和E,分别代表数学常量∏和e。
round(double n);//方法用于对某个小数进行四舍五入,此方法会将小数点后面的数字全部忽略,返回一个int值,
ceil(int n)//方法求大于参数的最小整数,返回为double
floor(int n);//方法求小于参数的最大整数,返回为double
random();//方法用于生成一个大于等于0.0小于1.0随机值
3.2、Random类,它可以在指定的取值范围内随机产生数字
构造方法:
Random();//用于创建一个伪随机数生成器
Random(long seed);//使用一个long型的seed种子创建伪随机数生成器,用于产生相同序列的随机数(传入种子相同即可),如果没有指定种子,系统会以当前时间戳作为种子。
常用方法:
boolean nextBoolean();//随机生成boolean类型的随机数
boolean nextDouble();//随机生成double类型的随机数,返回0.0和1.0之间double类型的值
boolean nextFloat();//随机生成float类型的随机数
int nextInt();//随机生成int类型的随机数
int nextInt(int n);//随机生成0~n之间int类型的随机数
long nextLong();//随机生成long类型的随机数
4、包装类
一个数据是基本数据类型,则它没有方法可言,把它变为引用类型,则有很多方法可用。
基本数据类型——包装类(集合中经常使用)
byte——Byte long——Long
char——Character float——Float
int——Integer double——Double
short——Short boolean——Boolean
包装类和基本数据类型在进行转换时,引入了装箱和拆箱的概念,其中装箱是指将基本数据类型的值转为引用数据类型;反之,拆箱是指将引用数据类型的对象转为基本数据类型。
Integer常用的方法
toBinaryString(int i);//以二进制无符号整数形式返回一个整数参数的字符串
toHexString(int i);//以十六进制无符号整数形式返回一个整数参数的字符串
toOctalString(int i);//以八进制无符号整数形式返回一个整数参数的字符串
valueOf(int i);//返回一个表示指定的int值的integer实例
valueOf(String s);//返回保存指定的String值的Integer对象
parseInt(String s);//将字符串参数作为有符号的十进制整数进行解析
intValue();//将Integer类型的值以int类型返回
int parseInt(String s,int radix);//将S转换为radix进制的int数值,静态方法
1、包装类都重写了Object类中的toString()方法,以字符串的形式返回被包装的基本数据类型的值。
2、除了Character外,包装类都有valueOf(String s)方法,可以根据String类型的参数创建包装类对象,但参数字符串s不能为null,而且字符串必须是可以解析为相应基本类型的数据。
3、除了Character外,包装类都有parseXXX(String s)的静态方法,将字符串转换为对应的基本类型的数据。
JDk5.0新特性——自动装箱和拆箱
5、Date类、Calendar类与DateFormat类
5.1Data类
构造方法:
Data();//用来创建当前日期时间的Data对象。
Data(long date);//用于创建指定时间的Data对象,其中date参数表示1970年1月1日00:00:00(成为历元)以来的毫秒数,即时间戳。
5.2Calendar类:用于完成日期和时间字段的操作,它可以通过特定的方法设置和读取日期的特定部分,比如年、月、日、时、分、秒等。Calendar类是一个抽象类,不可以被实例化,在程序中需要调用其静态方法getInstance()来得到一个Calendar对象:
Calendar calendar=Calendar.getInstance();
常用方法:
int get(int field);//返回指定日历字段的值
void add(int field,int amount);//根据日历规则,为指定的日历字段添加或减去指定的时间量
void set(int field,int value);//为指定日历字段设置指定值
void set(int year,int month,int data );//设置calendar对象的年、月、日三个字段的值
void set(int year,int month,int data ,int hourOfDay,int minute,int second);//设置Calendar对象的年月日时分秒六个字段的值
Calendar.YEAR,Calendar.MONTH,Calendar.SECOND//年月秒,注意:月份的起始值是从0开始而不是1。
Calendar对象与Date对象的相互转化:Calendar的getTime()返回一个表示Calendar时间值的Date对象,同时Calendar有一个steTime(Date date)方法,setTime()方法接受一个Date对象表示的时间值设置给Calendar对象。
5.3DateFormat类:专门用于将日期格式化为字符串或者用特定格式显示的日期字符串转换为一个Date对象。是抽象类,不能被实例化,调用相应的静态方法。
常用方法:
static DateFormat getDateInstance();//用于创建默认语言环境和格式化风格的日期格式器
String format(Date date);//将一个Date格式化为日期/时间字符串
Date parse(String source);//将给定字符串解析成一个日期
DateFormat类中定义了四个常量值用于参数传递给这些方法,其中包括FUll(完整格式)、LONG(长格式)、MEDIUM(普通格式)和SHORT(短格式)。
5.3.1simpleDateFormat类是DateFormat类的子类,使用new关键字创建实例对象,构造方法接受一个格式字符串参数,表示日期格式模板。
SimpleDateFormat format=new SimpleDateFormat("yyyy-mm-dd--HH:mm;;ss;sss",locale.CHINA);
只要传入合适的格式字符串参数,就能解析各种形式的日期字符串或者将Date日期格式化成任何形式的字符串。
6、JDk新特性——swith语句支持字符串类型
swith();//语句参数可以接受int、char、string类型。