首页 > 代码库 > 实用类(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)