Java中的常用类
1.Math : 位于java.lang包中
(1)Math.PI:返回一个最接近圆周率的
(2)Math.abs(-10):返回一个数的绝对值
(3)Math.cbrt(27):返回一个数的立方根
(4)Math.sqrt(16):返回一个数的平方根
(5)Math.max(10, 20)/Math.min(10, 20):最大值,最小值
(6)Math.pow(20, 3):求某个数的几次幂
(7)Math.floor(12.5):传入一个double的值,返回一个小于指定数字的整数
(8)Math.ceil(12.5):传入一个double的值,返回一个大于指定数字的整数
(9)Math.round(12.7) : 四舍五入(如果传入double返回long,传入float返回int)
(10)Math.rint(10.5) :返回最接近参数的一个整数,如果10.5和10与11同时接近,返回偶数。
(11)Math.random() : 回[0.0,1.0)的double类型的随机数。
 
2.Date : 位于java.util包中
(1)实例化: //空参构造
Date date = new Date();
//传入一个long类型的时间戳,取到制定时间
//date.getTime():取到一个时间的时间戳,从0时区,1970年1月1日0:0:0到当前时间的毫米数。
Date date2 = new Date(date.getTime());
(2)setTime() :传入一个长整型(时间戳),重新设置时间。
(3)compareTo(data): 比较两个日期,两者相等时候返回0。调用对象在指定日期之前则返回负数。调用对象在指定日期之后则返回正数。
(4)equals():比较两个日期是否相等。
(5)date.toString():转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 。
(6)before():检测一个时间是否在指定时间之前。
(7)after(): 检测一个时间是否在制定时间之后。
 
3.SimpleDateFormat 格式化日期
实例化对象时传入格式化参数,用字母代表对应部分
方法:
format():用于传入一个Date类型的参数,并返回格式化之后的字符串。
parser():将字符串格式的时间转换成Date类型, 要求传入的字符串格式必须与实例化时的格式完全一致。
toPattern():返回描述此日期格式的模式字符串。
 
     //空参构造
Date date = new Date();
//SimpleDateFormat 格式化日期
SimpleDateFormat sf = new SimpleDateFormat("y年M月d号 HH:mm:ss E");
String format = sf.format(date2);
System.out.println(format);

4.Calendar 日历类
(1)calendar是一个抽象类,不能通过new关键字拿到对象,必须使用Calendar.getInstance()拿到日历类对象。
Calendar instance = Calendar.getInstance();
(2)add():add(instance.get(instance.MONTH), 2) 增加2个月。
(3)getTime():Date time = instance.getTime() 返回一个日期对象
(4)get(): instance.get(instance.MONTH) 返回当前要查的月份

 

5.Random 随机数类
构造: 空参构造:new Random();
带参构造:new Random(seed):只要seed(种子数)相同,那么在相同次数取到的随机数肯定相同,这是一个伪随机数。
nextInt() :随机获得一个整数。
nextInt(n) : 随机获得0-n的随机数。
nextDouble():随机获得一个0.0-1.0的随机数。
例:从95到102取随机数: random.nextInt(8)+95;
 
补充:UUID类


enum 枚举
枚举类是一种特殊的类,里面的值全部都是静态常量,每一个枚举值都相当于本类对象,只不过对象的值就是对象名。
enum colors {
BLUE,YELLOW,RED,GREEN;
}
实际上每一个枚举值都是一个本类对象,所以声明一个枚举值.相当于执行了:public static final XXX = new Color();
枚举类的是构造函数必须是私有化的(private),在声明枚举值时自动调用。
在枚举类中,枚举值必须在所以代码的第一行,其他所有代码必须放在枚举值的后面,枚举值以逗号分割,以分号结束。
 
value():获取枚举类中所有的枚举值,返回的是枚举类的数组。
toString():在使用的时候自动调用,也可重写
 enum Person {
    p1("张三", 18), p2("李四", 22), p3("王五", 13);
    private String name;
     private int age;
    private Person(String name, int age) {
     this.name = name;
     this.age = age;
     }
     @Override
     public String toString() {
     return this.name+"-"+this.age;
     }
    }
    System.out.println(Person.p1);

单例模式
单例模式其定义是单例对象的类只能允许一个实例存在。
【1】静态常量单例模式(饿汉式)
设计思路:
1.将构造函数私有化,确保在类的外部不能使用new关键字自行创建对象。
2.在类的内部实例化一个对象,并通过静态方法返回。
3.属性要是静态的,否则会实例化多个属性,不属于单例模式。
优点:线程安全。
缺点:在类加载时就实例化对象,提前占用系统资源。
class singLeton{

    private static final singLeton sing = new singLeton();

    private singLeton() {
System.out.println("单例模式");
} public static singLeton getInstance() {
return sing;
} }
【2】懒汉式单例模式
    优点:解决了饿汉式单例模式一加载就提前占用资源的问题。
    缺点:线程不安全。
class singLeton{

    private static singLeton sing = null;

    private singLeton() {
System.out.println("单例模式");
} public static singLeton getInstance() { if (sing==null) {
sing = new singLeton();
} return sing;
}
}
 【3】线程锁的懒汉式单例模式
  优点:使用synchroized关键字对方法进行加锁,将一个方法或者代码块加锁,同一时间只允许一个线程访问,确保懒汉式单例可以线程安全。
  缺点:效率低下。
class singLeton{

    private static singLeton sing = null;

    private singLeton() {
System.out.println("单例模式");
} public static synchronized singLeton getInstance() { if (sing==null) {
sing = new singLeton();
} return sing;
}
}
【4】双层加锁的懒汉式单例模式
  只有第一次sing为null的时候才进行线程锁,当后续sing不为null的时候就无需调用线程锁,可以允许多个线程同时拿走sing。
class singLeton{

    private static singLeton sing = null;
private singLeton() {
System.out.println("单例模式");
}
public static singLeton getInstance() {
System.out.println(singLeton.class);
if(sing==null){
synchronized (singLeton.class) {
if (sing==null) {
sing = new singLeton();
}
}
}
return sing;
}
}
【5】静态内部类单例模式【推荐使用】
  将饿汉式的静态属性放到静态内部类中,getInstance()方法返回静态内部类的sing。解决了饿汉式提前占用资源的问题,解决了懒汉式线程不安全的问题。
class singLeton{

    private static class Singletion1{
private static final singLeton sing = new singLeton();
} private singLeton() {
System.out.println("单例模式");
} public static singLeton getInstance() {
return Singletion1.sing;
} }

Java基础学习(五)-- Java中常用的工具类、枚举、Java中的单例模式之详解的更多相关文章

  1. Java基础学习总结(49)——Excel导入导出工具类

    在项目的pom文件中引入 <dependency> <groupId>net.sourceforge.jexcelapi</groupId> <artifac ...

  2. java基础课程笔记 static 主函数 静态工具类 classpath java文档注释 静态代码块 对象初始化过程 设计模式 继承 子父类中的函数 继承中的构造函数 对象转型 多态 封装 抽象类 final 接口 包 jar包

    Static那些事儿 Static关键字 被static修饰的变量成为静态变量(类变量) 作用:是一个修饰符,用于修饰成员(成员变量,成员方法) 1.被static修饰后的成员变量只有一份 2.当成员 ...

  3. java中常用的工具类(一)

    我们java程序员在开发项目的是常常会用到一些工具类.今天我汇总了一下java中常用的工具方法.大家可以在项目中使用.可以收藏!加入IT江湖官方群:383126909 我们一起成长 一.String工 ...

  4. Java基础学习笔记十四 常用API之基本类型包装类

    基本类型包装类 Java中有8种基本的数据类型,可是这些数据是基本数据,想对其进行复杂操作,变的很难.怎么办呢?在实际程序使用中,程序界面上用户输入的数据都是以字符串类型进行存储的.而程序开发中,我们 ...

  5. java中常用的工具类(三)

    继续分享java中常用的一些工具类.前两篇的文章中有人评论使用Apache 的lang包和IO包,或者Google的Guava库.后续的我会加上的!谢谢支持IT江湖 一.连接数据库的综合类       ...

  6. java中常用的工具类(二)

    下面继续分享java中常用的一些工具类,希望给大家带来帮助! 1.FtpUtil           Java   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...

  7. Java基础进阶:APi使用,Math,Arrarys,Objects工具类,自动拆装箱,字符串与基本数据类型互转,递归算法源码,冒泡排序源码实现,快排实现源码,附重难点,代码实现源码,课堂笔记,课后扩展及答案

    要点摘要 Math: 类中么有构造方法,内部方法是静态的,可以直接类名.方式调用 常用: Math.abs(int a):返回参数绝对值 Math.ceil(double a):返回大于或等于参数的最 ...

  8. Android中常用开发工具类—持续更新...

    一.自定义ActionBar public class ActionBarTool { public static void setActionBarLayout(Activity act,Conte ...

  9. JS中常用的工具类

    一.日期工具类 /** * 日期时间工具类 * @type {{dateFormat}} */ var DateTime = function () { var patterns = { PATTER ...

随机推荐

  1. 图解script的三种加载方式 异步加载顺序

    摘录如下: 可以很清晰的看出: <script>: 脚本的获取和执行是同步的.此过程中页面被阻塞,停止解析. <script defer = "defer"> ...

  2. Leetcode 4——Partition List

    Problems: Given a linked list and a value x, partition it such that all nodes less than x come befor ...

  3. 用Python登录好友QQ空间点赞

    记得之前跟我女票说过,说要帮她空间点赞,点到999就不点了.刚开始还能天天记得,但是后来事情一多,就难免会忘记,前两天点赞的时候忽然觉得这样好枯燥啊,正好也在学Python,就在想能不能有什么方法能自 ...

  4. 高级软件工程第三次作业 赵坤&黄亦薇

    0.小组成员 赵坤2017282110261 黄亦薇201728210260 1.项目Github地址  https://github.com/zkself/homework3 PS:建议使用chro ...

  5. 2017-2018-1 Java演绎法 小组会议及交互汇总

    第一周会议 今天我们小组开展了第一次团队例会活动.我们小组将<构建之法>分为了六个部分并由六位成员先分别学习并向组长上传学习收获,这次的活动内容便是 交流前两周小组成员学习阅读<构建 ...

  6. 201621123062《java程序设计》第九周作业总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 思维导图1:(对集合部分做了一些改动和细化) 思维导图2:(泛型) 1.2 选做:收集你认为有用的代码片段 代 ...

  7. 创建带缩进的XML

    from xml.etree import ElementTree as ET from xml.dom import minidom root = ET.Element('}) son=ET.Sub ...

  8. 过滤器Filter与监听器Listener

    过滤器Filter 过滤器也是一种servlet   它也可以对用户的请求进行处理  , 但是他所做的处理,只是一些轻量级的处理.Fileter就好像jsp页面与servlet之间的一道关卡,如果这个 ...

  9. bzoj千题计划280:bzoj4592: [Shoi2015]脑洞治疗仪

    http://www.lydsy.com/JudgeOnline/problem.php?id=4592 注意操作1 先挖再补,就是补的范围可以包含挖的范围 SHOI2015 的题 略水啊(逃) #i ...

  10. UTF-8 UTF-16 UTF-32 最根本的区别?

    昨天看书的时候突然发现UTF-16 我好像还没见过这个东西  也可能忘记了 反正现在对自己科普一下吧 最根本的区别 UTF-32 把所有的字符都用32bit -- 4个字节 来表示 UTF-16 和 ...