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. 前端的UI设计与交互之数据录入篇

    数据录入是获取对象信息的重要交互方式,用户会频繁的增加.修改或删除信息.多种多样的文本录入和选择录入方式帮助用户更加清晰和高效的完成这项体验.设计者应当注意这几点:为初级用户/偶尔访问的用户提供简单易 ...

  2. servlet的执行过程

    第一次访问servlet的过程: 服务器启动:在服务器启动的时候,加载项目,就扫描web.xml文件,获得应用有哪些servlet,url-pattern, 客户端通过URl访问服务器[向服务器发送一 ...

  3. 小白学PYTHON时最容易犯的6个错误,看看你遇到过几个

    最近又在跟之前的同学一起学习python,一起进步,发现很多测试同学在初学python的时候很容易犯一些错误,特意总结了一下.其实这些错误不仅是在学python时会碰到,在学习其他语言的时候也同样会碰 ...

  4. LeetCode --> 771. Jewels and Stones

    Jewels and Stones You're given strings J representing the types of stones that are jewels, and S rep ...

  5. hihocoder [Offer收割]编程练习赛52 D 部门聚会

    看了题目的讨论才会做的 首先一点,算每条边(u, v)对于n*(n+1)/2种[l, r]组合的贡献 正着算不如反着算 哪些[l, r]的组合没有包含这条边(u, v)呢 这个很好算 只需要统计u这半 ...

  6. 循环while do---while for循环

    一.循环结构 (.^▽^) 1.循环不是无休止进行的,满足一定条件的时候循环才会继续,称为"循环条件",循环条件不满足的时候,循环退出 2.循环结构是反复进行相同的或类似的一系列操 ...

  7. 【MySql系列】MySql踩坑系列

    问题一:远程登录报错Host '192.168.181.201' is not allowed to connect to this MySQL server 解决: 问题二:MySql access ...

  8. alpha-咸鱼冲刺day8-紫仪

    总汇链接 一,合照 emmmmm.自然还是没有的. 二,项目燃尽图 三,项目进展 正在进行页面整合.然后还有注册跟登陆的功能完善-- 四,问题困难 数据流程大概是搞定了.不过语法不是很熟悉,然后还有各 ...

  9. C语言第二周作业----分支结构

    一.PTA实验作业 题目1.7-1计算分段函数 本题目要求计算下列分段函数f(x)的值: 注:可在头文件中包含math.h,并调用sqrt函数求平方根,调用pow函数求幂. 1.实验代码 int ma ...

  10. vue2 前端搜索实现

    项目数据少的时候,搜索这样的小事情就要交给咱们前端来做了,重要声明,适用于小项目!!!!! 其实原理很简单,小demo是做搜索市区名称或者按照排名搜索. <div> <input t ...