1. システムクラス
これまでの知識では、結果を出力する必要がある場合は「System.out.println();」ステートメントが使用されるため、読者にとって System クラスは馴染みのないものではありませんが、このコードでは System クラスが使用されています。System クラスは、システム関連のプロパティとメソッドをいくつか定義します。このクラスが提供するプロパティとメソッドはすべて静的です。したがって、これらのプロパティとメソッドを参照する場合は、System クラスを使用して直接呼び出すことができます。System クラスの共通メソッドを次の表に示します。
1. getProperties() メソッド
System クラスの getProperties() メソッドは、現在のシステムのすべてのプロパティを取得するために使用されます。このメソッドは、システムのすべてのプロパティをカプセル化する Properties オブジェクトを返します。これらのプロパティは、キーと値のペアの形式で存在します。
package cn.itcast.chapter05.example09;
import java.util.*;
/**
* System类的getProperties()方法
*/
public class Example09 {
public static void main(String[] args) {
// 获取当前系统属性
Properties properties = System.getProperties();
// 获得所有系统属性的key,返回Enumeration对象
Enumeration propertyNames = properties.propertyNames();
while (propertyNames.hasMoreElements()) {
// 获取系统属性的键key
String key = (String) propertyNames.nextElement();
// 获得当前键key对应的值value
String value = System.getProperty(key);
System.out.println(key + "--->" + value);
}
}
}
currentTimeMillis()
currentTimeMillis() メソッドは、現在時刻と 1970 年 1 月 1 日の 0:00:00 との時差をミリ秒単位で表す long 型の値を返します。この値は通常、タイムスタンプとも呼ばれます。
package cn.itcast.chapter05.example10;
/**
* 计算程序在进行求和操作时所消耗的时间
*/
public class Example10 {
public static void main(String[] args) {
long startTime = System.currentTimeMillis();// 循环开始时的当前时间
int sum = 0;
for (int i = 0; i < 100000000; i++) {
sum += i;
}
long endTime = System.currentTimeMillis();// 循环结束后的当前时间
System.out.println("程序运行的时间为:" + (endTime - startTime) + "毫秒");
}
}
arraycopy(オブジェクト src,int srcPos,オブジェクト dest,int destPos,int length)
arraycopy() メソッドは、ある配列から別の配列に要素をすばやくコピーするために使用されます。パラメータの具体的な機能は次のとおりです。
- src: ソース配列を表します。
- dest: 宛先配列を示します。
- srcPos: ソース配列内のコピーされた要素の開始位置を示します。
- destPos: ターゲット配列の開始位置へのコピーを示します。
- length: コピーされた要素の数を示します。
package cn.itcast.chapter05.example11;
/**
* 数组元素的拷贝
*/
public class Example11 {
public static void main(String[] args) {
int[] fromArray = {
101, 102, 103, 104, 105, 106 }; // 源数组
int[] toArray = {
201, 202, 203, 204, 205, 206, 207 }; // 目标数组
System.arraycopy(fromArray, 2, toArray, 3, 4); // 拷贝数组元素
// 打印目标数组中的元素
for (int i = 0; i < toArray.length; i++) {
System.out.println(i + ": " + toArray[i]);
}
}
}
SystemClock.uptimeMillis()
2. ランタイムクラス
Runtime クラスは、仮想マシンの実行時の状態を表すために使用され、JVM 仮想マシン プロセスをカプセル化するために使用されます。java コマンドを使用して仮想マシンを起動するたびに、ランタイム インスタンスが対応し、インスタンスは 1 つだけであるため、このクラスはシングルトン モードで設計されており、オブジェクトを直接インスタンス化することはできません。プログラム内でランタイム インスタンスを取得する場合は、次の方法のみを使用できます。
ケースコード
Runtime クラスは仮想マシンのプロセスをカプセル化するため、現在の仮想マシンに関連する情報は通常、プログラム内のこのクラスのインスタンス オブジェクトを通じて取得されます。
package cn.itcast.chapter05.example12;
/**
* Runtime类的使用
*/
public class Example12 {
public static void main(String[] args) {
Runtime rt = Runtime.getRuntime(); // 获取
System.out.println("处理器的个数: " + rt.availableProcessors() + "个");
System.out.println("空闲内存数量: " + rt.freeMemory() / 1024 / 1024 + "M");
System.out.println("最大可用内存数量: " + rt.maxMemory() / 1024 / 1024 + "M");
}
}
ケースコード
Runtime クラスは、dos コマンドの実行に使用される exec() メソッドを提供します。これにより、コマンド ライン ウィンドウに dos コマンドを入力したのと同じ効果が得られます。たとえば、「notepad.exe」コマンドを実行して、Windows に付属のメモ帳プログラムを開きます。
package cn.itcast.chapter05.example13;
import java.io.IOException;
/**
* 使用exec()方法打开记事本
*/
public class Example13 {
public static void main(String[] args) throws IOException {
Runtime rt = Runtime.getRuntime(); // 创建Runtime实例对象
rt.exec("notepad.exe"); // 调用exec()方法
}
}
メモ帳を開き、3 秒後に自動的に閉じます
package cn.itcast.chapter05.example14;
/**
* 打开的记事本并在3秒后自动关闭
*/
public class Example14 {
public static void main(String[] args) throws Exception {
Runtime rt = Runtime.getRuntime(); // 创建一个Runtime实例对象
Process process = rt.exec("notepad.exe");// 得到表示进程的Process对象
Thread.sleep(3000); // 程序休眠3秒
process.destroy(); // 杀掉进程
}
}
Runtime.getRuntime().availableProcessors(); // 获取CPU核心数
Runtime.getRuntime().maxMemory(); // 获取应用被分配的最大内存
3. 数学の授業
Math クラスは数学演算クラスであり、三角関数、対数、指数などの一般的に使用される数学関数を提供します。コードで数式を表現したい場合は、数式を分割して、Math クラスのメソッドを適用できます。
Math クラスには 2 つの静的定数 PI と E があり、それぞれ数学定数 π と e を表します。
Math.abs(12.3); //12.3 返回这个数的绝对值
Math.abs(-12.3); //12.3
Math.copySign(1.23, -12.3); //-1.23,返回第一个参数的量值和第二个参数的符号
Math.copySign(-12.3, 1.23); //12.3
Math.signum(x); //如果x大于0则返回1.0,小于0则返回-1.0,等于0则返回0
Math.signum(12.3); //1.0
Math.signum(-12.3); //-1.0
Math.signum(0); //0.0
//指数
Math.exp(x); //e的x次幂
Math.expm1(x); //e的x次幂 - 1
Math.scalb(x, y); //x*(2的y次幂)
Math.scalb(12.3, 3); //12.3*2³
//取整
Math.ceil(12.3); //返回最近的且大于这个数的整数13.0
Math.ceil(-12.3); //-12.0
Math.floor(12.3); //返回最近的且小于这个数的整数12.0
Math.floor(-12.3); //-13.0
//x和y平方和的二次方根
Math.hypot(x, y); //√(x²+y²)
//返回概述的二次方根
Math.sqrt(x); //√(x) x的二次方根
Math.sqrt(9); //3.0
Math.sqrt(16); //4.0
//返回该数的立方根
Math.cbrt(27.0); //3
Math.cbrt(-125.0); //-5
//对数函数
Math.log(e); //1 以e为底的对数
Math.log10(100); //10 以10为底的对数
Math.log1p(x); //Ln(x+ 1)
//返回较大值和较小值
Math.max(x, y); //返回x、y中较大的那个数
Math.min(x, y); //返回x、y中较小的那个数
//返回 x的y次幂
Math.pow(x, y);
Math.pow(2, 3); //即2³ 即返回:8
//随机返回[0,1)之间的无符号double值
Math.random();
//返回最接近这个数的整数,如果刚好居中,则取偶数
Math.rint(12.3); //12.0
Math.rint(-12.3); //-12.0
Math.rint(78.9); //79.0
Math.rint(-78.9); //-79.0
Math.rint(34.5); //34.0
Math.rint(35.5); //36.0
Math.round(12.3); //与rint相似,返回值为long
//三角函数
Math.sin(α); //sin(α)的值
Math.cos(α); //cos(α)的值
Math.tan(α); //tan(α)的值
//求角
Math.asin(x/z); //返回角度值[-π/2,π/2] arc sin(x/z)
Math.acos(y/z); //返回角度值[0~π] arc cos(y/z)
Math.atan(y/x); //返回角度值[-π/2,π/2]
Math.atan2(y-y0, x-x0); //同上,返回经过点(x,y)与原点的的直线和经过点(x0,y0)与原点的直线之间所成的夹角
Math.sinh(x); //双曲正弦函数sinh(x)=(exp(x) - exp(-x)) / 2.0;
Math.cosh(x); //双曲余弦函数cosh(x)=(exp(x) + exp(-x)) / 2.0;
Math.tanh(x); //tanh(x) = sinh(x) / cosh(x);
//角度弧度互换 360°角=2π弧度
Math.toDegrees(angrad); //角度转换成弧度,返回:angrad * 180d / PI
Math.toRadians(angdeg); //弧度转换成角度,返回:angdeg / 180d * PI
Math.PI
package cn.itcast.chapter05.example15;
/**
* Math类中比较常见的方法
*/
public class Example15 {
public static void main(String[] args) {
System.out.println("计算绝对值的结果: " + Math.abs(-1));
System.out.println("求大于参数的最小整数: " + Math.ceil(5.6));
System.out.println("求小于参数的最大整数: " + Math.floor(-4.2));
System.out.println("对小数进行四舍五入后的结果: " + Math.round(-4.6));
System.out.println("求两个数的较大值: " + Math.max(2.1, -2.1));
System.out.println("求两个数的较小值: " + Math.min(2.1, -2.1));
System.out.println("生成一个大于等于0.0小于1.0随机值: " + Math.random());
}
}
4.ランダムクラス
JDK の java.util パッケージには Random クラスがあり、指定された値の範囲内で数値をランダムに生成できます。次の表に示すように、Random クラスには 2 つのコンストラクターが提供されています。
この表には、Random クラスの 2 つのコンストラクターがリストされています。最初のコンストラクターにはパラメーターがありません。これによって作成される Random インスタンス オブジェクトは毎回ランダム シードを使用するため、各オブジェクトによって生成される乱数は異なります。同じ乱数シーケンスを生成するために複数の Random インスタンス オブジェクトを作成する場合は、オブジェクトの作成時に 2 番目のコンストラクターを呼び出し、同じシードを渡すことができます。
Math の random() メソッドと比較して、Random クラスにはさまざまな疑似乱数を生成するためのメソッドが多数用意されています。整数型の乱数を生成するだけでなく、浮動小数点型の乱数も生成できます。以下のものが表にリストされています。 . Random クラスの一般的なメソッド。
Random クラスでよく使われるメソッドを表に示しますが、Random クラスの nextDouble() メソッドは 0.0 ~ 1.0 の double 型の値を返し、nextFloat() メソッドは 0.0 ~ 1.0 の float 型の値を返します。 , nextInt(int n) は、0 (両端を含む) から指定された値 n (両端を含まない) までの値を返します。
package cn.itcast.chapter05.example16;
import java.util.Random;
/**
* 使用构造方法Random()产生随机数
*/
public class Example16 {
public static void main(String args[]) {
Random r = new Random(); // 不传入种子
// 随机产生10个[0,100)之间的整数
for (int x = 0; x < 10; x++) {
System.out.println(r.nextInt(100));
}
}
}
package cn.itcast.chapter05.example17;
import java.util.Random;
/**
* 使用构造方法Random(long seed)产生随机数
*/
public class Example17 {
public static void main(String args[]) {
Random r = new Random(13); // 创建对象时传入种子
// 随机产生10个[0,100)之间的整数
for (int x = 0; x < 10; x++) {
System.out.println(r.nextInt(100));
}
}
}
package cn.itcast.chapter05.example18;
import java.util.Random;
/**
* Random类中的常用方法
*/
public class Example18 {
public static void main(String[] args) {
Random r1 = new Random(); // 创建Random实例对象
System.out.println("产生float类型随机数: " + r1.nextFloat());
System.out.println("产生0~100之间int类型的随机数:" + r1.nextInt(100));
System.out.println("产生double类型的随机数:" + r1.nextDouble());
}
}
5. 日付
現在時刻から 100 日後の日時を xxxx 年 xx 月 xx 日の形式で検索します。
日付
メソッド宣言 | 機能説明 |
---|---|
時間をもらう() | |
setTime() |
SimpleDateFormat
戻り値 | メソッド宣言 | 機能説明 |
---|---|---|
かき混ぜる | フォーマット() | 日付のフォーマット |
日付 | 解析() |
カレンダー
メソッド宣言 | 機能説明 |
---|---|
get(intフィールド) | 指定されたカレンダーフィールドの値を返します。 |
getInstance() | |
add(intフィールド,int量) | 指定されたカレンダーフィールドと対応する時刻に基づいて現在のカレンダーを操作します |
set(int 年、int 月、int 日付) | 現在のカレンダーの年、月、日を設定します |
Calendar rightNow = Calendar.getInstance(); // 子类对象
public void add(int field,int amount); //根据给定的日历字段和对应的时间,来对当前的日历进行操作。
public final void set(int year,int month,int date); //设置当前日历的年月日
// 三年前的今天
c.add(Calendar.YEAR, -3);