1.文字列クラス:
1)String / StringBuffer / StringBuilderの3つのクラスは、すべて文字列を表すクラスです。
2)文字列:不変の文字列。最下層は最終的に変更されたchar []を使用して実装され、長さは変更できません。
3)StringBufferのすべてのメソッドは同期化されて装飾されているため、スレッドセーフであり、StringBuliderはスレッドセーフではありません。
4)スピードでStringBuilder>StringBuffer>String。したがって、大量のデータを含む文字列を処理する場合は、StringBuffer / StringBuilderを使用する必要があります。同時に、マルチスレッドの場合は、スレッドセーフも考慮する必要があります。
不変の文字列について:次の画像は、Power Nodeの公式Webサイトで私が収集したものです。初心者の場合、次のように理解できます。
一般的な操作:これらの方法はより一般的に使用されますが、覚えるのは簡単ではありません。(実際、Javaのほとんどのメソッドは、メソッド名に従って関数を判断できます)、ここにリストされているメソッドはごくわずかです。詳細については、次のドキュメントを参照してください。
メソッドタイプ | メソッド名 | 説明 |
---|---|---|
静的文字列 | format( "%04d-%02d-%02d"、年、月、日) | フォーマット制御された文字列を返します。 |
弦 | replace(char old、char new) | この文字列をnewに置き換えて取得した新しい文字列を返します getに表示されるすべての古いもの。 |
弦 [] | split(String regex、int limit): | 指定された正規表現の一致に基づいてこの文字列を分割します。 |
ボリアン | startWith(文字列プレフィックス): | この文字列が指定されたプレフィックスで始まるかどうかをテストします。 |
CharSequence | subSequence(int beginIndex、int endIndex): | このシーケンスのサブシーケンスである新しい文字シーケンスを返します。 |
弦 | substring(int beginIndex) | この文字列のサブ文字列である新しい文字列を返します。 |
ブール値 | contains(CharSequence s) | この文字列に指定されたchar値のシーケンスが含まれている場合にのみtrue これを使用して、シーケンスが別の文字列のサブ文字列であるかどうかを簡単に判断できる場合があります。 |
上記のメソッドは、 CharSequence
パブリックインターフェイスCharSequenceに言及しました:char値の読み取り可能なシーケンスです。このインターフェースは、多くの異なる種類のcharシーケンスへの均一な読み取り専用アクセスを提供します。詳細を知りたい場合は、初心者には必要のないドキュメントを確認することもできます。
2.ラッパークラス: Javaは、基本的なデータ型ごとに対応するラッパークラスを提供します
ベーシックタイプ | パッケージングクラス |
バイト | バイト |
短い | 短い |
int | 整数 |
長さ | 長さ |
浮く | 浮く |
ダブル | ダブル |
char | キャラクター |
ブール値 | ブール値 |
/*
static int bitCount(int i)
返回指定 int 值的二进制补码表示形式的 1 位的数量。
byte byteValue()
以 byte 类型返回该 Integer 的值。
int compareTo(Integer anotherInteger)
在数字上比较两个 Integer 对象。
static Integer decode(String nm)
将 String 解码为 Integer。
double doubleValue()
以 double 类型返回该 Integer 的值。
boolean equals(Object obj)
比较此对象与指定对象。
float floatValue()
以 float 类型返回该 Integer 的值。
`````
*/
public class IntegerTest {
public static void main(String[] args) {
//下面几个字段都是静态常量。
System.out.println(Integer.MAX_VALUE);//2147483647,即整型表示的有符号最大值
System.out.println(Integer.MIN_VALUE);//-2147483648,即整型表示的有符合最小值
//创建一个Integer对象。
Integer integer = 100;//当然,也可象这样构造一个Integer对象:Integer integer = new Integer(100);
System.out.println(integer.intValue());//100
}
}
ラッパークラスを提供する理由:
ご存知のとおり、Javaはオブジェクト指向の高級プログラミング言語です。オブジェクト指向には多くの特性と属性がありますが、これらの8つの基本的なデータ型のように、100%オブジェクト指向ではありません。したがって、Javaはこれらの基本データ型に独自のラッパークラスを提供するため、これらの基本データ型にもオブジェクト指向の機能と共通点がいくつかあります。
たとえば、intのパッケージ化タイプはIntegerクラスであり、NumberともちろんObjectクラスを継承します。Comparableインターフェースを実装します。フィールドは次のとおりです。
MAX_VALUE:int型が表すことができる最大値を示します。
MIN_VALUE:int型が表すことができる最小値を示します。
SIZE:2の補数形式でint値を表すために使用されるビット数。
TYPE:基本型intのClassインスタンスを表します。
他にもたくさんの方法があります。ここに例はありません。他の基本的なタイプを比較して理解することができます。
プリミティブ型をラッパー型に変換します。これはボクシングと呼ばれ、その逆も同様です。Javaでは、ボックス化とボックス化解除を自動的に実行できるため、ほとんどの場合、ラッパークラスのオブジェクトを手動で作成する必要はありません。
3. Javaの日付と時刻のタイプ:時間の観点から、どの分野からのものであっても、深く研究して非常に正確に追求したい場合は非常に困難です。天の宇宙と同じくらい大きく、時間、分、秒と同じくらい小さい... Javaには時間に関するクラスがたくさんあります。公式のjdkドキュメントには、これらの時間に関連するクラス、インターフェイスなどの多くの説明と説明があり、それらに立ち入る必要はありません。
1)java.util.Dateクラス:Dateクラスは、標準の基準時刻(「エポック」と呼ばれる、1970年1月1日00:00:00 GMT)からの指定されたミリ秒数を表します。
2)java.text.SimpleDateFormatクラス:ロケールに依存する方法で日付をフォーマットおよび解析する具象クラスです。フォーマット(日付->テキスト)、解析(テキスト->日付)、および正規化が可能です。SimpleDateFormatを使用すると、ユーザー定義の日時形式パターンを選択できます。ただし、DateFormatのgetTimeInstance、getDateInstance、またはgetDateTimeInstanceを介して日時フォーマッタを作成することをお勧めします。
public class Test01 {
public static void main(String[] args) throws ParseException {
//创建一个Date对象,该对象表示当前时间。输出格式:Fri Dec 10 15:20:46 CST 2021
Date date = new Date();
System.out.println(date);//Sun Jan 09 13:57:24 CST 2022
// 将日期对象 date 转成给定格式的字符串:“yyyy年MM月dd日 HH:mm:ss SSS”。
// 这里的yyyy、MM、dd等符号是 SimpleDateFormat类里面设定好的,并且只能识别这样的符号。还有其他符号可以查看
// SimpleDateFormat 类的api文档。
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss SSS");
System.out.println(sdf.format(date)); // 2022年01月09日 13:57:24 053
//将给定字符串转成Date对象。
String text = "2035-10-10 00:15:12";
//注意: 格式串一定要完全匹配日期字符串
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
date = sdf.parse(text);
System.out.println( date );// Wed Oct 10 00:15:12 CST 2035
//获取当前日历。该对象是以当前时间设置的一个日历
Calendar calendar1 = Calendar.getInstance();
// 使用set()来设置一个日历。
calendar1.set(2200,6,6);
int year = calendar1.get(Calendar.YEAR);
int month = calendar1.get(Calendar.MONTH);
int day = calendar1.get(Calendar.DAY_OF_MONTH);
System.out.println( year+"-"+month+"-"+day); // 2200-6-6
}
}
3)java.util.Calendarクラス:このクラスは、特定のインスタントと、YEAR、MONTH、DAY_OF_MONTH、HOURなどのカレンダーフィールドのセットとの間の変換のためのいくつかのメソッドを提供する抽象クラスです。メソッド。インスタントはミリ秒の値として表すことができます。これは、エポック(つまり、00:00:00.000 GMT、1970年1月1日、グレゴリオ暦)からのオフセットです。このクラスは、パッケージの範囲外で特定のカレンダーシステムを実装するための追加のフィールドとメソッドも提供します。これらのフィールドとメソッドは、保護されたものとして定義されています。他のロケール依存クラスと同様に、Calendarは、このタイプのジェネリックオブジェクトを取得するためのクラスメソッドgetInstanceを提供します。CalendarのgetInstanceメソッドは、カレンダーフィールドが現在の日時で初期化されたCalendarオブジェクトを返します
。CalendarrightNow = Calendar.getInstance();
Calendarオブジェクトは、特定の言語の日時フォーマットを実装するために必要なすべてのカレンダーを生成できます。およびカレンダースタイルフィールド値。たとえば、日-グレゴリアン、日-伝統。
カレンダーは、特定のカレンダーフィールドによって返される値の範囲と、それらの値の意味を定義します。たとえば、すべてのカレンダについて、カレンダシステムの最初の月の値はMONTH==1月です。
私のような初心者の場合は、Calendarクラスを使用してカレンダーを作成し、年、月、日、週の情報を操作するだけで十分です。
/*
在Calendar中有以下属性:
YEAR 指示年。 MONTH 指示月份。
DAY_OF_MONTH 指示一个月中的某天。
DAY_OF_WEEK 指示一个星期中的某天。
DAY_OF_YEAR 指示当前年中的天数。
DAY_OF_WEEK_IN_MONTH 指示当前月中的第几个星期。
HOUR指示当天中的某小时 MINUTE 指示当前小时中的某分钟
SECOND 指示当前分钟中的某秒
注意:
月份是0~11;在西方人们认为星期日是一个星期的起始,所以1~7分别表示星期天到星期六。
常用方法有get(),set();我们可以借助蓝桥杯往年的一道题目来理解一下:
世界末日问题:曾有邪教称1999年12月31日是世界末日。当然该谣言已经不攻自破。还有人称
今后的某个世纪末的12月31日,如果是星期一则会…有趣的是,任何一个世纪末的年份的12月31日都
不可能是星期一!!于是,“谣言制造商”又修改为星期日… 1999年的12月31日是星期五,请问:未来
哪一个离我们最近的一个世纪末年(即xx99年)的12月31日正好是星期天(即星期日)?
*/
public class Test02 {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
for (int year = 1999; year < 10000; year+=100) {
calendar.set(year,11,31);//前面说过,月份是从0开始的,所以将 month 设置为11
if (calendar.get(Calendar.DAY_OF_WEEK)==1){
System.out.println(year); //year = 2299
break;
}
}
}
}
4. java.lang.Mathクラス:数学関数に関連するいくつかのメソッドを定義します。
1)java.text.DecimalFormatクラス:
2)BigInteger / BigDecimalクラス:科学/財務計算を実行する場合、精度が比較的高い場合は、これら2つのクラスが使用されます。
3)java.util.Randomクラス:乱数を生成するために使用されます
public class Test03 {
public static void main(String[] args) {
//1) Math.random() 产生[0,1)之间 随机小数
for(int i = 0 ; i<10 ; i++){
System.out.println( Math.random() );
}
//2)
System.out.println( Math.sqrt(100)); //平方根
System.out.println( Math.cbrt(100)); //立方根
System.out.println( Math.pow(3, 4)); //3的4次方
//3)
System.out.println( Math.ceil( 5.6 )); //返回大于等于指定数的最小整数 6.0
System.out.println( Math.floor( 5.6 )); //返回小于等于指定数的最大整数 5.0
//4) 两个常量
System.out.println( Math.PI);
System.out.println( Math.E);
}
}