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://xiahunao.cn/news/2806406.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

uTools:打造你的个性化效率工具箱

名人说&#xff1a;莫道桑榆晚&#xff0c;为霞尚满天。——刘禹锡&#xff08;刘梦得&#xff0c;诗豪&#xff09; 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 一、什么是uTools&#xff1f;①uTools②功能 二…

进程与线程之进程的理解

首先对堆栈等进程运行过程中的内存有了更深层次的理解&#xff1a; 我们之前了解到&#xff0c;程序在运行中存在堆栈&#xff0c;字符串常量区代码区。 现在我们提出虚拟内存的概念&#xff1a;程序在运行的过程中开辟0~4G的虚拟空间使用MUU映射单元映射到物理地址上 简而言…

28V、115V、270V坦克装甲车启动电源:为现代战争注入新能量

28V、115V、270V坦克装甲车启动电源&#xff1a;为现代战争注入新能量 世界新格局的诞生后&#xff0c;现代战争已经从传统的陆地、海洋、空中扩展到了网络空间和外太空。在这种背景下&#xff0c;各种先进的武器装备不断涌现&#xff0c;为国家安全提供有力保障。28V、115V、2…

【Unity】提示No valid Unity Editor liscense found.Please active your liscense.

有两个软件&#xff0c;如果只有一个&#xff0c;点黑的不会有效果、、、、&#xff08;楼主是这个原因&#xff0c;可以对号入座一下&#xff09; 简而言之&#xff0c;就是去下载Unity Hub&#xff0c;再里面激活管理通行证 问题情境&#xff1a; 点击unity出现以下弹窗&a…

C语言-指针详解速成

1.指针是什么 C语言指针是一种特殊的变量&#xff0c;用于存储内存地址。它可以指向其他变量或者其他数据结构&#xff0c;通过指针可以直接访问或修改存储在指定地址的值。指针可以帮助我们在程序中动态地分配和释放内存&#xff0c;以及进行复杂的数据操作。在C语言中&#…

一些PCB整改优化经验总结

一个UP的PCB整改经验&#xff1a; 当正面全局铺铜之后出现很多小铜皮碎片的时候不如不铺铜或者单面铺铜RJ45网口的地和整体的地分开&#xff0c;两地之间通过电容相连&#xff08;整板地一定要相连&#xff09;TVS这种防浪涌高压的器件的地单独铺设&#xff0c;这样当高压来临…

配电网重构知识及matlab实现

配网重构中&#xff0c;很重要的一个约束条件为配网应随时保持开环、辐射的状态&#xff1a; 配电网系统是属于闭环设计但是开环运行的系统&#xff0c;因此&#xff0c;在开关的开闭过程中&#xff0c;随时保持配电网的开环状态时很重要。Mendoza等利用图论&#xff0c;尤其是…

基于ElementUI封装省市区四级联动下拉选择

基于ElementUI封装的省市区下拉级联选择 效果 数据 最新省市区JSON数据获取&#xff1a;https://xiangyuecn.github.io/AreaCity-JsSpider-StatsGov/ 参数说明 参数说明inputNumShow下拉框的数量&#xff0c;最多4个defaultAddress默认显示省市区 例&#xff1a;[‘安徽’, …

音视频剪辑|Windows|抽帧和合帧

什么是抽帧&#xff1f; FFmpeg 抽帧&#xff08;Extracting frames&#xff09;的作用是从视频文件中按需提取单张或多张静止图像&#xff08;帧&#xff09;&#xff0c;并将它们保存为图片文件&#xff08;如 JPEG、PNG 等格式&#xff09;。这一功能在以下场合十分有用&am…

一元函数微分学——刷题(18

目录 1.题目&#xff1a;2.解题思路和步骤&#xff1a;3.总结&#xff1a;小结&#xff1a; 1.题目&#xff1a; 2.解题思路和步骤&#xff1a; 遇到绝对值函数&#xff0c;需要把它转化为分段函数&#xff0c;从而更加方便求导数&#xff1a; 3.总结&#xff1a; 遇到绝对…

Docker容器实战

"爱在&#xff0c;地图上&#xff0c;剥落~" Mysql 容器化安装 我们可以在 docker hub上&#xff0c;进入mysql的镜像仓库&#xff0c;找到适合的版本。 直接拉取镜像: docker pull mysql:latest 我们知道 msyql 的默认端口是 3306 &#xff0c;而且有密码&#x…

计算机网络实验四VLAN与三层交换机

一、实验目的和要求 1&#xff09;掌握VLAN的基本配置方法&#xff0c;理解VLAN的功能和作用&#xff1b; 2&#xff09;掌握三层交换机的基本配置方法。 二、实验环境 1&#xff09;运行Windows 2008 Server/XP/7操作系统的PC一台。 2&#xff09;PacketTracer。 实验内…

电子器件系列63:肖特基二极管NSQ03A04\SS34C

以下是肖特基二极管_SS34C_规格书_SLKOR(萨科微),立创编号C880740 以下是肖特基二极管NSQ03A04的规格书&#xff1a; 稍微比较下参数&#xff0c;发现两者参数接近&#xff0c;ss34的几个参数还要略微好一些&#xff0c;可以用ss34来作替换。 在电源电路中的应用&#xff1a; …

python实现贝尔曼福德算法

对于求图的最短路径问题,如果使用迪杰斯特拉算法,也可以算是一个较为常见的方法,但是对于迪杰斯特拉算法解决最短路径问题的时候,会存在一个问题,那就是所有边所对应的距离都必须是正数,而如果在存在负数的边的时候,迪杰斯特拉算法就会存在问题,而对于存在负数的这种情…

Bean的声明周期

1.创建Bean对象&#xff08;调用无参数构造&#xff09; 2.给bean对象设置相关属性&#xff08;依赖注入&#xff09; 3.bean后置处理器&#xff08;初始化前执行&#xff0c;类似于过滤器和拦截器&#xff09; 首先要定义一个类MyBeanPost&#xff0c;实现BeanPostProcessor…

Freertos实时操作系统---基于STM32

一、Freertos简介 1.Freertos介绍 1&#xff09;RTOS指的是一类的实时操作系统 2&#xff09;rtos的使用&#xff1a;用户根据对任务来设置其优先级然后来使用调度器来决定哪一个任务来先执行。 3&#xff09;Freertos的文件数量远低于其他操作系统 4&#xff09;主要特点&…

[rust] 10 project, crate, mod, pub, use: 项目目录层级组织, 概念和实战

文章目录 一 项目目录层级组织概念1.1 cargo new 创建同名 的 Project 和 crate1.2 多 crate 的 package1.3 mod 模块1.3.1 创建嵌套 mod1.3.2 mod 树1.3.3 用路径引用 mod1.3.3.1 使用绝对还是相对? 1.3.4 代码可见性1.3.4.1 pub 关键字1.3.4.2 用 super 引用 mod1.3.4.3 用 …

Win11网络连接选项和蓝牙选项突然消失的解决办法

在设置或者开始栏里搜索“网络重置” 打开网络重置&#xff1a; 然后点击立即重置&#xff0c;之后按照系统提示操作即可

51单片机学习(4)-----独立按键进一步控制LED灯

前言&#xff1a;感谢您的关注哦&#xff0c;我会持续更新编程相关知识&#xff0c;愿您在这里有所收获。如果有任何问题&#xff0c;欢迎沟通交流&#xff01;期待与您在学习编程的道路上共同进步。 目录 一. 独立按键灵活控制LED 程序一&#xff1a;单个独立按键控制多个…

C++ 二分法

目录 1、704. 二分查找 2、34. 在排序数组中查找元素的第一个和最后一个位置 3、69. x的平方根 4、35. 搜索插入位置 5、852. 山脉数组的峰顶索引 6、162. 寻找峰值 7、153. 寻找旋转排序数组中的最小值 8、LCR 173. 点名 1、704. 二分查找 ​ class Solution {…