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. 如何在win10查看wifi密码

    tep1 找到wifi图标 step 2 右键点击打开网络共享中心 没有啦!!

  2. 云计算--网络原理与应用--20171122--STP与HSRP

    简单了解STP 学习HSRP 实验 一.  简单学习STP STP(spanning tree protocol)生成树协议,就是把一个环形的结构改变成一个树形的结构.通过一些算法,在逻辑上阻塞一些端 ...

  3. drbd(四):drbd多节点(drbd9)

    1.drbd多节点简介 在drbd9以前,drbd一直只能配置两个节点,要么是primary/secondary,要么是primary/primary.虽然在这些版本上也能配置第三个节点实现三路节点的 ...

  4. C语言第八次作业

    一.PTA实验作业 题目1:统计一行文本的单词个数 1.本题PTA提交列表 2.设计思路 // 一个非空格和一个空格代表一个单词 char str[1000]: 存放一行文本 定义 I,j=0:用作循 ...

  5. nyoj 韩信点兵

    描述相传韩信才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排.五人一排.七人一排地变换队形,而他每次只掠一眼队伍的排尾就知道总人数了.输入3个非负整数a,b,c ,表示每种队形排尾的人数 ...

  6. PHP环境手动搭建wamp-----Apache+MySQL+PHP

    首先下载分别下载Apache+MySQL+PHP. 然后分别解压到文件夹中. 1.安装Apache 1)检查80端口是否占用 说明:apache软件占用80软件,在计算机中一个端口只能被一个软件占用 ...

  7. 验证码进阶(TensorFlow--基于卷积神经网络的验证码识别)

    本人的第一个深度学习实战项目,参考了网络上诸多牛人的代码,在此谢过,因时间久已,不记出处,就不一一列出,罪过罪过. 我的数据集是我用脚本在网页上扒的,标签是用之前写的验证码识别方法打的.大概用了400 ...

  8. Python基础学习篇章三

    一. Python对象类型 1. 对象是Python最基本的概念,一个Python程序可以分解为模块.语句.表达式.和对象.它们的关系如下:(1)程序由模块构成 (2)模块包含语句 (3)语句包含表达 ...

  9. Linq 生成运算符 Empty,Range,Repeat

    var c1 = Enumerable.Empty<string>();//c1.Count=0 , );//{9527,9528,9529,......9536} , );//{9527 ...

  10. vue-cli webpack3扩展多模块打包

    场景 在实际的项目开发中会出现这样的场景,项目中需要多个模块(单页或者多页应用)配合使用的情况,而vue-cli默认只提供了单入口打包,所以就想到对vue-cli进行扩展 实现 首先得知道webpac ...