济南建设局网站拍照搜索百度识图
基本数据类型包装类
Java是一种纯面向对象语言,但是java中有8种基本数据类型,破坏了java为纯面向对象的特征。为了承诺在java中一切皆对象,java又给每种基本数据类型分别匹配了一个类,这个类我们称之为包装类/封装类。每个基本数据类型都有一个与之匹配的包装类。
八大基本数据包装类
int的包装类的写法为Integer,char的包装类的写法是Character。其余基本数据类型的包装类均是基本类型的首字母大写。
包装类的层次结构
包装类中常用的方法
装箱:把基本数据类型包装为对应的包装类对象 10
Integer i1 = new Integer(10); // 利用构造方法
Integer i2 = Integer.valueOf(10); //利用包装类中的静态方法
拆箱:把包装类对象转换为对应的基本数据类型。
int i3= i1.intValue(); //返回包装类对象i1对应的基本数据
自动装箱和自动拆箱,简化了对包装类的操作。
字符串相关的类
String类
String是不可变类, 即一旦一个String对象被创建, 包含在这个对象中的字符序列是不可改变的, 直至该对象被销毁。String类是final类,不能有子类。
获得新字符串的常用方法
- String concat(String str) 在原有字符串的尾部添加参数字符串,返回一个新的字符串(总是堆内存中的对象),如果str的长度为0,则返回原字符串。str不能为空。
- String subString(int beginIndex) 获得从beginIndex开始到结束的子字符串。( 包括beginIndex位置的字符)
- public String toLowerCase() 把字符串中的英文字符全部转换为小写字符,返回值为装换后的新的字符串。
- public String toUpperCase() 把字符串中的英文字符全部转换为大写字符,返回值为装换后的新的字符串。
- public String trim() 把字符串中的首尾空白字符去掉
- public String replace(CharSequence target, CharSequence replacement) 使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串
- public String replace(char oldChar, char newChar) 返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
- public String replaceAll(String regex, String replacement) 使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
public replaceFirst(String regex, String replacement) 使用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。
字符串比较
1、”==”表示判断该两个字符串是否为同一对象,即在内存中的地址是否一样。如果一样则返回true 否则返回false; 和我们通常的是否为同一对象的是一样的。
2、boolean equals(Object anObject) 将此字符串与指定的对象比较。注意此时比较的是内容是否相等(字符串类对此方法进行了覆写)。
3、boolean equalsIgnoreCase(String anotherString) 将此 String 与另一个 String 比较,不考虑大小写。
例如:”abc”. equalsIgnoreCase(“AbC”); // true
4、int compareTo(String value) 按字典顺序比较两个字符串。如果两个字符串相等,则返回0;如果字符串在参数值之前,则返回值小于 0;如果字符串在参数值之后,则返回值大于 0
5、int compareToIgnoreCase(String val) 按字典顺序比较两个字符串,不考虑大小写
6、boolean startsWith(String value) 检查一个字符串是否以参数字符串开始。
7、boolean endsWith(String value) 检查一个字符串是否以参数个字符串结束。
字符串查找
其他数据类型转换字符串
String类中定义了一些静态的重载方法
- public static String valueOf(…)可以将基本类型数据、Object类型转换为字符串。
- public static String valueOf(double d) 把double类型数据转成字符串
- public static String valueOf(Object obj) 调用obj的toString()方法得到它的字符串表示形式。
StringBuffer类
StringBuffer代表可变的字符序列。StringBuffer称为字符串缓冲区,它的工作原理是:预先申请一块内存,存放字符序列,如果字符序列满了,会重新改变缓存区的大小,以容纳更多的字符序列。StringBuffer是可变对象,这个是String最大的不同。
创建StringBuffer对象
StringBuffer可以理解为一个字符串容器,可以动态的改变容器中的内容。
StringBuffer类的常用构造方法:
- StringBuffer():构造一个其中不带字符的字符串缓冲区,初始容量为 16 个字符
- StringBuffer(String str):构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容
StringBuffer常用方法
StringBuilder类
StringBuilder与StringBuffer的用法完全一致,唯一的区别是StringBuffer是线程安全的,而StringBuilder不是线程安全的。所以StringBuilder的性能要比StringBuffer要好。单线程推荐使用StringBuilder,多线程使用StringBuffer。
Pattern类 及 Matcher
- Pattern:代表正则表达式的匹配模式
- Matcher:提供了对正则表达式的分组支持,以及对正则表达式的多次匹配支持
验证QQ邮箱
String str = "1234567891@qq.com";String regex = "\\d{5,11}@qq\\.com";//boolean matches = str.matches(regex);boolean matches = Pattern.matches(regex , str);System.out.println(matches);
分隔路径
String str = "C:\\data\\log\\log.txt";String regex = ":?\\\\";//String[] split = str.split(regex);Pattern pattern = Pattern.compile(regex);//创建匹配模式对象String[] split = pattern.split(str);for (String s : split) {System.out.println(s);}
Pattern+Matcher 找到前端代码中的图片路径
String str = "<img src='hhy/aaa.jpg'/><div><div/> <input type='image' src='submit.gif' /><img src='bbb.jpg'/>";String regex = "<img\\b[^>]*\\bsrc\\b\\s*=\\s*('|\")?([^'\"\n\r\f>]+(\\.jpg|\\.bmp|\\.eps|\\.gif|\\.mif|\\.miff|\\.png|\\.tif|\\.tiff|\\.svg|\\.wmf|\\.jpe|\\.jpeg|\\.dib|\\.ico|\\.tga|\\.cut|\\.pic)\\b)[^>]*>";Pattern pattern = Pattern.compile(regex);//创建匹配模式对象Matcher matcher = pattern.matcher(str);//获取匹配结果System.out.println("在字符串中是否整个匹配:" + matcher.matches());System.out.println("在字符串中是否开头就匹配:" + matcher.lookingAt());System.out.println("在字符串中是否有包含匹配:" + matcher.find());while(matcher.find()){System.out.println(matcher.group()); //matcher.group(2)-->获取正则表达式里第二个括号(组)里的内容System.out.print("start:"+matcher.start()); System.out.println(" end:"+matcher.end()); }
总结:Pattern与Matcher一起合作,Matcher类提供了对正则表达式的分组支持,以及对正则表达式的多次匹配支持,单独用Pattern只能使用Pattern.matches(String regex,CharSequence input)一种最基础最简单的匹配。
日期时间类
Date类
java.util.Date类表示特定的瞬间,精确到毫秒。
SimpleDateFormat类
将显示的日期信息格式化
Calendar类
Calendar类(日历)是一个抽象基类,主要用于完成日期字段之间相互操作的功能。即可以设置和获取日期数据的特定部分。
Math类
- Math 类提供了一序列基本数学运算和几何函数的方法。
- Math类是final类,并且它的所有成员变量和成员方法都是静态的。
Math类的常量和常用方法
常量:
static double
E
比任何其他值都更接近 e(即自然对数的底数)的 double 值。static double
PI
比任何其他值都更接近 pi(即圆的周长与直径之比)的 double 值。常用方法:Math内的所有方法均为静态的。
BigInteger类和BigDecemal类
- BigInteger: 能表示比Integer更大的数字
- BigDecimal:浮点数的计算
System类
Java程序的运行平台
- System类提供了一些静态属性和方法,允许通过类名直接调用。
- System类提供了代表标准输入、标准输出、错误输出的类属性。
- System类提供了一些静态方法用于访问环境变量、系统属性的方法。
System类属性
static PrintStream | err |
static InputStream | in |
static PrintStream | out |
System类方法
- public static void exit(int status) 退出当前虚拟机
- public static long currentTimeMillis() 获得当前系统的毫秒值(与1970 年 1 月 1 日午夜之间的时间差)--测试程序的消耗时间
- public static Properties getProperties() 获得当前的所有系统属性
- public static String getProperty(String key) 获得指定键的系统属性
- public static void setIn(InputStream in) 输入重定向
- public static void setOut(PrintStream out) 输出重定向
- public static void setErr(PrintStream err) 错误重定向
- public static void arraycopy(Object src,int srcPos, Object dest, int destPos, int length)
拷贝数组
Runtime类
- Runtime代表Java程序的运行时环境,可以通过 getRuntime 方法获取当前运行时。
- 应用程序不能自己创建Runtime对象,可以通过Runtime的静态方法getRuntime()获得Runtime对象。
- Runtime类可以访问jvm的相关信息,如处理器数量,内存信息等