常用类

常用类

本章目标

  • 掌握System、Runtime等系统相关类的使用

  • 重点掌握字符串处理相关类的使用

  • 重点掌握日期时间相关类的使用

  • 掌握数学运算及随机数相关类的使用

  • 掌握包装类及自动装箱/拆箱


系统相关类

Java 程序在不同操作系统上运行时,有可能需要取得平台相关的属性,或者调用平台命令来完成特定的功能

Java 提供 System 类和 Runtime 类来与程序运行的平台进行交互

System 类

表示当前 Java 程序的运行平台

描述:System 类是一个 final 类,该类的所有属性和方法都是静态的,可以不创建对象直接调用

属性:in(标准输入)、out(标准输出)、err(错误输出)

常用方法

  • currentTimeMillis( ):记录程序执行的时间(单位毫秒)

  • exit():结束当前正在运行中的 Java 虚拟机

  • getProperties( ):获取当前系统属性和环境变量

  • gc():提醒虚拟机,建议进行一次垃圾回收

Runtime 类

表示当前 Java 程序的运行时环境

描述

  • 应用程序不能创建自己的 Runtime 对象实例

  • 只能通过 Runtime 类的静态方法getRuntime( )获取与之关联的Runtime 对象

常用方法:

  • availableProcessors( ):获取处理器数量

  • freeMemory( ):获取空闲内存大小(字节)

  • totalMemory():获取总内存大小(字节)

  • maxMemory() :获取可用最大内存大小(字节)

字符串相关类

Java 中字符串类型是程序中使用范围最广的数据类型,字符串操作也就成了程序员使用得最多的操作

Java 中提供 String 类、StringBuffer 类、StringBuilder 类来处理字符串,这三个类提供了大量操作字符串对象的方法,能够满足程序中各种对字符串的处理

String类

表示固定不变的字符串

描述:

  • String 类是 final 类,不能被子类继承

  • String 类实例化对象包含固定不变的字符串

字符串特点:

  • 字符串必须使用双引号(如“Hello”)

  • 字符串的字符使用 Unicode 编码(一个字符或汉字占两个字节)

  • 字符串是固定不可变的,统一存放在内存的字符串常量池中

常用方法:

  • charAt ( int index ):返回字符串指定位置的字符

  • indexOf( String s):返回指定字符串第一次出现的位置

  • startsWith(String s):测试字符串是否以指定前缀开始

  • endsWith(String s):测试字符串是否以指定后缀开始

  • subString( int index):返回字符串的子字符串

  • replace(char a, char b):替换字符串的指定字符

  • trim():去掉字符串的前后空格

  • concat(String str):连接两个字符串

  • split(String regex):给定正则表达式的匹配来拆分字符串

字符串常量池

字符串常量池通过共享字符串对象,提高字符串对象的使用效率

正则表达式

正则表达式是一种用来匹配字符串的表达式,Java 中 String 类支持使用正则表达式匹配字符串

字符通配符

image-20210731162304646

次数通配符

image-20210731162325774

其他通配符

image-20210731162346961

StringBuffer 类

表示可变长度的字符串(线程安全)

StringBuffer 类是 Java 提供的另外一种字符串操作类,该类允许包含的字符串内容改变,用于解决 String 类包含的字符串内容不可变的问题(频繁修改字符串内容使用 StringBuffer 类)

常用方法

  • append(String str):向字符串后面追加指定字符串

  • toString():返回对象包含的字符串

举例

// StringBuffer 实例化对象
StringBuffer temp  =  new StringBuffer(“hello ”);
temp.append(“world”); // 追加字符串
String str = temp.toString(); // 返回对象包含的字符串
System.out.println(str);
StringBuilder 类

表示可变长度的字符串(线程不安全)

StringBuilder 类是在 JDK1.5 以后 Java 增加的一个新的字符串操作类,它同 StringBuffer 类几乎相同,唯一不同之处是 StringBuilder 类是线程不安全的,StringBuffer 类是线程安全的

String、StringBuffer 和 StringBuilder 区别
  • String 表示固定长度的字符串,StringBuffer(线程安全) 和 StringBuilder(线程不安全) 表示可变长度字符

  • 性能由低到高为 String < StringBuffer < StringBuilder

日期时间相关类

在实际软件项目开发中,经常会遇到处理日期和时间的情况,Java 语言中提供了一系列类专门处理日期和时间类

Date 类(日期时间)
  • 表示特定的瞬间(精确到毫秒)

  • 时间原点(0毫秒):1970-01-01 08:00:00

  • 1天 = 246060 = 86400 秒 = 86400 * 1000 = 86400000 毫秒

//获取当前系统的时间和日期
Date date = new Date();

//把时间和日期转换成时间戳(毫秒)
long time = date.getTime();
SimpleDateFormat 类(日期时间格式化)

描述:

  • 格式化(日期 -> 文本)

  • 解析 (文本 -> 日期)

常用方法:

  • format ( Date date ) :按照指定的模式,把 Date 日期格式化为符合模式的字符串

  • parse ( String source ) :把符合模式的字符串,解析为 Date 日期

// 格式化
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
Date date = new Date( );
String str = sdf.format(date);
​
//解析
sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = simpleDateFormat.parse("2020-10-23");
Calendar 类(日历)

描述:

  • 它调用静态方法 getInstance( ) 获取实例化对象(单例模式)

  • 它提供很多操作日历字段的方法(YEAR、MONTH、DAY_OF_MONTH、HOUR)

常用方法:

  • int get (int field):获取日历(年月日等)

  • void set(int field, int value):设置日历(年月日等)

  • void add(int field,int amount):添加或减少日历(年月日等)

// 获取日历对象实例(当前日历)
Calendar calendar   =   Calendar.getInstance();
// 获取日历年、月 
int year       =  calendar.get(Calendar.YEAR); 
int month   =  calendar.get(Calendar.MONTH);
//设置日历年、月
calendar.set ( Calendar.YEAR, 2021 );
calendar.set ( Calendar.MONTH, 9 );
//日历增加 2 年
calendar.add(Calendar.YEAR, 2);
//把日历对象转换为日期对象
Date date = calendar.getTime( );

数学运算相关类

Math 类

描述:

  • Math 类包含了用于执行基本数学运算的属性和方法,如初等指数、对数、平方根和三角函数

  • Math 的方法都被定义为 static 形式,可以直接通过 Math.方法名() 进行调用,方便程序员进行实际的使用

常用方法:

  • int abs(int i):返回绝对值

  • round(float f):表示四舍五入

  • min(int a,int b):返回两个数最小值

  • max(int a,int b): 返回两个数最大值

  • random():返回[0,1)之间的随机double值

BigInteger 类
  • 在 Java 中,基本数据类型存储的整型最大范围是 64 位 long 型整数

  • BigInteger 类用于表示任意大小的整数,因为它内部有一个 int[ ] 数组可以保存一个非常大的整数

BigInteger numA = new BigInteger("1234567890");
BigInteger numB  = new BigInteger("12345678901234");
// BigInteger 运算只能调用方法
BigInteger sum = NumA.add(NumB); 
// BigInteger 可以转为基本数据类型
long numC = numA.longValue(); 
BigDecimal 类

BigDecimal 类和 BigInteger 类相似,用于表示一个任意大小且精度完全准确的浮点数(常用于财务计算)

BigDecimal decimalA = new BigDecimal("123.4500");
// 返回小数位数
System.out.println(decimalA.scale()); // 4(4位小数)
//去掉末尾的 0
BigDecimal decimalB = decimalA.stripTrailingZeros();
System.out.println(decimalA.scale()); // 2(两位小数)

包装类

什么是包装类

包装类是将 Java 中八种基本数据类型封装成的类,所有的基本数据类型都能很方便地与对应的包装类相互转换,以解决应用中要求使用引用数据类型,而不能使用基本数据类型的情况

包装类的特点
  • 所有包装类都是 final 类型(不能派生子类)

  • 实例化包装类对象后,对象中保存的基本类型数据不能再改变

  • 包装类封装大量有用的方法(如数据类型转换)

  • 除 Character 类和 Boolean 类继承于 Object 类,其他的包装类都继承于 Number 类

基本数据类型与包装类

image-20210731165715045

包装类的共同点
  • 包装类中包含的值不可变(包装类实例化对象后不能修改保存的数值)

  • 包装类都有两个构造器

  • 包装类中都有xxxValue()方法

  • 包装类中都有两个 ValueOf()方法

自动装箱/拆箱

自动装箱和自动拆箱是基本数据类型与包装类之间的一种转换机制(通过编译器自动完成)

image-20210731165952660

不要过度使用自动装箱或自动拆箱功能,因为它们可能会导致程序的性能下降

 

posted @ 2021-08-24 19:42  嘛了对就念来过倒  阅读(47)  评论(0编辑  收藏  举报