重学 Java 第 18 天Java 常用实体类

270 阅读10分钟

Java 常用实体类

Java 系统级类

系统类 System

  1. 访问系统属性

    系统属性是系统固有的属性,是在操作系统和软件安装后已存在的属性。不仅包括操作系统的属性,还包括各种软件的安装属性

相关值的描述
java.versionJava运行时环境版本
java.vendorJava运行时环境供应商
java.vendor.urlJava供应商的URL
java.homeJava安装目录
java.vm.specification.versionJava虚拟机规范版本
java.vm.specification.vendorJava虚拟机规范供应商
java.vm.specification.nameJava虚拟机规范名称
java.vm.versionjava虚拟机实现版本
java.vm.vendorJava虚拟机实现供应商
java.vm.nameJava虚拟机实现名称
java.specification.versionJava运行时环境规范版本
java.specification.vendorJava运行时环境规范供应商
java.specification.nameJava运行时环境规范名称
java.class.versionJava类格式版本号
java.class.pathJava类路径
java.library.path加载库时搜索的路径列表
java.io.tmpdir默认的临时文件路径
java.compiler要使用的 JIT 编译器的名称
java.ext.dirs一个或多个扩展目录的路径
os.name操作系统的名称
os.arch操作系统的架构
os.version操作系统的版本
file.separator文件分隔符(在 UNIX 系统中是 “/”)
path.separator路径分隔符(在 UNIX 系统中是 “:”)
line.separator行分隔符(在 UNIX 系统中是 “/n”)
user.name用户的账户名称
user.home用户的主目录
user.dir用户的当前工作目录
  1. 访问环境变量

    • 取得所有环境变量列表

      使用System.getenv()函数将取得一个 Map 对象,该对象包含了所有环境变量的键值对

    • 取得某一个属性变量的值

      使用System.getenv(key)

  2. 加载文件和库(可以用在JNI调用中)

    • 函数 load(String filename)的作用是,从作为动态库的本地文件系统中以指定的文件名加载代码文件,文件名参数必须是完整的路径名,调用System.load(name)实际上等价于Runtime.getRuntime().load(name)
    • 函数loadLibrary(String libname)的作用是,加载由libname 参数指定的系统库,将库名映射到实际系统库的方法取决于系统,调用System.loadLibrary(name)实际上等价于Runtime.getRuntime().loadLibrary(name)
  3. 快速复制数组

    使用 System的函数 arraycopy() 快速进行数组复制

    void arraycopy(Object src, int srcPos, Object destPos, int length)

    • src:源数组
    • srcPos:原数组中的起始位置
    • dest:目标数组
    • destPos:目标数组中的起始位置
    • length:要复制数组元素的数量
  4. 取得系统时间(用做系统性能监控)

    取得当前系统时间的函数 System.currentTimeMillis()。该函数返回的是毫秒时间

  5. 系统退出命令

    System.exit(int status) 用来终止当前正在运行的Java 虚拟机,参数 status 用做状态码,非 0 的状态表示异常终止

  6. 执行垃圾回收

    System.gc()用于运行垃圾回收器。调用gc()方法暗示着 Java虚拟机可以回收未用对象

运行时类 Runtime

  1. 查看系统内存

    long freeMemory(); //返回 Java虚拟机中的空闲内存量
    long maxMemory(); //返回Java 虚拟机中试图使用的最大内存量
    long totalMemory(); //返回 Java虚拟机中的内存总量
    // JVM 默认内存大小为 66MB
    
  2. 终止 JVM 虚拟机

    exit(int status)
    halt() 
    
  3. 运行系统程序

    Runtime.getRuntime().exec();
    
  4. 使用关闭钩子

    Runtime 类提供了 addShutdownHook() 函数,用来监控系统退出
    

Java 字符串处理类

字符串类

​ String 类代表字符串。Java程序中所有字符串字面值都作为此类的实例实现。字符串是常量,他们的值在创建之后不能更改,字符串缓冲区支持可变的字符串。因为String对象是不可变的,所以可以共享

  1. 提取单个字符

    char charAt(int index); // 返回指定索引出的char值
    
  2. 提取子字符串

    String substring(int index); // 返回一个新的字符串
    String substring(int index, int endindex); // 返回一个新的字符串
    
    int length(); // 返回字符串长度
    
  3. 比较字符串

    boolean equals(Object obj);	//将指定字符串与指定对象比较
    boolean equalsIgnoreCase(String str);// 忽略大小写
    
    int compareToString(String str); // 按字典顺序比较两个字符串
    int compareToIgnoreCase(String str); // 按字典顺序比较两个字符串,不区分大小写
    
  4. 定位字符串

    boolean startsWith(String prefix); // 测试此字符串是否以指定前缀开始
    boolean startsWith(String prefix, int toffset); // 测试此字符串是否以指定的后缀结束
    boolean endsWith(String suffix); // 测试此字符串是否以指定的后缀结束
    
    int indexOf(int ch); //返回指定字符在此字符串中第一次出现处的索引
    int indexOf(int ch, int fromIndex); // 返回此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索
    int indexOf(String str); // 返回指定字字符串在此字符串中第一次出现出的索引
    int indexOf(String str, int formIndex); // 返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行搜索
    int lastIndexOf(int ch);
    int lastIndexOf(int ch, int index);
    int lastIndexOf(String str);
    int lastIndexOf(String str, int index);
    
  5. 匹配字符串

    boolean matches(String regex);
    
  6. 拆分字符串

    String[] split(String reges);
    
  7. 替换字符串

    String replace(char oldChar, char newChar); // 返回一个新的字符串,他通过用newChar 替换此字符串中出现的所有oldChar 的到的
    String replaceAl(String regex, String replacement); //使用给定的 replacement 替换 此字符串所有匹配给定的正则表达式的子字符串
    String replaceFirst(String regex, String replacement); // 使用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串
    
  8. 转换大小写

    String toLowerCase(); // 转小写
    String toUpperCase(); //转大写
    
  9. 格式化输出

    static String format(Local l, String format, Object ... args); // 格式化字符串和参数返回一个格式化字符串
    static String format(String format, Object ...args); //使用指定的格式字符串和参数返回一个格式化字符串
    

字符串分隔类 StringTokenizer

StringTokenizr(String str); //以空格为分隔符
StringTokenizr(String str, String delim); //以delim为分隔符
StringTokenizr(String str, String delim, boolean returnDelims); //以delim为分隔符
// 从 第三个函数可以看出,StringTokenizr 的实例有两种行为方式,这取决于使用的 returnDelims 标志的值是 true 还是 false

~ 如果是 false,则分隔符字符用来分隔标记,标记的是连续字符的最大序列
~ 如果标志为 true,则认为那些分隔符本身即为标记。因此标记要么是一个分隔符字符,要么是那些连续字符的最大序列

不推荐使用

线程安全的可变字符串类 StringBuffer

​ StringBuffer 是一个线程安全的可变字符串类,它类似于 String的字符串,不同的是它通过某些方法调用可以改变该序列的长度和内容。它可将字符串缓冲区安全地用于多个线程,可以在必要时对这些方法进行同步,因此任意特定实例上的所有操作好像是以串行顺序发生的,该顺序所涉及的每个线程进行的方法调用顺序一致。

​ StringBuffer 上的主要操作是 append() 和 insert()方法。 每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符添加或插入到字符串缓冲区中。append()方法始终将这些字符添加到缓冲区的末端;而 insert()方法则在指定的点添加字符

可变字符串类 StringBuilder

​ StringBuilder 是一个可变的字符序列。此类提供一个与StringBuffer兼容的API,但不保证同步。该类被设计用做StringBuffer的一个建议替换,用在字符串缓冲区被单个线程使用的时候。

​ 每个字符串生成器都有一定的容量,只要字符串生成器所包含的字符序列的长度没有超出此容量,就无须分配新的内部缓存区。如果内部缓存区溢出,则此容量自动增大

选择String、StringBuffer与StringBuilder

  • String是字符串常量
  • StringBuffer是字符串变量(线程安全)
  • StringBuilder是字符串变量(非线程安全)
  • 如果偶尔对简单的字符串常量进行拼接,那么可以使用String,他足够简单而且轻量级
  • 如果需要经常进行字符串拼接、累加操作,使用StringBuilder 或 StringBuffer
  • 如果单线程的环境下,建议使用StringBuilder,他要比StringBuffer快,如果是在多线程的环境中,建议使用StringBuffer,它是线程安全的

Java 日期处理类

日期类Date

  • 年份 y 由整数 y - 1900表示
  • 月份由从 0 ~ 11的整数表示:0 是一月 11 是 十二月
  • 日期由整数 1~ 31表示
  • 分钟由 0 ~ 59的整数表示
  • 秒 由 0 ~ 61的整数表示;值 60 和 61 只对闰秒发生
  1. 创建日期

    Date(); // 分配Date 对象并初始化此对象,以表示分配它的时间
    
  2. 修改日期

    void setTime(long time);	// 设置毫秒数
    long getTime();		// 获得毫秒数
    
  3. 比较日期

    boolean before(Date when); // 判断次日起是否在指定日期之前
    boolean after(Date when); // 判断次日起是否在指定日期之后
    
    int compareTo(Date anotherDate); // 比较两个日期的顺序
    
  4. 输出日期

    toString();
    

日期格式化类 SimpleDateFormat

字母日期或时间元素
GEra标识符
y
M年中的月份
w年中的周数
W月中的周数
D年中的天数
d月中的天数
F月份中的星期
E星期中的天数
aAM/pm标记
H一天中的小时数(0~23)
k一天中的小时数(1~24)
Kam/pm 中的小时数 (0 ~ 11)
ham/pm 中的小时数 (1 ~ 12)
m小时中的分钟数
s分钟的秒数
S毫秒数
z时区
Z时区
  1. 创建格式化对象

    simpleDateFormat(String pattern); 
    applyPattern(String pattern);	// 将给定模式字符串应用于此日期格式
    
  2. 日期转换为字符串

    String format(Date date);
    
  3. 字符串转换为日期

    Date parse(String source);
    

Java 数字处理类

数学函数类 Math

  • 绝对值函数

    static double abs(double a); // 返回double的绝对值
    static float abs(float a); // 返回float的绝对值
    static int abs(int a); // 返回int的绝对值
    static long abs(long a); // 返回long的绝对值
    
  • 最大值最小值函数

    static double max(double a, double b);
    static double min(double a, double b);
    
  • 取整函数

    static double rint(double a); // 返回最接近参数并等于某一整数的double 值
    static long round(double a); // 返回最接近参数的 long
    static double floor(double a); // 返回最大的double
    
  • 弦与切函数

    static double sin(double a); // 返回角的三角正弦
    static double sinh(double x); // 返回 double值的 双曲线正弦
    static double tan(double a); // 返回角的三角正切
    static double tanh(double a); // 返回double 值的双曲线余弦
    static double cos(double a); // 返回角的三角余弦
    static double cosh(double x); // 返回 double 值的双曲线余弦
    static double acos(double a); // 返回一个值的反余弦
    static double asin(double a); // 返回一个值的反正弦
    static double atan(double a); // 返回一个值的反正切
    static double atan2(double y, double x); // 将矩形坐标(x,y)转换成即坐标 (r,theta),返回所得叫
    
  • 幂与开方函数

    static double exp (double a); // 返回欧拉数 e 的 double 次幂的值
    static double expm (double a); // 返回 ex - 1
    static double pow (double a, double b); // 返回第一个参数的第二个参数次幂的值
    static double sqrt (double a); // 返回正确舍入的 double 值的正平方根
    static double cbrt (double a); // 返回 double 值的立方根
    static int getExpoment(double d); // 返回 double 形式中使用的无偏指数
    
  • 对数函数

    static double log(double a); // 返回double 值的自然对数(底数是e)
    static double log10(double a); // 返回double 值的底数为10的对数
    static double log1p(double a); // 返回参数与 1 之和的自然对数
    
  • 角度函数

    static double toDegrees(double angrad); 	// 将用弧度表示的角转换为近似相等的用角度表示的角
    static double toRadians(double angdeg); 	// 将用角度表示的角转换为近似相等的用弧度表示的角
    
  • 随机函数

    static double random(); // 返回带正号 的 double 值, 该值大于 0 且小于 1