JAVA中的常用类

java中常用的包

java.lang包:基础包不需要引入,每一个类自动添加

java.util包:工具Arrays、List、Map,用的时候需要引入

java.sql包:java操作数据库的类,Connection

java.io包:操作文件,输入输出流

引用格式:import 包名.类;

一、String类、StringBuffer类和StringBuilder类

String类

  • 不可变性String 类是不可变的,一旦创建了 String 对象,其值就不能被改变。任何修改 String 内容的操作实际上都是创建一个新的 String 对象。
  • 线程安全:由于不可变性,String 是线程安全的,可以在多线程环境中共享。
  • 适用场景:当字符串的值不会改变时,如数据库的连接字符串、文件路径等固定不变的值时,使用 String 是合适的选择。

1. 初始化方式

使用字符串常量直接初始化一个String对象:

String 变量名= 字符串;

String str1 = null; // 初始化为空
String str2 = ""; // 初始化为空字符串
String str3 = "abc"; // 初始化为abc,其中abc为字符串常量

使用String的构造方法初始化字符串对象

String 变量名 = new String(字符串)

2. String类中常用的方法

方法声明功能描述
String()创建一个内容为空的字符串
String(String value)根据指定的字符串内容创建对象
String(char[] value)根据指定的字符数组创建对象
int indexOf(int ch)返回指定字符在此字符串中第一次出现处的索引
int lastIndexOf(int ch)返回指定字符在此字符串中最后一次出现处的索引
int indexOf(String str)返回指定子字符串在此字符串中第一次出现处的索引
int lastIndexOf(String str)返回指定子字符串在此字符串中最后一次出现处的索引
char charAt(int index)返回字符串中index位置上的字符,其中index的取值范围是:0~(字 符串长度-1)
boolean endsWith(String suffix)判断此字符串是否以指定的字符串结尾
int length()返回此字符串的长度
boolean equals(Object anObject)将此字符串与指定的字符串比较
boolean isEmpty()当且仅当字符串长度为0时返回true
boolean startsWith(String prefix)判断此字符串是否以指定的字符串开始
boolean contains(CharSequence cs)判断此字符串中是否包含指定的字符序列
String toLowerCase()使用默认语言环境的规则将String中的所有字符都转换为小写
String toUpperCase()使用默认语言环境的规则将String中的所有字符都转换为大写
static String valueOf(int i)返回 int 参数的字符串表示形式
char[] toCharArray()将此字符串转换为一个字符数组
String replace(CharSequence oldstr, CharSequence newstr)返回一个新的字符串,它是通过用newstr替换此字符串中出现的所 有oldstr得到的
String[] split(String regex)根据参数regex(regex是一个正则表达式,用来限定分隔规则)将字 符串分割为若干个子字符串
String substring(int beginIndex)返回一个新字符串,它包含从指定的beginIndex起始角标处开始,直 到此字符串末尾的所有字符
String substring(int beginIndex, int endIndex)返回一个新字符串,它包含从指定的beginIndex起始角标处开始,直 到索引endIndex-1角标处的所有字符
String trim()

返回一个新字符串,它去除了原字符串首尾的空格

 StringBuffer类

  • 可变性StringBuffer 是可变的,可以通过方法修改其内容而不创建新的对象。
  • 线程安全StringBuffer 是线程安全的,内部的操作方法都使用了同步(synchronized)关键字进行线程安全控制,因此适合在多线程环境中使用。
  • 性能:由于线程安全的机制,StringBuffer 操作相对较慢,适合于在多线程环境中频繁修改字符串的场景。
StringBuffer sb = new StringBuffer("Hello");
sb.append(" World"); // 直接在原对象上修改,不创建新对象
System.out.println(sb.toString()); // 输出 "Hello World"

String类中常用的方法

方法声明

功能描述

StringBuffer append(char c)

添加字符到StringBuffer对象中末尾

StringBuffer insert(int offset,String str)

在StringBuffer对象中的offset位置插入字符串str

StringBuffer deleteCharAt(int index)

移除StringBuffer对象中指定位置的字符

StringBuffer delete(int start,int end)

删除StringBuffer对象中指定范围的字符或字符串

StringBuffer replace(int start,int end,String s)

将StringBuffer对象中指定范围的字符或字符串用新的字符串s进 行替换

void setCharAt(int index, char ch)

修改指定位置index处的字符

String toString()

返回StringBuffer缓冲区中的字符串对象

StringBuffer reverse()

将此StringBuffer对象用其反转形式取代

StringBuilder类

  • 可变性StringBuilder 也是可变的,与 StringBuffer 类似,但不保证线程安全。
  • 性能:由于没有线程安全的开销,StringBuilder 比 StringBuffer 更快,适合在单线程环境下使用,特别是需要频繁进行字符串操作的场景。
  • 适用场景:通常在单线程的情况下,需要高效地进行字符串操作时,使用 StringBuilder 更为合适。
StringBuilder sb = new StringBuilder("Hello");
sb.append(" World"); // 直接在原对象上修改,不创建新对象
System.out.println(sb.toString()); // 输出 "Hello World"

StringBuffer与StringBuilder的区别

二者所不同的是StringBuffer是线程安全的,而StringBuilder没有实现 线程安全功能,所以性能略高。通常情况下,如果创建一个内容可变的字符串对 象,应该优先考虑StringBuilder类。

二、System类和Runtime类

System类

System类定义了一些与系统相关的属性和方法,它所提供的属性和方法都 是静态的,因此,想要引用这些属性和方法,直接使用System类调用即可。

System类的常用方法

方法声明功能描述
static void exit(int status)该方法用于终止当前正在运行的Java虚拟机,其中参数status表 示状态码,若状态码非0 ,则表示异常终止
static void gc()运行垃圾回收器,并对垃圾进行回收
static native long currentTimeMillis()返回以毫秒为单位的当前时间
static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)从src引用的指定源数组复制到dest引用的数组,复制从指定的 位置开始,到目标数组的指定位置结束
static Properties getProperties()取得当前的系统属性
static String getProperty(String key)获取指定键描述的系统属性

Runtime类

定义:Runtime类用于表示Java虚拟机运行时的状态,它用于封装Java虚拟机进程。

说明:每次使用“java”命令启动Java虚拟机时都会对应一个Runtime实例,并 且只有一个实例,应用程序会通过该实例与其运行时的环境相连。

获取Runtime实例方式:

Runtime run = Runtime.getRuntime()

注意:Runtime类中提供了一个exec()方法,该方法用于执行一个DOS命令,从 而实现和在命令行窗口中输入DOS命令同样的效果。

三、Math类与Random类

Math类

1. Math类是一个工具类,主要用于完成复杂的数学运算,如求绝对值、三角函 数、指数运算等。

2. 由于Math类的构造方法被定义成private,因此无法创建Math类的对象。

3. Math类中的所有方法都是静态方法,可以直接通过类名来调用它们。

4. 除静态方法外,Math类中还有两个静态常量PI和E,分别代表数学中的π和e。

Random类

在JDK的java.util包中,有一个Random类,它可以在指定的取值范围内随机产生数字。

Random类的两个构造方法

方法声明功能描述
Random()构造方法,用于创建一个随机数生成器,每次实例化Random对象会生成 不同的随机数
Random(long seed)构造方法,使用一个long型的seed(种子)创建伪随机数生成器,当seed 相同时,每次实例化Random对象会生成相同的随机数

Random类的常用方法

方法声明功能描述
boolean nextBoolean()随机生成boolean类型的随机数
double nextDouble()随机生成double类型的随机数
float nextFloat()随机生成float类型的随机数
int nextInt()随机生成int类型的随机数
int nextInt(int n)随机生成[0,n)之间int类型的随机数
long nextLong()随机生成long类型的随机数

四、日期与时间类

Date类

1. 在JDK的java.util包中,提供了一个Date类用于表示日期和时间。

2. 随着JDK版本的不断升级和发展,Date类中大部分的构造方法和普通方法都 已经不再推荐使用。

3. 目前JDK 8中,Date类只有两个构造方法是可以使用的。

4. Date():用来创建当前日期时间的Date对象。

5. Date(long date):用于创建指定时间的Date对象,其中date参数表示1970年1 月1日0时0分0(称为历元)以来的毫秒数,即时间戳。

Calendar类

1. Calendar类用于完成日期和时间字段的操作,它可以通过特定的方法设置和 读取日期的特定部分,比如年、月、日、时、分和秒等。

2. Calendar类是一个抽象类,不可以被实例化。

3. 在程序中需要调用其静态方法getInstance()来得到一个Calendar对象,然后才 能调用其相应的方法。

Calendar类常用方法

方法声明功能描述
int get(int field)返回指定日历字段的值
void add(int field,int amount)根据日历规则,为指定的日历字段增加或减去指定的时间量
void set(int field,int value)为指定日历字段设置指定值
void set(int year,int month,int date)设置Calendar对象的年、月、日三个字段的值
void set(int year.int month,int date,int hourOfDay,int minute,int second)设置Calendar对象的年、月、日、时、分、秒六个字段的值

JDK 8新增日期与时间类

类名功能描述
Clock用于获取指定时区的当前日期、时间
DayOfWeek枚举类,定义了一周七天周一到周日的枚举值
Duration表示持续时间,该类提供的ofXxx()方法用于获取指定的时间的小时、分钟、秒数等
Instant表示一个具体时刻,可以精确到纳秒。该类提供了静态的now()方法来获取当前时刻, 提供了静态的now(Clock clock)方法来获取clock对应的时刻。同时还提供了一系列的 plusXxx()方法来获取当前时刻基础上加上一段时间,以及一系列的minusXxx()方法在 当前时刻基础上减去一段时间
LocalDate表示不带时区的日期,如2018-01-27。该类提供了静态的now()方法来获取当前日期, 提供了静态的now(Clock clock)方法来获取clock对应的日期。同时还提供了一系列的 plusXxx()方法在当前年份基础上加上几年、几月、几日等,以及一系列的minusXxx() 方法在当前年份基础上减去几年、几月、几日等
LocalTime表示不带时区的时间,如14:49:20。该类提供了静态的now()方法来获取当前时间,提 供了静态的now(Clock clock)方法来获取clock对应的时间。同时还提供了一系列的 plusXxx()方法在当前年份基础上加上几小时 、几分、几秒等,以及一系列的 minusXxx()方法在当前年份基础上减去几小时、几分、几秒等
LocalDateTime表示不带时区的日期、时间。该类提供了静态的now()方法来获取当前日期、时间,提 供了静态的now(Clock clock)方法来获取clock对应的日期、时间。同时还提供了一系列 的plusXxx()方法在当前年份基础上加上几年、几月、几日、几小时、几分、几秒等, 以及一系列的minusXxx()方法在当前年份基础上减去几年、几月、几日、几小时、几 分、几秒等
Month枚举类,定义了一月到十二月的枚举值
MonthDay表示月日,如--01-27。该类提供了静态的now()方法来获取当前月日,提供了静态的 now(Clock clock)方法来获取clock对应的月日
Year表示年,如2018。该类提供了静态的now()方法来获取当前年份,提供了静态的 now(Clock clock)方法来获取clock对应的年份。同时还提供了plusYears()方法在当前年 份基础上增加几年,以及minusYears()方法在当前年份基础上减去几年
YearMonth表示年月,如2018-01。该类提供了静态的now()方法来获取当前年月,提供了静态的 now(Clock clock)方法来获取clock对应的年月。同时还提供了plusXxx()方法在当前年 月基础上增加几年、几月,以及minusXxx()方法在当前年月基础上减去几年、几月
ZoneId表示一个时区
ZonedDateTime表示一个时区化的日期、时间

五、包装类

在Java中,包装类(Wrapper classes)是一种将基本数据类型封装为对象的类。Java的基本数据类型(如 int、char、boolean 等)不是对象,因此没有与其相关的方法。为了使基本数据类型具备对象的特性,Java 提供了对应的包装类,每种基本数据类型都有对应的包装类。

基本数据类型和对应的包装类

1. 整型包装类

  • Byte:对应 byte
  • Short:对应 short
  • Integer:对应 int
  • Long:对应 long
Integer intObj = 42; // 自动装箱:基本类型 int 转换为 Integer 对象
int value = intObj; // 自动拆箱:Integer 对象转换为基本类型 int

2. 浮点型包装类

  • Float:对应 float
  • Double:对应 double
Double doubleObj = 3.14; // 自动装箱:基本类型 double 转换为 Double 对象
double value = doubleObj; // 自动拆箱:Double 对象转换为基本类型 double

3. 字符型包装类

  • Character:对应 char
Character charObj = 'A'; // 自动装箱:基本类型 char 转换为 Character 对象
char value = charObj; // 自动拆箱:Character 对象转换为基本类型 char

4. 布尔型包装类

  • Boolean:对应 boolean
Boolean boolObj = true; // 自动装箱:基本类型 boolean 转换为 Boolean 对象
boolean value = boolObj; // 自动拆箱:Boolean 对象转换为基本类型 boolean

使用场景和特性

  • 自动装箱(Autoboxing)和自动拆箱(Unboxing):Java 提供了自动装箱和自动拆箱的机制,使得基本类型和其对应的包装类之间的转换更加方便。

自动装箱(Autoboxing):是指将基本数据类型的变量赋给对应的包装类变量。

自动拆箱(AutoUnboxing):是指将包装类对象类型直接赋给一个对应的基本 数据类型变量。

  • 对象方法:包装类提供了许多方法来处理基本数据类型,比如转换为字符串、比较大小、获取最大值和最小值等操作。

Integer num = 123;
String str = num.toString(); // 将整数转换为字符串
int max = Integer.max(10, 20); // 求两个整数的最大值
  • Null 值处理:包装类可以表示为 null,而基本数据类型不能。这在需要处理对象可能为空的情况下很有用。
Integer num = null; // Integer 可以赋值为 null,表示没有数值
int value = num; // 编译时自动拆箱,但在运行时可能抛出 NullPointerException

基本数据类型、基本数据包装类以及字符串之间的相互转换

1. 基本数据类型转换为字符串

使用 String 类的 valueOf 方法

int intValue = 42;
String str1 = String.valueOf(intValue); // 将 int 转换为 String

使用基本数据类型的字符串连接操作

double doubleValue = 3.14;
String str2 = "" + doubleValue; // 将 double 转换为 String

使用包装类的 toString 方法

boolean boolValue = true;
String str3 = Boolean.toString(boolValue); // 将 boolean 转换为 String

2. 字符串转换为基本数据类型

使用包装类的 parseXXX 静态方法

String str = "123";
int intValue = Integer.parseInt(str); // 将 String 转换为 int
double doubleValue = Double.parseDouble(str); // 将 String 转换为 double

使用包装类的 valueOf 方法(返回包装类对象)

String str = "true";
boolean boolValue = Boolean.valueOf(str); // 将 String 转换为 boolean

3. 基本数据包装类转换为字符串

使用 toString 方法

Integer integerObj = 42;
String str1 = integerObj.toString(); // 将 Integer 对象转换为 String

注意事项:

  • 当字符串无法正确转换为目标基本数据类型时(例如,包含非数字字符的字符串转换为 int),会抛出 NumberFormatException 异常。
  • 包装类的 toString 方法和 String 类的 valueOf 方法在功能上是等效的,都可以将基本数据类型或包装类转换为字符串。
  • 43
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值