Javaオブジェクト指向(IX)

のランダムな一般的に使用されるクラス

ランダムクラスjava.utilパッケージが配置され、それは主に、擬似乱数を生成するために使用されます

ランダムクラス種子乱数アルゴリズムのような起源は、それが計算し、乱数発生部から独立している疑似乱数を生成します

ランダムなインスタンスを作成する場合、種子のない数は、にないであろう場合に、現在時刻算出される擬似乱数を生成するシード番号として

同じ周波数で同じランダムシード、及び擬似乱数が同一で生成

コンストラクタ

// 创建一个新的随机数生成器。 
Random() 

// 使用单个 long 种子创建一个新的随机数生成器。 
Random(long seed) 

// 相同种子生成的随机数是一样的

一般的な方法

// 返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值
int nextInt() 

// 返回一个伪随机数,它是取自此随机数生成器序列的、在 [0,n) 之间均匀分布的 int 值。
int nextInt(int n) 

// 返回下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 和 1.0 之间均匀分布的 double 值 
double nextDouble() 

// 返回下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 和 1.0 之间均匀分布的 float 值
float nextFloat() 

// 返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的 boolean 值
boolean nextBoolean() 

// 生成随机字节并将其置于用户提供的 byte 数组中
void nextBytes(byte[] bytes) 

// 返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的 long 值   
long nextLong() 

// 使用单个 long 种子设置此随机数生成器的种子
void setSeed(long seed) 

例1:

Random r = new Random();
System.out.println(r.nextDouble());
System.out.println(r.nextBoolean());
System.out.println("-> " + r.nextInt());

System.out.println("---------------");

// 相同的种子,生成的随机数是一样
Random r2 = new Random(10);
Random r3 = new Random(10);
System.out.println("-> " + r2.nextInt()); // -1157793070
System.out.println("-> " + r3.nextInt()); // -1157793070

// 生成34到179之间的随机数 : 34 + [0 145)
System.out.println(r.nextInt(145) + 34);

例2:UUID

// UUID:通用唯一识别符
// 在一台机器 上生成 的数字
// 当前的时间,跟当前电脑网卡 生成一段字符
String uuid = UUID.randomUUID().toString();
System.out.println(uuid);

例3:認証コード

// 生成验证码
// 5位的随机数 UUID生成的是16进制
String res = UUID.randomUUID().toString();
System.out.println(res);
res = res.substring(0, 5);
System.out.println(res);
System.out.println("--------------------");

String str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
str = str + str.toLowerCase();
str += "0123456789";
System.out.println(str);

System.out.println(str.length());
// 从所有的字符当中随机生成5个出来
// 随机取5个出来
// 每取出一个结果,在原来的基础 上面进行拼接
StringBuilder sb = new StringBuilder(5);
for (int i = 0; i < 5; i++) {
    // 角标要随机的值 (0 62:字符串的长度)
    int index = new Random().nextInt(str.length());
    char ch = str.charAt(index);
    sb.append(ch);
}

System.out.println(sb);

の日一般的に使用されるクラス

私たちは、従業員の年齢とエントリーint型の日付を定義し、前に文字列が定義されています。

class Employee {
    int age;
    String hireDate;
}

だから、年々、年齢を改正しなければならない、またはサービスの従業員の長さを計算するために便利ではありません。日付タイプを提供に特化したJava。

コンストラクタ

// 使用当前日期和时间来初始化对象(精确到毫秒)。
Date()

// 第二个构造函数接收一个参数,该参数是从1970年1月1日 00:00:00 起的毫秒数。
Date(long date) 

例えば、現在の日付と時刻を取得します

// 创建 一个日期对象
Date date = new Date();
System.out.println(date);


// 获取当前时间的毫秒数
long curTime = System.currentTimeMillis();
// 把一个毫秒值 转成日期类型
Date date2 = new Date(curTime);
System.out.println(date2);

実際には、コードの二つ以上の二枚が同じで、データ()のソースを見て、本質はDateオブジェクトを作成するために、現在の時刻システムのミリ秒数を使用することです

public Date() {
    this(System.currentTimeMillis());
}

日付の比較

// 测试此日期是否在指定日期之后
boolean after(Date when) 

// 测试此日期是否在指定日期之前
boolean before(Date when) 

// 比较两个日期的顺序
int compareTo(Date anotherDate) 

// 比较两个日期的相等性
boolean equals(Object obj) 

たとえば、

// 创建 一个日期对象
Date date = new Date(1564387266239L);       // 毫秒数大 时间迟
Date date2 = new Date(1564211606445L);      // 毫秒数小 时间早
System.out.println(date);                   // Mon Jul 29 16:01:06 GMT+08:00 2019
System.out.println(date2);                  // Sat Jul 27 15:13:26 GMT+08:00 2019

System.out.println(date.before(date2));     // false
System.out.println(date.after(date2));      // true
System.out.println(date.compareTo(date2));  // 1
System.out.println(date.equals(date2));     // false

ミリ秒単位で時間値を取得し、設定:日付と変換ミリ秒

long getTime() 
void setTime(long time)  

たとえば、

// 创建 一个日期对象
Date date = new Date();
Date date2 = new Date();

long time = date.getTime();
System.out.println(time);

date2.setTime(1564387266239L);
// 输出的字符串不符合中文习惯
System.out.println(date2);
// toLocaleString 已经过时了,不建议使用,这里暂时使用
System.out.println(date2.toLocaleString());     

日付形式

作成日付の書式設定オブジェクト:

// 获取日期和时间使用 SHORT 风格的默认日期/时间格式器
static DateFormat getInstance()  

// 获取日期和时间使用 默认(DEFAULT) 风格的日期/时间格式器
static DateFormat getDateTimeInstance()  

// 获取日期和时间使用 给定日期和时间格式化风格的日期/时间格式器
static DateFormat getDateTimeInstance(int dateStyle, int timeStyle)

// 获取使用 默认(DEFAULT) 风格的日期格式器
static DateFormat getDateInstance() 

// 获取使用 给定格式化风格的日期格式器
static DateFormat getDateInstance(int style) 

// 获取使用 默认(DEFAULT) 风格的时间格式器
static DateFormat getTimeInstance() 

// 获取使用 给定格式化风格的时间格式器
static DateFormat getTimeInstance(int style) 

たとえば、

Date date = new Date();
System.out.println(date);
System.out.println(date.toLocaleString());
System.out.println("------------日期格式化------------");

// 获取为日期和时间使用 SHORT 风格的默认日期/时间格式器
DateFormat df1 = DateFormat.getInstance();
// 相当于 : DateFormat df1 = DateFormat.getDateTimeInstance
// (DateFormat.SHORT, DateFormat.SHORT);

// 对指定的日期进行格式化: Date -> String
String time = df1.format(date);
System.out.println("SHORT 风格:   " + time);

// 获取为日期和时间使用 默认(DEFAULT) 风格的日期/时间格式器
DateFormat df2 = DateFormat.getDateTimeInstance();
// 相当于 : DateFormat df2 = DateFormat.getDateTimeInstance
// (DateFormat.DEFAULT, DateFormat.DEFAULT);
System.out.println("DEFAULT 风格: " + df2.format(date));

DateFormat df3 = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM);
System.out.println("MEDIUM 风格:  " + df3.format(date));

DateFormat df4 = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);
System.out.println("LONG 风格:    " + df4.format(date));

DateFormat df5 = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL);
System.out.println("FULL 风格:    " + df5.format(date));

出力:

Mon Jul 29 17:16:05 GMT+08:00 2019
2019-7-29 17:16:05
------------日期格式化------------
SHORT 风格:   19-7-29 下午5:16
DEFAULT 风格: 2019-7-29 17:16:05
MEDIUM 风格:  2019-7-29 17:16:05
LONG 风格:    2019年7月29日 下午05时16分05秒
FULL 风格:    2019年7月29日 星期一 下午05时16分05秒 GMT+08:00

日付と文字列の変換

(1)日 - >文字列:フォーマットフォーマット済み

Date date = new Date();
        
DateFormat df = DateFormat.getInstance();
String format = df.format(date);
System.out.println(format);

(2)文字列 - >日付:パースパース

DateFormat df = DateFormat.getInstance();
        
String source = "19-7-29 下午5:23";
try {
    Date parse = df.parse(source);
    System.out.println(parse);
} catch (ParseException e) {
    System.out.println("日期字符串格式错误!");
    e.printStackTrace();
}

おすすめ

転載: www.cnblogs.com/xzh0717/p/11265283.html