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. Spring MVC的handlermapping之SimpleUrlHandlerMapping初始化

    前面信息同BeanNameUrlHandlerMapping,这里不再过多分析,详情请看 :Spring MVC的handlermapping之BeanNameUrlHandlerMapping初始化 ...

  2. 用java理解程序逻辑小结

    1.Java常见的注释有哪些,语法是怎样的? 1)单行注释用//表示,编译器看到//会忽略该行//后的所文本 2)多行注释/* */表示,编译器看到/*时会搜索接下来的*/,忽略掉/* */之间的文本 ...

  3. Dynamics 365 for CRM:CRM与ADFS安装到同一台服务器,需修改ADFS服务端口号

    CRM与ADFS安装到同一台服务器时,出现PluginRegistrationTool 及 CRM Outlook Client连接不上,需要修改ADFS的服务端口号,由默认的808修改为809: P ...

  4. React demo:express、react-redux、react-router、react-roter-redux、redux-thunk(一)

    近期终于把之前留下的坑填上了(说了好久的要网站重写,总算是写完了),不过最后的在线添加文章,功能虽然做了,后台没把接口加上,实在是没精力去折腾了,公司又有事要忙,现在把从0开始到完成的一个思路来写一下 ...

  5. 20165226 2017-2018-3 《Java程序设计》第5学习总结

    20165226 2017-2018-3 <Java程序设计>第5周学习总结 教材学习内容总结 第七章 内部类与异常类 匿名类创建对象: new Bank() { 匿名类的类体 }: 异常 ...

  6. 【前端】wangEditor(富文本编辑器) 简易使用示例

    转载请说明作者或者注明出处,谢谢 说到前端常用的编辑器,自然也少不了富文本编辑器(RichText Editor) 笔者在此之前也看了一些相关的在线编辑器,其中包括了当百度搜索“富文本编辑器”字样时出 ...

  7. SpagoBi开发示例——员工离职人数统计

    1.开发工具:SpagoBIStudio_5.1,操作界面和使用方法和eclipse没差 安装参考:http://www.cnblogs.com/starlet/p/4778334.html   2. ...

  8. 福州大学软件1715|W班-助教卞倩虹个人简介

    各位好,我是卞倩虹 本科阶段的专业是网络工程,通过学校的学习我掌握了基础的网络组网配置技术,常常在机房配置路由器和交换机等相关设备.后来我接触了软件编程,在深入了解和学习后编程语言后,自主开发了一些项 ...

  9. win7如何以管理员身份运行命令提示符(cmd)

    1.进入到: C:\Windows\System32 2.找到cmd.exe文件 3.右键单击 ,选择 以管理员身份运行.

  10. 2017-2018-1 我爱学Java 第六七周 作业

    团队六七周作业 完善版需求规格说明书 制定团队编码规范 数据库设计 后端架构设计 TODOList 参考资料 完善版需求规格说明书 <需求规格说明书>初稿不足之处: 1.开发工具写错 2. ...