Java基础(9)本地API
目录
1.前言
哈喽大家好啊,Java基础的学习马上就要告一段落了,今儿分享的是一些Java常用的本地API,让我们开始吧。
2.正文
2.1.基础类与工具类
2.1.1String类
ToString方法:返回字符串本身。
public static void main(String[] args) { String str = new String("abcd"); System.out.println(str.toString()); }
其中toString可以省略。
length方法:返回字符串序列长度。
public static void main(String[] args) { String str = new String("abcd"); System.out.println(str.length()); }
getBytes方法:
getBytes()
方法会返回一个byte
数组,该数组包含了字符串的字节表示。默认情况下,getBytes()
方法使用平台默认的字符编码来转换字符串。public static void main(String[] args) { String str = new String("abcd"); byte[] array = str.getBytes(); for(int i = 0;i < array.length;i++){ System.out.println(array[i]); } }
toCharArray:它用于将字符串转换成一个字符数组。这个方法会创建一个新的字符数组,并将调用该方法的字符串中的所有字符复制到这个新数组中。
public static void main(String[] args) { String str = new String("abcd"); char[] array = str.toCharArray(); for(int i = 0;i < array.length;i++){ System.out.println(array[i]); } }
charAt:用于返回指定索引处的字符。这个方法接受一个整数参数,即你想要获取字符的位置(索引),并返回该位置的字符。
public static void main(String[] args) { String str = new String("abcd"); for(int i = 0;i < str.length();i++){ System.out.print(str.charAt(i) + " "); } }
为了与上文加以区分,这里输出方式做了稍微修改。
isEmpty:用于检查字符串是否为空。这个方法返回一个布尔值,如果字符串的长度为 0,即字符串为空或者只包含空格(如果考虑空格为有效内容的话,
isEmpty()
在这种情况下会返回false
),则返回true
;否则返回false
。public static void main(String[] args) { String str = new String("abcd"); String str1 = (""); System.out.println(str.isEmpty()); System.out.println(str1.isEmpty()); }
equals方法:
equals
方法用于比较两个对象的内容是否相等。public static void main(String[] args) { String str1 = "Hello"; String str2 = "Hello"; String str3 = new String("hello"); System.out.println(str1.equals(str2)); System.out.println(str1.equals(str3)); }
StringBuffer
和StringBuilder
类:它们都继承自AbstractStringBuilder
类,用于创建可变的字符串序列。当你需要在多线程环境中进行字符串操作时,选择StringBuffer。
当你在单线程环境中进行字符串操作,并且需要更好的性能时,选择StringBuilder
。public static void main(String[] args) { StringBuffer str1 = new StringBuffer("Hello"); str1.append("World"); System.out.println(str1); StringBuilder str2 = new StringBuilder("Hello "); str2.append("World"); System.out.println(str2); }
2.1.2System类和Runtime类
常见的System方法:
标准的输入输出流:
System.out
:PrintStream
类型,用于向控制台打印输出。System.in
:InputStream
类型,用于从控制台读取输入。System.err
:PrintStream
类型,用于向控制台打印错误信息。public static void main(String[] args) { //标准输出流 System.out.println(1); //标准输入流 Scanner scanner = new Scanner(System.in); //输出错误信息 System.err.println(10); }
系统属性:
System.getProperty(String key)
:根据指定的键获取系统属性值。public static void main(String[] args) { System.out.println(System.getProperty("java.home")); }
复制数组:这个方法用于将一个数组中的元素复制到另一个数组中。
public static void main(String[] args) { int[] a = {1,2,3,4,5}; int[] b = new int[a.length]; System.arraycopy(a,0,b,0,a.length); System.out.println(Arrays.toString(b)); }
常见的Runtime方法:
内存管理:
Runtime.getRuntime().totalMemory()
:获取JVM的总内存量(以字节为单位)。Runtime.getRuntime().freeMemory()
:获取JVM中当前可用的内存量。Runtime.getRuntime().maxMemory()
:获取JVM可以使用的最大内存量。public static void main(String[] args) { Runtime runtime = Runtime.getRuntime(); System.out.println("jvm总内存数 " + runtime.totalMemory() + " byte"); System.out.println("jvm空闲内存数 " + runtime.freeMemory() + " byte"); System.out.println("jvm可用最大内存数 " + runtime.maxMemory() + " byte"); }
2.1.3Math和Random类
Math
类包含了大量的数学运算方法,并且都是static
方法,可以直接通过类名调用。这些方法包括基本算术运算、三角函数、对数函数、取整和随机数生成等。Math
类是一个工具类,它不允许实例化。
基本运算:
Math.abs(int a)
:返回绝对值。Math.max(int a, int b)
:返回两者中的最大值。Math.min(int a, int b)
:返回两者中的最小值。Math.pow(double a, double b)
:返回a
的b
次幂。Math.sqrt(double a)
:返回平方根。取整:
Math.ceil(double a)
:向上取整,返回大于等于a
的最小整数。Math.floor(double a)
:向下取整,返回小于等于a
的最大整数。Math.round(float a)
:四舍五入,返回最接近的整数。随机数生成:
Math.random()
:返回一个0.0
到1.0
之间的随机小数(包括0但不包括1)。public static void main(String[] args) { int a = -1,b = 2,c = 4; //基本运算 System.out.println(Math.abs(a)); System.out.println(Math.max(a,b)); System.out.println(Math.min(a,b)); System.out.println(Math.pow((double) a,(double) b));//这里面需要时double类型 System.out.println(Math.sqrt((double) c)); System.out.println("---------------"); //取整 float x = 1.5F; double y = 1.4; System.out.println(Math.ceil(y)); System.out.println(Math.floor(x)); System.out.println(Math.round(x) + "||" + Math.round(y)); System.out.println("---------------"); //随机数生成 System.out.println(Math.random()); }
Random
类用于生成伪随机数。与Math.random()
生成的随机数不同,Random
类可以生成多种数据类型的随机数,如int
、long
、float
、double
和布尔值。它提供了更多控制随机数生成的方法,可以指定随机数的范围,还可以通过指定种子(seed
)来生成可预测的随机数序列。
构造方法:
Random()
:构造一个不带种子的随机数生成器。Random(long seed)
:带种子的构造方法,用于生成可预测的随机序列。生成随机数:
nextInt()
:返回任意范围的int
类型随机数。nextInt(int bound)
:返回0
到bound-1
之间的int
随机数。种子操作:
setSeed(long seed)
:设置种子值,从而控制生成的随机数序列。public static void main(String[] args) { Random random = new Random(); System.out.println(random.nextInt()); System.out.println(random.nextFloat()); System.out.println(random.nextInt(20)); }
2.1.4日期时间类
java.time
包是Java本地API中处理日期和时间的主要工具,提供了很多类来处理不同类型的日期、时间和时区操作。1.
LocalDate
LocalDate
类用于表示一个“仅包含日期”的对象,即年、月、日的组合,而不包含具体的时间。比如“2023年11月8日”可以用LocalDate
来表示。2.
LocalTime
LocalTime
类表示一个“仅包含时间”的对象,即小时、分钟和秒等的组合,而不包含具体日期。比如“14:30:00”可以用LocalTime
来表示。3.
LocalDateTime
LocalDateTime
类是LocalDate
和LocalTime
的组合,用于表示日期和时间的组合,但不带有时区信息。比如“2023年11月8日14:30:00”可以用LocalDateTime
表示。4.
Instant
Instant
类表示一个精确到纳秒的时间点,通常用于记录特定时刻(或时间戳),不与日期、时间和时区关联。Instant
适合用于需要高精度记录的场景,如日志的时间戳、事件发生的确切时间等。附上实操:
public static void main(String[] args) { LocalDate today = LocalDate.now(); LocalTime todayTime = LocalTime.now(); LocalDateTime dateTime = LocalDateTime.now(); Instant instant = Instant.now(); System.out.println(today); System.out.println(LocalTime.now()); System.out.println(LocalDateTime.now()); System.out.println(instant.now()); }
2.1.5包装类
包装类是为每种基本数据类型提供的对象封装。包装类可以将基本类型转换为对象,以便在需要对象的上下文中使用,例如在集合中存储基本数据类型。包装类提供了许多实用方法,可以处理基本类型和字符串之间的转换、数值运算等。
每一个基本的数据类型都有对应的包装类,看表格:
byte
Byte
short
Short
int
Integer
long
Long
float
Float
double
Double
char
Character
boolean
Boolean
使用
valueOf()
方法将字符串转换为对应的包装类对象:Integer integer = Integer.valueOf("123");//将字符串转为整型
使用
toString()
方法将包装类对象转换为字符串:public static void main(String[] args) { Integer integer = 123; String str = integer.toString(); if(str instanceof String){ System.out.println("str为字符串类型"); } else System.out.println("啥也不是"); }
用instanceof关键字判断一下类型
2.1.6正则表达式
正则表达式(Regular Expression,简称 Regex)是一种用于匹配和操作字符串的工具。它提供了一种灵活而简洁的方式,用于定义复杂的字符串匹配规则。正则表达式广泛应用于文本搜索、验证、替换等场景,能够在大量文本中快速找到、修改或验证数据。
正则表达式的处理是通过
java.util.regex
包来实现的,该包主要包括两个类:Pattern
和Matcher
。Pattern
用于定义正则表达式,Matcher
用于执行匹配操作。下面附上具体解释:
Pattern 类
Pattern
类用于编译正则表达式。常用方法有:
compile(String regex)
:将正则表达式编译成一个Pattern
对象。matches(String regex, CharSequence input)
:静态方法,检查输入字符串是否完全匹配正则表达式。Matcher 类
Matcher
类用于执行匹配操作。常用方法有:
matches()
:检查整个字符串是否与正则表达式匹配。find()
:在字符串中查找下一个符合正则表达式的子字符串。group()
:返回最近一次匹配的子字符串。replaceAll(String replacement)
:替换所有匹配的子字符串。正则表达式常用的符号:
符号 描述 .
匹配任意单个字符(除换行符) \d
匹配数字 [0-9]
\D
匹配非数字 \w
匹配字母、数字或下划线 \W
匹配非字母、数字或下划线 \s
匹配空白字符(空格、制表符等) \S
匹配非空白字符 ^
匹配行的开头 $
匹配行的结尾 *
匹配前一个字符 0 次或多次 +
匹配前一个字符 1 次或多次 ?
匹配前一个字符 0 次或 1 次 {n}
匹配前一个字符 n 次 {n,}
匹配前一个字符至少 n 次 {n,m}
匹配前一个字符至少 n 次,至多 m 次 [abc]
匹配字符 a
、b
或c
[^abc]
匹配除 a
、b
、c
外的任意字符(abc)
匹配子表达式 abc
下面给上示例,以下的示例仅修改部分但结果不同,可以观察学习一下:public static void main(String[] args) { String str1 = "\\d"; String str2 = "1"; boolean istrue = Pattern.matches(str1,str2); System.out.println(istrue); }
此运行为true。
public static void main(String[] args) { String str1 = "\\d"; String str2 = "123"; boolean istrue = Pattern.matches(str1,str2); System.out.println(istrue); }
运行为false。
public static void main(String[] args) { String str1 = "\\d+"; String str2 = "123"; boolean istrue = Pattern.matches(str1,str2); System.out.println(istrue); }
运行为true。
public static void main(String[] args) { String str1 = "\\d+"; String str2 = "123好"; boolean istrue = Pattern.matches(str1,str2); System.out.println(istrue); }
运行为false。
还可以用正则表达式查找子字符串:
public static void main(String[] args) { String regex = "\\beating\\b"; String input = "I love eating and sleeping."; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(input); while (matcher.find()) { System.out.println("找到匹配: " + matcher.group()); } }
运行结果:
也可以用来字符串替换:
public static void main(String[] args) { String regex = "\\d"; String input = "我有123个苹果"; System.out.println("原结果为:" + input); String result = Pattern.compile(regex).matcher(input).replaceAll("#"); System.out.println("替换结果: " + result); }
详细解释下为何出现图中结果的:
Pattern.compile(regex)
:编译给定的正则表达式regex
,返回一个Pattern
对象。matcher(input)
:在指定的输入字符串input
上创建一个匹配器对象Matcher
,用于查找和替换匹配的子字符串。replaceAll("#")
:将input
中所有匹配regex
的部分替换为"#"
,并返回替换后的新字符串。正则表达式先讲这么多。
3.小结
今天的分享到这里就结束了,喜欢的小伙伴点点赞点点关注,你的支持就是对我最大的鼓励,加油!
原文地址:https://blog.csdn.net/2301_81073317/article/details/143116040
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!