小汤学编程之JAVA基础day10——常用类(二):String常用方法、正则、StringBuffer和StringBuilder、Math和Random类、日期类和数字类

这篇博客介绍了Java编程的基础知识,包括String的常用方法,正则表达式的基础、常用和高级应用,StringBuilder和StringBuffer的区别及常用操作,Math类的常用数学方法和Random类的随机数生成。此外,还讲解了日期类如Date、Calendar和SimpleDateFormat的使用,以及数字类BigDecimal、BigInteger和DecimalFormat的精确计算和格式化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

一、String常用方法
二、正则表达式
1.基本     2.常用     3.高级
三、StringBuilder和StringBuffer类
1.区别     2.常用方法     3.继承结构图
四、Math和Random类
1.Math 的常用方法     2.Random 的常用方法
五、日期类
1.Date类     2.Calender类     3.SimpleDateFormat类
六、数字类
1.BigDecimal类     2.BigInteger类     3.DecimalFormat类

一、String常用方法

功能代码
长度.length()
拼接.concat() (相比于用+号拼接,该方法使用数组更加有效率)
格式化方式一(常用):.printf(“大家好,我的名字叫:%s,我今年:%d岁了”,“曹操”,18);方式二:.format(参数同方法一) (区别在于是直接用String类名调用)
返回指定索引出的字符.charAt() (如果没找到会报错)
返回指定字符串在此字符串中第一次出现处的索引.indexOf() (如果没找到返回-1)
比较两份字符串.compareTo() (返回的是两个字符串首个不同字符的编码的差,若都相同则返回长度的差) (.compareToIgnoreCase() 忽略大小写)
比较值是否相等.equals() (.equalsIgnoreCase() 忽略大小写 )
转换为字节数组.getBytes() (I/O流中会用到) (utf-8字符集,一个汉字对应3个字节,24个二进制位)
转换为字符数组.toCharArray()
截取.subString( , ) (前闭后开)
大小写转换.toLowerCase()/.toUpperCase()
去掉前后空白.trim()
替换.replace()
分割.split()
正则匹配.matches(String reg)

二、正则表达式

1.基本
表达式功能
“abc123-”对应字符匹配
[ ]匹配括号中任意字符 “[A-z0-9]” 匹配所有数字或字母
-在中括号里表示谁到谁的范围,在中括号外表示自己
$表示以谁结尾
2.常用
表达式功能
.表示匹配任意字符
\\d  \\D表示数字/非数字
\\w  \\W表示(非)字母/数字/下划线
[\u4e00-\u9fa5]匹配汉字
3.高级
表达式功能
?:表示出现 0次 或 1次
+表示出现 1次 或 多次
*表示出现任意次 (包括0/1/多次)
{n}表示出现n次
{n,m}表示出现 n~m次
{n, }表示出现 n次 及以上
(?![A-z]{5,11}$)表示排除后面出现该匹配的情况

三、StringBuilder和StringBuffer类

两者的用法基本一样。

1.区别
  • String 是不可变对象,每次进行修改都等同于生成了新的String对象,然后将指针指向新的String对象,效率低下,浪费大量有限的内存空间,故经常改变内容的最好不要使用String。
  • StringBuffer和StringBuilder的对象能被多次修改且不产生新的未使用对象。
  • StringBuilder类在Java5中提出,之与StringBuffer最大的区别是,前者速度更快但线程不安全,后者速度一般但线程安全。所以常用前者。
2.常用方法
(1)追加 .append()
StringBuilder s = new StringBuilder("hel哈喽low");
s.append("你好"); // 追加
System.out.println(s); // hel哈喽low你好
(2)插入 .insert()
s.insert(6,"kitty"); // 插入(要插入的下标,要插入的内容)
System.out.println(s); // hel哈喽lkittyow你好
(3)倒置 .reverse()
s.reverse();// 倒置
System.out.println(s); // 好你woyttikl喽哈leh
3.继承结构图

在这里插入图片描述

四、Math和Random类

1.Math 的常用方法
方法功能
.ceil()/.floor()/.round()向上/向下/四舍五入取整
.abs()绝对值
.random()随机数 范围:[0,1) 的小数
.pow( , ) / .sqrt()幂/平方根
2.Random 的常用方法
(1)无参构造生成随机数
Random r = new Random();  
(2)有参构造生成随机数
Random r2 = new Random(9);//根据参数种子来创建伪随机数
(3)XX范围的伪随机数
r3.nextXX();//XX范围的伪随机数

// 比如:
r3.nextInt();//返回int范围随机整数,若加参数则前闭后包

五、日期类

1.Date类
(1)创建当前时间的Date对象
Date d = new Date();
(2)创建指定时间的Date对象
Date d = new Date(2020-1900,10-1,31);
(3)一系列get/set方法

.getMonth()、getDate()、setMinutes( )等

2.Calender类
(1)介绍

Calendar类的功能要比Date类强大很多,考虑了时区等问题。

它是一个抽象类,提供了getInstance方法用来创建对象。

(2)创建当前日期对象
Calendar c = Calendar.getInstance();
(3)创建指定日期对象

创建当前日期对象后使用set

c.set(2020, 10 - 1, 31);
c.set(Calendar.YEAR,2020);
(4)一系列get/set方法

c.get(Calendar.YEAR)、c1.get(Calendar.DATE)等

(5)和Date关联
.setTime(new Date());
3.SimpleDateFormat类(日期格式化类)
(1)创建格式化对象
SimpleDateFormat f = new SimpleDateFormat("yy年MM月dd日 HH:mm:ss");
(2)format方法
f.format(date); // 将Date数据按格式转化为字符串
(3)String方法
f.parse("2020年10月31日 16:23:59"); // 将符合格式的字符串转化为Date数据

六、数字类

double相减会转换为二进制,因它的有效位数16会出现存储小数位不够的情况,就会出现误差,不满足某些对数字要求比较高的程序的需求,比如金融类。所以出现了数字类来解决这些问题。

1.BigDecimal类

用于小数的精确计算。
参数必须为字符串,否则仍然会有精度问题。

常用方法:

方法操作
.add(b)
.subtract(b)
.multiply(b)
.divide(b)
2.BigInteger类
(1)超长整数的创建与计算
BigInteger in1=new BigInteger("9999999999999999");//创建
in1.add(in2)// 计算
(2)进制转换
方法代码
十进制转二进制.intValue() (会直接改变原对象的值)
二进制转其他进制.toString(10) (不会改变原对象的值)
3.DecimalFormat类

按 某格式 四舍五入 精确 (不足部分用0填补)

System.out.println(new DecimalFormat("0.000").format(3.1415926)); // 3.142  "0.000"
System.out.println(new DecimalFormat("#").format(3.1415926)); // 3  "#"(取整)
System.out.println(new DecimalFormat("#.###%").format(3.1415926)); // 314.159% "#.##%"(百分比格式)
System.out.println(new DecimalFormat("#.###E0").format(299792458)); // 2.998E8 "#.###E0"(科学计数法)
System.out.println(new DecimalFormat(",###").format(299792458)); // 299,792,458 (每三位以逗号进行分隔)
System.out.println(new DecimalFormat("光速大小为每秒,###米。").format(299792458)); // 按格式嵌入文本
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值