java基础-正则表达式+文件操作+内置包装类

目录

  • 正则表达式
    • 去除字符串前后空格:
    • 去除每一行中首尾的空格
    • 去除开头的 '数字_'
  • 文件操作
    • 打印当前项目路径
    • 获取文件的上级目录
    • /和\
    • 读取文件
  • 内置包装类
    • System类
      • 常用方法
    • Number类
      • Integer类常用方法
      • Float和Double

正则表达式

去除字符串前后空格:

str.trim()

去除每一行中首尾的空格

import java.util.regex.*;
Pattern pt = Pattern.compile("^\\s*|\\s*$");
Matcher mt = pt.matcher(line);
String str = mt.replaceAll("");

去除开头的 ‘数字_’

import java.util.regex.Matcher;
import java.util.regex.Pattern;// 处理例如 '0_1_a_test.docx',只需要去掉最开始的 'idx_'
String str = "10_1_a_test.docx";
Pattern p = Pattern.compile("\\d*_"); //匹配一个或多个数字再加一个下划线
Matcher m = p.matcher(str);
String tempAttachName = m.replaceFirst(""); // 输出:1_a_test.docx

文件操作

打印当前项目路径

System.getProperty("user.dir")
这是项目根目录路径,下面的自己写==

获取文件的上级目录

import java.io.File;public class DirSize {public static void main(String[] args) {File dir = new File("/home/huanyu/Desktop");String parentPath =dir.getParent();System.out.println("该目录的上级目录为:"+parentPath);}
}

/和\

windows和Linux的文件分隔符不同,获取方式

import java.io.File;public class test{public static void main(String args[]) {String a = System.getProperty("file.separator");System.out.println(a);System.out.println(File.separator);}
}

读取文件

FileInputStream fis = new FileInputStream(filePath); // filePath是自定义路径str
// 指定编码格式
BufferedReader br = new BufferedReader(new InputStreamReader(fis, "utf-8"));
String line = null;
while ((line = br.readLine()) != null) {//System.out.println(line);//break;
}
fis.close();这个方便在于能快速处理:
//1. filter line 3
//2. convert all content to upper case
//3. convert it into a List
list = stream.filter(line -> !line.startsWith("line3")).map(String::toUpperCase).collect(Collectors.toList());Charset c = Charset.forName("UTF-8");
//System.out.println(Charset.isSupported("UTF-8"));
try(Stream<String> stream = Files.lines(Paths.get(filePath), c)) {List<String> raws = new ArrayList<>();raws = stream.collect(Collectors.toList());for (String s:raws) {//System.out.println(s);}
} catch(IOException e) {e.printStackTrace();
}      

内置包装类

Object类是所有类的父类,如果一个类被定义后,没有指定继承的父类,那么默认父类就是Object类。因此Object类中定义的方法,其他类也可以用:如equals()和getClass()。

public static void printClassinfo(Object obj){//获取类名System.out.println("类名:"+obj.getClass().getName());//获取父类名System.out.println("父类:"+obj.getClass().getSuperclass().getName());System.out.println("实现的接口有:");//获取实现的接口并输出for(int i=0;i<obj.getClass().getInterfaces().length;i++){System.out.println(obj.getClass().getInterfaces()[i] + "\n");}}

System类

构造方法是private,所以不能创建它的对象,不能实例化它。其内部的成员变量和方法都是static的,可以调用。成员变量有:

  1. PrintStream out 标准输出流,如println就是out的方法,不是System的方法
  2. InputStream in 标准输入流
  3. PrintStream err 标准错误输出流
public void contextLoads() {int c;try {// 使用System.in的话读汉字会出错,用InputStreamReader// 并指定编码集才可以c = System.in.read(); //InputStreamReader in = new InputStreamReader(System.in, "UTF-8");//c = in.read();while (c != '\r') {System.out.print((char) c);//c = in.read();c = System.in.read(); }} catch(IOException e) {System.out.println("\nThis is IOException: \n");System.out.println(e.toString());} finally {System.out.println("\nThis is finally bloc: \n");System.err.println();}}

常用方法

  1. 数组复制
    arraycopy方法:从原数组中截取一段,替换到目标数组中
    System.arraycopy(dataType[] srcArray,int srcIndex,dataType[] destArray,int destIndex,int length)此方法要求srcIndex+length <= srcArray.length且destIndex+length <= destArray.length
    如果目标数组存在,不会重构,相当于替换部分元素
    System.arraycopy(scores,0,newScores,2,8);
    这里表示使用scores数组的[0,8)替换newScores数组的[2, 10)

  2. 获取当前的计算机时间

long start=System.currentTimeMillis();
// code block
long end = System.currentTimeMillis();
double time=(end-start) / 1000.0;

因为获取的都是毫秒,要除以1000换算到秒

  1. 终止当前正在运行的Java虚拟机
public static void exit(int status)

status为0时表示正常退出,非0时是异常。在图形界面编程中实现程序的退出功能。

  1. 获得系统级的参数
System.getProperty(属性名);System.out.println(System.getProperty("java.version"));System.out.println(System.getProperty("java.home"));System.out.println(System.getProperty("os.name"));System.out.println(System.getProperty("os.version"));System.out.println(System.getProperty("user.name"));System.out.println(System.getProperty("user.home"));System.out.println(System.getProperty("user.dir")); 

Number类

Number类是一个抽象类,属于java.lang,数字类包装类都是Number的子类。它定义了一些抽象方法,以各种不通过数字格式返回对象的值,如xxxValue()方法,就是将Number对象转换为xxx数据类型的值返回。抽象类是不能直接实例化的,要实例化具体的子类:

Number num = new Double(12.5);
System.out.println("返回 int 类型的值:"+num.intValue());

各个子类中都有类似方法,替换类型即可

Integer类常用方法

Integer integer1=new Integer(100); //以 int 型变量作为参数创建 Integer 对象 Integer integer2=new Integer(“100”); //以 String 型变量作为参数创建 Integer 对象
Integer.parseInt(str)	String转int
Integer.toString(i)	int转String
Integer.toBinaryString(num)	int转二进制字符串
Integer.toHexString(num)	
Integer.toOctalString(num)	
compareTo(Integer other)	比较两个Integer带的数值,相等返回0;如果小于other返回负值,大于other返回正值
valueOf(String s)	返回保存指定的String值的Integer对象
int month = Integer.valueOf(date.substring(5,7));
如果需要解析的字符串有前导0,如"02",会正常解析为2
intValue()	返回这个Integer带的int值

Integer类的常量
int max_value=Integer.MAX_VALUE;	2^31-1, 2147483647
Integer.MIN_VALUE;	-2^31, -2147483648
Integer.SIZE	32
Class c=Integer.TYPE	int

Float和Double

Float类常用方法
构造函数的参数可以带double,float,String
Float.parseFloat(str)	字符串转float
Float.toString(f)	float转字符串
isNaN(float v)	v是非数字值,返回true
isNaN()	此Float是非数字值,返回true
valueOf(String s)	返回保存指定String值的Float对象

Float类常用常量(可以用反射去看)

getFields() getDeclareFields()
System.out.println(Float.MAX_VALUE); //3.4028235E38
System.out.println(Float.MIN_NORMAL); // 1.17549435E-38
System.out.println(Float.MIN_VALUE); // 1.4E-45
System.out.println(Float.MAX_EXPONENT); // 127
System.out.println(Float.MIN_EXPONENT); // -126
System.out.println(Float.SIZE); // 32

Double的常用方法与Float的类似,直接替换为Double即可

System.out.println(Double.MAX_VALUE); // 1.7976931348623157E308
System.out.println(Double.MIN_NORMAL); // 2.2250738585072014E-308
System.out.println(Double.MIN_VALUE); // 4.9E-324
System.out.println(Double.MAX_EXPONENT); // 1023
System.out.println(Double.MIN_EXPONENT); // -1022
System.out.println(Double.SIZE); // 64

Boolean和Byte

Boolean(boolean boolValue); 
Boolean(String boolString);
System.out.println(Byte.MAX_VALUE); // 127
System.out.println(Byte.MIN_VALUE); // -128
System.out.println(Byte.SIZE); // 8

Character类
包含一个char。常用方法:
is系列:isDigit(char ch) isLowerCase(char ch) isUpperCase(char ch)
isLetter(int codePoint) isLetterOrDigit(int codePoint)

to系列:char toLowerCase(char ch) char toUpperCase(char ch)

另外,compareTo返回的是两个字符的标准代码差值,如

Character character=new Character('A');
int result1=character.compareTo(new Character('V'));
System.out.println(result1);    // 输出:-21
int result2=character.compareTo(new Character('B'));
System.out.println(result2);    //输出:-1
int result3=character.compareTo(new Character('1'));
System.out.println(result3);    //输出:16

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/487621.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【mysql】时间戳与date互转

查看当前时区 show variables like %time_zone%;时间戳与date互转的注意事项 UNIX_TIMESTAMP() 与 FROM_UNIXTIME() 是一对儿时区要相同不指定时区时&#xff0c;使用mysql配置的默认时区。参考“查看当前时区”。 date转时间戳 时间戳转date 参考 https://dev.mysql.com/d…

go使用trpc案例

1.go下载trpc go install trpc.group/trpc-go/trpc-cmdline/trpclatest 有报错的话尝试配置一些代理&#xff08;选一个&#xff09; go env -w GOPROXYhttps://goproxy.cn,direct go env -w GOPROXYhttps://goproxy.io,direct go env -w GOPROXYhttps://goproxy.baidu.com/…

Android进阶之旅(第5天)

充实的一天又过去了&#xff0c;今天真的好冷啊&#xff0c;我们这里雪很大&#xff0c;早上最傻逼的决定就是穿了一个短的棉袜出来&#xff0c;漏脚踝&#xff0c;冷成傻子 接下来老规矩&#xff0c;看下昨天计划的完成情况&#xff1a; 今日计划&#xff1a; 1.过bug 2.看…

Jmeter基础(3) 发起一次请求

目录 Jmeter 一次请求添加线程组添加HTTP请求添加监听器 Jmeter 一次请求 用Jmeter进行一次请求的过程&#xff0c;需要几个步骤呢&#xff1f; 1、添加线程组2、添加HTTP请求3、添加监听器&#xff0c;查看结果树 现在就打开jmeter看下如何创建一个请求吧 添加线程组 用来…

代码随想录算法训练营day24|理论基础、77. 组合

理论基础 题目链接/文章讲解&#xff1a;代码随想录 视频讲解&#xff1a;带你学透回溯算法&#xff08;理论篇&#xff09;| 回溯法精讲&#xff01;_哔哩哔哩_bilibili 回溯法也可以叫做回溯搜索法&#xff0c;它是一种搜索的方式。回溯是递归的副产品&#xff0c;只要有递归…

基于HC32F4A0伺服驱动提高pwm 开关频率的一种方法

原驱动器默认设定的PWM最大工作频率为20kHz&#xff0c;在这种配置下&#xff0c;电流检测机制是与PWM定时器同步的&#xff0c;即每当PWM周期循环一次时&#xff0c;ADC便会触发一次电流采样。与此同时&#xff0c;伺服控制算法也以每50微秒&#xff08;对应于20kHz&#xff0…

微服务三十五关

1.微服务有什么好处&#xff1f; 微服务优点很多&#xff0c;但是我们通常说一个东西好肯定会跟另一个东西比较&#xff0c; 通常说微服务好会和单体项目进行比较。以下是微服务相对于单体项目的一些显著好处&#xff1a; 首先&#xff0c;让我们讨论单体项目的一些主要缺点&a…

Spring工厂API与原理

文章目录 1. Spring 核心 API2. 程序开发3. 细节分析3.1 名词解释3.2 Spring⼯⼚的相关的⽅法3.3 配置⽂件中需要注意的细节 4. Spring⼯⼚的底层实现原理(简易版)5. 思考 1. Spring 核心 API ApplicationContext 作⽤&#xff1a;Spring 提供的 ApplicationContext 这个⼯⼚…

【Java程序设计】【C00267】基于Springboot的在线考试系统(有论文)

基于Springboot的在线考试系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 本系统是基于Springboot的在线考试系统&#xff1b;本系统主要分为管理员、教师和学生三种角色&#xff1b; 管理员登录系统后&#xff0c;可以对首页&#x…

vue 手势解锁功能

效果 实现 <script setup lang"ts"> const canvasRef ref<HTMLCanvasElement>() const ctx ref<CanvasRenderingContext2D | null>(null) const width px2px(600) const height px2px(700) const radius ref(px2px(50))const init () > …

Java字符集【ASCII,GBK,Unicode】

1.常见字符集 1.标准ASCII字符集 美国信息交换标准代码&#xff0c;包括了英文、符号等。 标准ASCII使用1个字节存储一个字符&#xff0c;首位是0&#xff0c;总共可表示128个字符&#xff0c;对美国人来说完全够用。 2.GBK&#xff08;汉字内码扩展规范&#xff0c;国标&#…

【GB28181】wvp-gb28181-Pro 运行错误汇总避坑大全(持续更新)

快捷查找 1、【问题】终端控制台打印的日志乱码 1、【问题】终端控制台打印的日志乱码 【解决】 由于windows系统默认编码是gbk,导致jar包在windows系统运行中文会导致乱码 控制台日志乱码&#xff1a; 打开cmd命令框&#xff0c;输入以下命令 chcp 65001 更改cmd的编码为UTF-8…