码迷,mamicode.com
首页 > 编程语言 > 详细

Java基础学习笔记【05】Math、Random、System、时间格式化、多线程

时间:2015-10-08 19:58:05      阅读:286      评论:0      收藏:0      [点我收藏+]

标签:

  1. Math类主要封装了数学的计算公式
    常见方法
    方法描述
    static int abs(int a)获取绝对值
    static double ceil(double a)向上取整
    static double floor(double a)向下取整
    static float max(float a,float b)
    获取两个数值中的最大值
    static double scalb(double a,int b)
    a的b次幂
    static double random()产生随机数,线程安全同步
    static double sqrt(double a)
    正平方根
    static int round(float a)四舍五入

  2. Random
    (1)用于产生随机数的类
    (2)构造方法:
    1
    2
    Random() //默认种子,每次产生的随机数不同
    Random(long seed) //指定种子,每次种子相同,随机数就相同
    (3)成员方法:
    方法描述
    int nextInt()返回int范围内的随机数
    int nextInt(int n)返回[0,n)范围内的随机数

  3. System(掌握)
    (1)系统类,提供了一些有用的字段和方法
    (2)成员方法
    方法描述
    static void gc()运行垃圾回收器
    static void exit(int status)退出jvm
    static long currentTimeMillis()获取当前时间的毫秒值
    static void arraycopy
    (Object src,int srcPos,Object dest,int destPos,int length)
    数组复制

  4. 时间日期的格式化:
    1
    2
    3
    4
    import java.util.Date;
    import java.text.SimpleDateFormat;
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
    string currentTime=df.format(new Date());
  5. 获取时间操作
    1
    Calendar c = Calendar.getInstance();//可以对每个时间域单独修改,获取当前系统时间
    1
    2
    3
    4
    5
    6
    7
    int year = c.get(Calendar.YEAR);
    int month = c.get(Calendar.MONTH);
    int date = c.get(Calendar.DATE);
    int hour = c.get(Calendar.HOUR_OF_DAY);
    int minute = c.get(Calendar.MINUTE);
    int second = c.get(Calendar.SECOND);
    System.out.println(year + "/" + month + "/" + date + " " +hour + ":" +minute + ":" + second);
  6. String转换为Date时间
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
    java.util.Date time=null;
    try
    {
       time= sdf.parse(sdf.format(new Date()));
    }
    catch(ParseException e)
    {
       e.printStackTrace(); 
    }
  7. 正则表达式匹配
    1
    2
    3
    4
    String regex = "[0-9]+"//书写正则表达式
    Pattern p = Pattern.compile(regex); //加载到编译模式
    Matcher m = p.matcher(s); //匹配
    boolean b = m.matches(); //是否匹配
  8. String字符串对正则表达式的支持
    1
    2
    3
    String input = "028-10234567";
    string regex = "[0]{1}\\d{2}-[1-9]{1}\\d{7}|[0]{1}\\d{3}-[1-9]{1}\\d{6}";
    boolean b = input.matches(regex);
  9. 当前线程获取
    1
    Thread t=Thread.currentThread( ) //获取当前线程对象
    创建线程的两种方法
    (1)继承Thread类,重写父类的run方法,资源不能共享,也不能继承其他类
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    class Ticket1 extends Thread
        int num = 50;  
        public Ticket1(String name)
        {
           super(name);
        } //重写父类的构造函数
     
        public void run()
        {
            for (int i = 0; i < 200; i++) {
            if(num >0)
            {
               System.out.println(getName()+"卖出第" +num-- +"张");
            }
        
    }
    启动线程:
    1
    new Ticket1("A").start();
    (2)实现接口Runnable,重写run方法,资源共享,灵活可扩展
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    class Ticket2 extends Object implements Runnable
    {
        int num = 50;
        @Override
        public void run()
        {
             for (int i = 0; i < 200; i++)
             {
                if(num >0)
                {
                  System.out.println(Thread.currentThread().getName()+"卖出第" +num-- +"张");
                }
             }
        }
    }
    启动线程:
    1
    2
    Runnable target = new Ticket2();
    new Thread(target,"A").start();//多态子类指向父类接口
  10. 后台线程:处于后台运行,任务是为其他线程提供服务,要是前台线程都死亡的话后台线程自动结束
    设置后台线程:
    1
    Thread对象.setDaemon(true);
    判断是否是后台线程:使用Thread对象的isDaemon()方法;
  11. 不是的话可以start()启动,但是线程一旦挂了就不能star()
    1
    boolean isAlive()//来判断线程是否活的
  12. 停止线程:
    1
    2
    Thread t =new Thread(new Join());
    t.join() //强制执行线程,执行到这里的话,等待t执行完主线程才会执行
  13. Thread对象设置和获得优先级。
    1
    2
    setPriority(int x)
    getPriority()
    1
    2
    3
    MAX_PRIORITY    //值是10
    MIN_PRIORITY    //值是1
    NORM_PRIORITY   //值是5(主方法默认优先级)
    线程的优先级更高指的是,cpu优先执行的次数更多
  14. 暂停线程,就绪等待
    1
    Thread.yield() //暂停该线程让别的线程先执行,然后这个线程进入就绪状态
  15. 操作同一个资源,而且执行多个操作在多线程中,就要使用线程同步来实现资源的调用,保证不会错误的执行
    (1)使用同步代码块
    ,还需要一个同步监听对象obj,也可以使用类名.class 类的字节码唯一性
    1
    2
    3
    4
    synchronized(obj)
        同步代码  
    }
    (2)使用同步方法,使用synchronized去修饰,需要同步的方法
  16. 使用同步线程一定要注意监听对象的选择确定,一般不可变的在调用该方法的作用域内,new创建的一般不行因为可变的



Java基础学习笔记【05】Math、Random、System、时间格式化、多线程

标签:

原文地址:http://www.cnblogs.com/lindongdong/p/3addb409865c6e3327504299225df30c.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!