Java中一些常用的代码
总结一下最近程序中用到的代码吧,大部分不是自己写的,放到这里,备份一下,以后忘记了来看一下;
//正则表达式验证手机号
public static void phoneTest(String phone) {
/**
* 目前移动、联通、电信三大运营商的手机号段如下:
* 1、移动号段有: 134,135,136,137,138,139,147,150,151,152,157,158,159,178,182,183,184,187,188;
* 2、联通号段有: 130,131,132,155,156,185,186,145,176;
* 3、电信号段有: 133,153,177,180,181,189;
* 4、 170号段为虚拟运营商专属号段,170号段的11位手机号前四位来区分基础运营商,其中 "1700" 为中国电信,"1705" 为中国移动,"1709" 为中国联通;
*/
Pattern pattern = Pattern
.compile("^((13[0-9])|(15[^4,\\D])|(14[5,7])|(17[0,6-8])|(18[0-9]))\\d{8}$");
Matcher matcher = pattern.matcher(phone); if (matcher.find()) {
System.out.println("your phone number is right: " + phone);
} }
//正则表达式验证邮箱
public static void mailTest(String mail) {
/**
* 合法E-mail地址:
* 1. 必须包含一个并且只有一个符号"@"
* 2. 第一个字符不得是"@"或者"."
* 3. 不允许出现"@."或者".@"
* 4. 结尾不得是字符"@"或者"."
* 5. 允许"@"前的字符中出现"+"
* 6. 不允许"+"在最前面,或者"+@"
*/
Pattern pattern = Pattern
.compile("^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$");
Matcher matcher = pattern.matcher(mail);
if (matcher.find()) {
System.out.println("your email is right: " + mail);
} }
/**
* 随机选取集合里的一个数字
*
*/ // 集合是List类型
public static int getList(List<Integer> list) {
int number = list.get((int) (Math.random() * list.size()));
return number;
} // 集合是Set类型
public static int getSet(Set<Integer> set) {
Object[] object = set.toArray();
int number = (int) object[(int) (Math.random() * object.length)];
return number;
}
/*
* 查找字符串中子字符串的个数
*/
private static int number = 0; public static int stringNumbers(String str) {
if (str.indexOf("java") == -1) {
return 0;
} else {
number++;
stringNumbers(str.substring(str.indexOf("java") + 4));
return number;
}
} // 也可以使用此种方式,但除了以下情况;
// 子字符串是一个首尾相同的字符串,且字符串最后没有空格;
// "java%%%%java****java %%%% java"
public static int stringNumber(String str) {
if (str.indexOf("java") != -1) {
String[] str1 = str.split("java");
return str1.length - 1;
} else {
return 0;
}
}
package test; import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination; /**
* 将中文解析为拼音
* 需要导入pinyin4j的jar包
*/
public class ChineseToPinyin { // 将中文转化为拼音
public static String getPinYin(String chinese)
throws BadHanyuPinyinOutputFormatCombination { // 首先需要创建格式化对象HanyuPinyinOutputFormat
HanyuPinyinOutputFormat outputFormat = new HanyuPinyinOutputFormat(); // 设置大小写格式
// outputFormat.setCaseType(HanyuPinyinCaseType);
// HanyuPinyinCaseType.LOWERCASE 转换后以全小写方式输出
// HanyuPinyinCaseType.UPPERCASE 转换后以全大写方式输出
outputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE); // 方法参数HanyuPinyinToneType有以下常量对象:
// HanyuPinyinToneType.WITH_TONE_NUMBER 用数字表示声调,例如:zhao4
// HanyuPinyinToneType.WITHOUT_TONE 无声调表示,例如:zhao
// HanyuPinyinToneType.WITH_TONE_MARK 用声调符号表示,例如:zhao
outputFormat.setToneType(HanyuPinyinToneType.WITH_TONE_NUMBER); // 方法参数HanyuPinyinVCharType有以下常量对象:
// HanyuPinyinVCharType.WITH_U_AND_COLON 以U和一个冒号表示该拼音,
// HanyuPinyinVCharType.WITH_V 以V表示该字符,
// HanyuPinyinVCharType.WITH_U_UNICODE
outputFormat.setVCharType(HanyuPinyinVCharType.WITH_U_AND_COLON); StringBuffer buffer = new StringBuffer();
for (Character c : chinese.toCharArray()) {
buffer.append(PinyinHelper
.toHanyuPinyinStringArray(c, outputFormat)[0]);
buffer.append(" ");
}
return buffer.toString().substring(0, buffer.length() - 1);
} public static void main(String[] args)
throws BadHanyuPinyinOutputFormatCombination {
String s = "我们都是中国人";
System.out.println(s);
String pinYin = getPinYin(s);
System.out.println(pinYin);
}
}
package test; import java.util.regex.Matcher;
import java.util.regex.Pattern; public class StringConvert { // 正则表达式匹配字符串,不区分大小写
public static void ignore(String string) {
Pattern p = Pattern.compile("great", Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(string);
while (m.find()) {
System.out.println(m.group());
}
} /*
* 在字符串中使用
* 与Pattern.CASE_INSENSITIVE对应的表达式是(?i)
* 它有四种形式: (?i) (?-i) (?i:X) (?-i:X) 不带有 - 的是开标志,带有 - 的是关标志。
* 具体实现可看API
*/
public static void stringIgnore(String string) {
String regex = "(?i)great";
System.out.println(string.matches(regex));
} // 如: 将字符串中的某一个子字符串转换为特定的字符串
public static String replace(String source, String str) {
return source.replaceAll("(?i)" + str, str);
} public static void main(String[] args) {
String string = "you are greaT, you are GrEat,you are GREAt";
string = replace(string, "great");
System.out.println(string);
}
}
import java.lang.reflect.Field; import test.EntityTest; /**
* 利用反射获取类的属性值(包括私有属性)
*
*/
public class TestReflect {
public static void main(String[] args) throws Exception {
getFields(EntityTest.class);
System.out.println("-----------");
getField(EntityTest.class);
} // 获取所有的属性值
public static void getFields(Class<?> className) throws Exception { Class<?> cls = Class.forName(className.getName());
// 得到className类所有的属性(包括私有属性)
Field fields[] = cls.getDeclaredFields();
String[] name = new String[fields.length];
Object os = cls.newInstance();
// 该方法表示取消java语言访问检查
Field.setAccessible(fields, true);
for (int i = 0; i < name.length; i++) {
name[i] = fields[i].getName();
System.out.println(name[i] + ":" + fields[i].get(os));
}
} // 获取某个属性值
public static void getField(Class<?> className) throws Exception { Class<?> cls = Class.forName(className.getName());
Object obj = cls.newInstance();
Field field = cls.getDeclaredField("name");
// 该方法表示取消java语言访问检查
field.setAccessible(true); // 为属性赋值
field.set(obj, "name"); Object object = field.get(obj);
System.out.println(object);
}
}
// 正则表达式 将多个斜杠 转换为一个
String url = "af///ddsf/sfsf//sf/d///ds////d////ds//////r";
url = url.replaceAll("/{2,}", "/");
System.out.println(url);
// 把一个字符串的第一个字母大写
public static String setFirstName(String name) {
char[] chars = name.toCharArray();
chars[0] -= 'a' - 'A';
return new String(chars);
}
/**
* 在Window或Linux系统下使用通用分割符来分割路径
*
* 在Windows系统下,Java程序获取到的路径分隔符是"\" ,转译之后就是"\\"
* 例如:通过"\"分割目录:c:\\xxxx\\xxxx\\ String[] tmp = test.split("\\\\");
*
* 在Linux系统下,Java程序获取到的路径分隔符是"/",无需转义
* 例如:通过"/"分割目录:/xxxx/xxxx/xxxx/
*/ // 而该方法为通用方法,适用于Windows和Linux系统
String[] tmp = path.split(System.getProperty("file.separator"));
/**
* Json与对象的转换,使用google的GSON包来解析
*/ // 对象转换为Gson,包括List转JSON
public static String toJSON(Object object) {
// Gson gson = new GsonBuilder().disableHtmlEscaping().serializeNulls()
// .create();
Gson gson = new Gson();
String json = gson.toJson(object);
return json; } // Gson转换为对象
public static Object jsonToObject(String json) {
Gson gson = new Gson(); //Gson转换为 单一对象
EntityTest entityTest = gson.fromJson(json, EntityTest.class); //Gson转换为List对象
List<EntityTest> objList = gson.fromJson(json,
new TypeToken<List<EntityTest>>() {}.getType()); //Gson转换为Map对象
Map<String, EntityTest> entityTests = gson.fromJson(json,
new TypeToken<Map<String, EntityTest>>() {}.getType()); return objList;
}
/**
* 查找数据库中所有的表
* @param conn
*/
public void getTableNameByCon(Connection conn) {
try {
DatabaseMetaData meta = conn.getMetaData();
ResultSet rs = meta.getTables(null, null, null,
new String[] { "TABLE" });
while (rs.next()) {
System.out.println("表名:" + rs.getString("TABLE_NAME"));
System.out.println("表所属用户名:" + rs.getString(2));
System.out.println("------------------------------");
} } catch (Exception e) {
e.printStackTrace();
} finally {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry; //对map 使用value进行排序(value为int类型)
public class MapSorted { public static Map<String, Integer> solveMap(Map<String, Integer> map) {
LinkedHashMap<String, Integer> linkedHashMap = new LinkedHashMap<String, Integer>();
ComparatorTest comparatorTest = new ComparatorTest();
ArrayList<Map.Entry<String, Integer>> entrys = new ArrayList<Map.Entry<String, Integer>>(
map.entrySet());
Collections.sort(entrys, comparatorTest); for (Map.Entry<String, Integer> entry : entrys) {
linkedHashMap.put(entry.getKey(), entry.getValue());
}
return linkedHashMap;
} static class ComparatorTest implements
Comparator<Map.Entry<String, Integer>> { public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
return o1.getValue().compareTo(o2.getValue());
}
} public static void main(String[] args) {
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("Lisi", 90);
map.put("Zhaoliu", 150);
map.put("Zhangsan", 40);
map.put("Wangwu", 120);
map = solveMap(map);
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + " ----- " + entry.getValue());
}
}
}
// Java 获取当前时间前一个小时的时间
public static void beforeOneHourToNowDate() {
Calendar calendar = Calendar.getInstance();
// HOUR_OF_DAY 指示一天中的小时
calendar.set(Calendar.HOUR_OF_DAY,calendar.get(Calendar.HOUR_OF_DAY) - 1);
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("当前的时间:" + df.format(new Date()));
System.out.println("一个小时前的时间:" + df.format(calendar.getTime()));
}
// 获取hibernate的实体类的主键名称
public String getPramaryName(Class entity) {
try {
Class<?> c = Class.forName(entity.getName());
Field[] fields = c.getDeclaredFields();
;
for (Field field : fields) {
field.isAnnotationPresent(Id.class);
String pkname = field.getName();
return pkname;
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return null;
}
其中所需jar包地址:
汉字转化为拼音的jar包:汉字转化为拼音的jar包
json转换使用的google的json包:google-gson-21.-release
Java中一些常用的代码的更多相关文章
- Java 中的5个代码性能提升技巧,最高提升近10倍
文章持续更新,可以关注公众号程序猿阿朗或访问未读代码博客. 本文 Github.com/niumoo/JavaNotes 已经收录,欢迎Star. 这篇文章介绍几个 Java 开发中可以进行性能优化的 ...
- 在Java中直接调用js代码(转载)
http://blog.csdn.net/xzyxuanyuan/article/details/8062887 JDK1.6版添加了新的ScriptEngine类,允许用户直接执行js代码. 在Ja ...
- 在Java中直接调用js代码
JDK1.6版添加了新的ScriptEngine类,允许用户直接执行js代码. 在Java中直接调用js代码 不能调用浏览器中定义的js函数,会抛出异常提示ReferenceError: “alert ...
- java中最常用jar包的用途说明
java中最常用jar包的用途说明,适合初学者 jar包 用途 axis.jar SOAP引擎包 commons-discovery-0.2.jar 用来发现.查找和实现可插入式接口,提供一些一般类实 ...
- Java中最常用的集合类框架之 HashMap
一.HashMap的概述 HashMap可以说是Java中最常用的集合类框架之一,是Java语言中非常典型的数据结构. HashMap是基于哈希表的Map接口实现的,此实现提供所有可选的映射 ...
- java中的常用类(二)
java中的常用类(二) Math类 Math类的声明:public final class Math extends Object Math类是与数学计算有关的类,里面的方法都是静态方法,直接使用类 ...
- java 中的常用类
Java 中的包装类 相信各位小伙伴们对基本数据类型都非常熟悉,例如 int.float.double.boolean.char 等. 基本数据类型是不具备对象的特性的,比如基本类型不能调用方法.功能 ...
- java中日期常用
Java中日期的几种常见操作 —— 取值.转换.加减.比较 Java 的开发过程中免不了与 Date 类型纠缠,准备总结一下项目经常使用的日期相关操作,JDK 版本 1.7,如果能够帮助大家节约那么几 ...
- java中一些常用的英语
abstract (关键字 ) 抽象 ['.bstr.kt] access vt.访问,存取 ['.kses]'(n.入口,使用权) algorithm n.算法 ['.lg.rie ...
随机推荐
- Hadoop生态圈技术图谱
当下Hadoop已经成长为一个庞大的体系,貌似只要和海量数据相关的,没有哪个领域缺少Hadoop的身影,下面是一个Hadoop生态系统的图谱,详细的列举了在Hadoop这个生态系统中出现的各种数据工具 ...
- 2017年开年的第一次比较大的安全事件: MongoDB “赎金事件”,如何看待互联网安全问题
今天上午(2017年1月7日),我的微信群中同时出现了两个MongoDB被黑掉要赎金的情况,于是在调查过程中,发现了这个事件.这个事件应该是2017年开年的第一次比较大的安全事件吧,发现国内居然没有什 ...
- 关于kendo ui的使用改变颜色方式
1.概述: 在网上kendo ui教程中示例在演示的时候引用的css样式为kendo.common.min.css与kendo.default.min.css这两个外部样式,大家有没有发现,这两个样式 ...
- Qt读取JSON和XML数据
QJSON JSON(JavaScript Object Notation)是一个轻量级的数据交换格式; 可以将数据以name/value的形式任意组合; QJson 是一个基于Qt的库, 将JSON ...
- openwrt上网配置的一些理解(三)
接着上面的继续捣腾multiwan,首先考虑一下上一篇中记录的multiwan配置,这里的配置是否正确,得研究一下.先贴一下上一篇的配置文件,如下: config 'multiwan' 'config ...
- [Angular 2] Build a select dropdown with *ngFor in Angular 2
We want the start-pipe more flexable to get param, so when using it, we pass a second param as statu ...
- FIR滤波器设计
FIR滤波器的优越性: 相位对应为严格的线性,不存在延迟失真,仅仅有固定的时间延迟: 因为不存在稳定性问题,设计相对简单: 仅仅包括实数算法,不涉及复数算法,不须要递推运算,长度为M,阶数为M-1,计 ...
- SQLite中不支持的sql语法
今天很自然的在写Sql语句的时候用了Top,一开始没发现问题,因为我从数据库读出的值正好是0,而我习惯变量定义的时候也都赋值0,可是到我不要0的时候我就发现问题了.后来才知道,可爱的小sqlite竟然 ...
- Linux修改SSH连接数 重启SSH服务
系统 linux,增加SSH终端连接数最大为1000个 解决方案: vi /etc/ssh/sshd_config 输入/MaxStartups 定位到如下并修改 1) #MaxStar ...
- HTML基础总结<文本格式>
HTML 文本格式化标签 标签 描述 <b> 定义粗体文本 <em> 呈现为被强调的文本 <i> 定义斜体字 <small> 定义小号字 <str ...