J-14 常见对象

基本类型包装类
正则表达式
Math类
Random类
BigInteger类
BigDecimal类
Date类
Calendar类

基本类型包装类

概述

为了对基本数据类型进行更多、更方便的操作,JAVA就针对每一种基本数据类型提供了对应的包装类型。

基本数据类型包类型
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

常用功能:用于基本数据类型与字符串之间的转换。

Integer类

概述

Integer 类在对象中包装了一个基本类型 int 的值。
该类提供了多个方法,能在 int 类型和 String 类型之间互相转换,还提供了处理 int 类型时非常有用的其他一些常量和方法。

构造方法

  • public Integer(int value)
  • public Integer(String s)

int类型与String类型的互相转换

  • int -- String
    推荐:String.valueOf(number);

      public class IntegerDemo {
      public static void main(String[] args) {
      	// int -- String
      	int number = 100;
      	// 方式1
      	String s1 = "" + number;
      	System.out.println("s1:" + s1);
      	// 方式2,推荐。
      	String s2 = String.valueOf(number);
      	System.out.println("s2:" + s2);
      	// 方式3
      	// int -- Integer -- String
      	Integer i = new Integer(number);
      	String s3 = i.toString();
      	System.out.println("s3:" + s3);
      	// 方式4
      	// public static String toString(int i)
      	String s4 = Integer.toString(number);
      	System.out.println("s4:" + s4);
      	}
      }
    
  • String -- int
    推荐:Integer.parseInt(s);

       String s = "100";
      // 方式1
      // String -- Integer -- int
      Integer ii = new Integer(s);
      // public int intValue()
      int x = ii.intValue();
      System.out.println("x:" + x);
      //方式2
      //public static int parseInt(String s)
      int y = Integer.parseInt(s);
      System.out.println("y:"+y);
    

成员方法

  • 常用的基本进制转换
public static String toBinaryString(int i)
public static String toOctalString(int i)
public static String toHexString(int i)
  • 十进制到其他进制。radix是可选进制数,取值[2,36]
public static String toString(int i,int radix)
  • 其他进制到十进制
public static int parseInt(String s,int radix)

JDK5 新特性

  • 自动装箱:把基本类型转换为包装类型

  • 自动拆箱:把包装类型转换为基本类型

  • JDK1.5以后,简化了定义方式。
    Integer x = new Integer(4);可以直接写成
    Integer x = 4;//自动装箱。
    x = x + 5;//自动拆箱。通过intValue方法

  • 注意:
    在使用时,Integer x = null;
    上面的代码就会出现NullPointerException,空指针异常。
    建议判断是否为null,再使用。

  • 数据缓冲池
    Integer的数据直接赋值,若在-128到127之间,会直接从缓冲池获取数据。
    [-128,127]是数据缓冲池,针对范围内的数据,每次不创建新的空间。

Character类

概述

Character 类在对象中包装一个基本类型 char 的值。
此外,该类提供了几种方法,以确定字符的类别(小写字母,数字,等等),并将字符从大写转换成小写,反之亦然。

构造方法

public Character(char value)

成员方法

  • public static boolean isUpperCase(char ch)
    判断给定的字符是否为大写字符
  • public static boolean isLowerCase(char ch)
    判断给定的字符是否为小写字符
  • public static boolean isDigit(char ch)
    判断给定的字符是否为数字字符
  • public static char toUpperCase(char ch)
    把给定的字符转换为大写字符
  • public static char toLowerCase(char ch)
    把给定的字符转换为小写字符

正则表达式REGEX

概述

是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。其实就是一种规则。有自己特殊的应用。

规则

  • 字符:
x字符x
\\反斜线字符
\n新行(换行)符 ('\u000A')
\r回车符('\u000D')
- 字符类:
[abc]a、b或c(简单类)
[^abc]任何字符,除了a、b或c(否定)
[a-zA-Z]a到z或A到Z,两头的字母包括在内(范围)
[0-9]0到9的字符都包括
- 预定义字符类
.任何字符
\d数字[0-9]
\w单词字符:[a-zA-Z_0-9]
[0-9]0到9的字符都包括。在正则表达式中里面由这些组成单词
- 边界匹配器
^行的开头
$行的结尾
\b单词边界,不是单词字符的地方
- Greedy 数量词
X?一次或无
X*零次或多次
X+一次或多次
X{n}恰好n次
X{n,}至少n次
X{n,m}至少n次,但不超过m次
#### 应用 - 判断功能 String类的public boolean matches(String regex) - 分割功能 String类的public String[] split(String regex) (注意:硬盘上的路径,用\\\替代\,分割时,规则为\\\\\\\ ) - 替换功能 String类的public String replaceAll(String regex,String replacement) 使用给定的replacement 替换词字符串所有匹配给定的正则表达式的子字符串。 - 获取功能 Pattern和Matcher类的使用 - Pattern类 正则表达式的编译表示形式。 指定为字符串的正则表达式必须首先被编译为此类的实例。然后,可将得到的模式用于创建 Matcher 对象,依照正则表达式,该对象可以与任意字符序列匹配。执行匹配所涉及的所有状态都驻留在匹配器中,所以多个匹配器可以共享同一模式。 模式与匹配器的使用顺序:
	     Pattern p = Pattern.compile("a*b");//a多次,b一次
	     Matcher m = p.matcher("aaaaab");//待匹配的字符串aaaaab
	     boolean b = m.matches();//判断是否相同

- Matcher类

通过解释 Pattern 对 character sequence 执行匹配操作的引擎。
注意:先find(),后group();

Math类

概述

Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。

成员变量

public static final double PI

public static final double E

成员方法

public static int abs(int a)

绝对值

public static double ceil(double a)

向上取整

public static double floor(double a)

向下取整

public static int max(int a,int b)

最大值

public static int max(int a,int b)

最小值

public static double pow(double a,double b)

a的b次幂

public static double random()

随机数[0.0,1.0)

public static int round(float a) 参数为double的自学

四舍五入

public static double sqrt(double a)

正平方根

Random类

概述

此类用于产生随机数。
如果用相同的种子创建两个 Random 实例,则对每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列。
很多应用程序会发现 Math.random() 方法更易于使用。

构造方法

public Random()

使用默认种子,是当前时间的毫秒值

public Random(long seed)

给出固定的种子。给定种子后,每次得到的随机数是相同的。

成员方法

public int nextInt()

返回的是int范围内的随机数

public int nextInt(int n)

返回的是[0,n)范围内的随机数

System类

概述

System 类包含一些有用的类字段和方法。它不能被实例化。

方法

public static void gc()

运行垃圾回收器,不常用

  • 垃圾回收机制:
    System.gc()可用于垃圾回收。当使用System.gc()回收某个对象所占用的内存之前,通过要求程序调用适当的方法来清理资源。在没有明确指定资源清理的情况下,Java提高了默认机制来清理该对象的资源,就是调用Object类的finalize()方法。finalize()方法的作用是释放一个对象占用的内存空间时,会被JVM调用。而子类重写该方法,就可以清理对象占用的资源,该方法有没有链式调用,所以必须手动实现。
    从程序的运行结果可以发现,执行System.gc()前,系统会自动调用finalize()方法清除对象占有的资源,通过super.finalize()方式可以实现从下到上的finalize()方法的调用,即先释放自己的资源,再去释放父类的资源。
    但是,不要在程序中频繁的调用垃圾回收,因为每一次执行垃圾回收,jvm都会强制启动垃圾回收器运行,这会耗费更多的系统资源,会与正常的Java程序运行争抢资源,只有在执行大量的对象的释放,才调用垃圾回收最好

public static void exit(int status)

终止当前正在运行的java虚拟机。参数用作状态码;根据惯例,非 0 的状态码表示异常终止。

public static long currentTimeMillis()

返回以毫秒为单位的当前时间。返回:
当前时间与协调世界时 1970 年 1 月 1 日午夜之间的时间差(以毫秒为单位测量)。
用法:统计程序运行时间

public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)

注意:此为命名不规范的方法,但出现于1.0,所以没有改。
从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。

BigInteger类

概述

可以让超过Integer范围内的数据进行运算

构造方法

public BigInteger(String val)

成员方法

public BigInteger add(BigInteger val)

public BigInteger subtract(BigInteger val)

public BigInteger multiply(BigInteger val)

public BigInteger divide(BigInteger val)

public BigInteger[] divideAndRemainder(BigInteger val)

返回的是商和余数的数组。

BigDecimal类

概述

由于在运算的时候,float类型和double很容易丢失精度(float、double数据存储与int类型数据存储不同)。所以,为了能精确的表示、计算浮点数,Java提供了BigDecimal。
不可变的、任意精度的有符号十进制数。

构造方法

public BigDecimal(String val)

成员方法

public BigDecimal add(BigDecimal augend)

public BigDecimal subtract(BigDecimal subtrahend)

public BigDecimal multiply(BigDecimal multiplicand)

public BigDecimal divide(BigDecimal divisor)

public BigDecimal divide(BigDecimal divisor,int scale,int roundingMode)

scale ,商为几位;roungdingMode,舍入模式(8种)

Date类

概述

类 Date 表示特定的瞬间,精确到毫秒。

构造方法

public Date()

分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒)。

public Date(long date)

分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。

成员方法

public long getTime()

获取时间,以毫秒为单位

public void setTime(long time)

设置时间,以毫秒为单位

  • 从Date得到一个毫秒值: getTime()
  • 把毫秒值转换成Date:构造方法,setTime(long time)

DateFormat类

概述

格式化日期: Date -- String

 public final String format(Date date)

解析日期: String -- Date

public Date parse(String source)

DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。
是抽象类,所以使用其子类SimpleDateFormat

SimpleDateFormat构造方法

public SimpleDateFormat() 默认模式

public SimpleDateFormat(String pattern) 给定模式

  • 日期和时间模式
    日期和时间格式由日期和时间模式 字符串指定。在日期和时间模式字符串中,未加引号的字母 'A' 到 'Z' 和 'a' 到 'z' 被解释为模式字母,用来表示日期或时间字符串元素。文本可以使用单引号 (') 引起来,以免进行解释。"''" 表示单引号。所有其他字符均不解释;只是在格式化时将它们简单复制到输出字符串,或者在解析时与输入字符串进行匹配。

  • 对应模式
    年Y
    月M
    日d
    时H
    分m
    秒s

    public SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");

成员方法

public final String format(Date date)

日期格式化成字符串

public Date parse(String source)

字符串解析成日期

制作工作类 DateUtil

Calendar类

概述

Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。

成员方法

public static Calendar getInstance()

Calendar rightNow = Calendar.getInstance();//右边为子类对象,多态

public int get(int field)

返回给定日历字段field的值。
注意:MONTH字段从0开始。

public void add(int field,int amount)

根据日历的规则,为给定的日历字段添加或减去指定的时间量。例如,要从当前日历时间减去 5 天,可以通过调用以下方法做到这一点:

add(Calendar.DAY_OF_MONTH, -5)。 

public final void set(int year,int month,int date)

posted @ 2015-10-10 11:25  小懒66  阅读(183)  评论(2编辑  收藏  举报