首页 > 代码库 > 实用类(Math,String及Date,Calendar)
实用类(Math,String及Date,Calendar)
Java API:Java Application Programming Interface 即Java应用程序编程接口
java.lang:编写Java程序时最广泛使用的包,自动导入到所有的程序中,包含了Java程序的基础类和接口.
java.util:包含了系统辅助类,特别是Collection.List和Map等集合类
java.io:包含了与输入/输出有关的类,如文件操作等类
java.net:包含了与网络有关的类,如Socket
java.sql:包含了与数据库相关的类
包装类的特点:
1,所有包装类都是final类型,不能创建它们的子类
2,JDK1.5后,允许基本数据类型和包装类型进行混合数学运算
3,包装类并不是用来取代基本数据类型的
在基本数据类型需要用对象表示时使用
==>java.lang包
Math类
Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
常用的数学运算方法和两个静态常量E(自然对数的底数)和PI(圆周率)
Math.abs(-3.5);//绝对值
Math.max(2.5,56.6);
int random = (int) (Math.random()*10);//生成0-9之间的随机数
random(): 0(包括)-1(不包括)之间的随机浮点数
==>另一种方法:java.util.Random
Random random = new Random(种子);
Random random1 = new Random(100);
Random random2 = new Random(100);
==>random1.nextInt() == random2.nextInt()
用同一个种子值来初始化两个Random对象,然后用每个对象调用相同的方法,得到的随机数也是相同的.
String类
(1)length():长度 方法
对比:数组.length 属性
(2)equals():比较存储对象的字符串内容是否相同(String类型重写后判断内容是否相等)
equalsIgnoreCase():忽略大小写
toLowerCase():转换为小写
toUpperCase():转换为大写
equals() 和 "==" 区别:
==
既可以比较基本数据类型,也可以比较引用数据类型,比较基本数据类型比的是值,比较引用数据类型比的是地址值
equals
只能比较引用数据类型,方法被重写之前和==的意义是一样的,比的是地址值,重写之后按照重写的规则
(String类对equals()方法进行了重写,只比较字符内容是否相同)
String s1 = "java"; String s2 = "java"; //字符串池,s1 s2 是同一个对象 String s3 = new String("java"); //堆,新的内存地址,新的对象(字符串池如没有,也会放一个对象) s1==s2 //true s1==s3 //false s1.equals(s3) //true
(3)字符串的连接
①"+"
②concat()
注意:字符串方法操作(变大写,小写,连接,截取...)的变化都作用于字符串的副本,而不是本身(需接收)
(4)字符串提取方法
public int indexOf(int ch) ch第一次出现的位置,从0开始找,找不到返回-1
public int indexOf(String value) 字符串第一次出现的位置
public int lastIndexOf(int ch)
public int lastIndexOf(String value)
public String substring(int index)
public String substring(int beginindex,int endindex) 包含起始位置,不包含结束位置
public String trim() 返回去掉前后空格字符串的副本
(5)split():字符串拆分,返回字符串数组
(6)endsWith();是否以指定字符串结尾
startsWith();
StringBuffer类:操作字符串
对字符本身修改,操作效率更高
StringBuffer sBuffer = new StringBuffer("北大青鸟");
toString(): StringBuffer-->String
方法:
append():追加
insert(位置,参数):某个位置插入,参数可以是包括String的任何数据类型
String是不可变对象(操作的是副本)
StringBuffer是可变的字符串
StringBuild
注意:String类的concat()方法只能将String类型的字符串追加到一个字符串后面
StringBuffer类可以将任何类型的值追加到字符串后面
String类,StringBuffer类及StringBuilder类对比
1,String:字符串常量
String类是不可变的对象,在每次对String类型进行改变的时候其实都等同于生成了一个新的String对象,然后指向新的String对象,
所以经常改变内容的字符串最好不要用String类型,因为每次生成对象都会对系统性能产生影响.
2,StringBuffer:字符串变量
StringBuffer是可变的字符串,在每次对StringBuffer对象进行改变时,会对StringBuffer对象本身进行操作,而不是生成新的对象,
再改变对象引用.所以,在字符串对象经常改变的情况下推荐使用StringFuffer类
3,SStringBuilder:字符串变量
和StringBuffer等价,区别在于StringBuffer类是线程安全的,StringBuilder类是单线程的,不提供同步,理论上效率更高.
-==>java.util包
格式化是指日期转换为文本,解析是指文本转换为日期格式Date类 java.util.Date;
//java.text.SimpleDateFormat
格式化输出日期
Date date = new Date(); System.out.println(date); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dString = format.format(date); System.out.println(dString);
Calendar类:操作日期时间
抽象类,java.util.Calendar
用于设置和获取日期/时间数据的特定部分
Calendar类提供一些方法和静态字段来操作日历
方法 说明
int get(int field) 返回给定日历字段的值
MONTH 指示月
DAY_OF_MONTH 指示一个月中某天
DAY_OF_WEEK 指示一个星期中的某天
Calendar calendar = Calendar.getInstance();
calendar.get(Calendar.YEAR) //返回年
calendar.get(Calendar.MONTH)+1 //返回月
calendar.get(Calendar.DAY_OF_MONTH) //返回天
calendar.get(Calendar.DAY_OF_WEEK)-1 //返回星期
System.currentTimeMillis 当前毫秒时间
1 GregorianCalendar 是 Calendar 的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统。 2 boolean isLeapYear(int year) 确定给定的年份是否为闰年。 3 4 GregorianCalendar gcalendar = new GregorianCalendar(); 5 Calendar c = Calendar.getInstance(); 6 boolean flag = gcalendar.isLeapYear(c.get(Calendar.YEAR)); 7 if (flag){ 8 System.out.println(c.get(Calendar.YEAR) + "是闰年"); 9 } else { 10 System.out.println(c.get(Calendar.YEAR) + "不是闰年"); 11 } 12 13 ===> gcalendar.isLeapYear(2012); -->可直接传入年份
实用类(Math,String及Date,Calendar)