Java语法清单-快速回顾(开发)
Java CheatSheet
01.基础
hello,world!
public static void main(String[] args) { System.out.println("Hello,World"); }
if-else
if (income < 0) rate = 0.00; else if (income < 8925) rate = 0.10; else if (income < 36250) rate = 0.15; else if (income < 87850) rate = 0.23; else if (income < 183250) rate = 0.28; else if (income < 398350) rate = 0.33; else if (income < 400000) rate = 0.35; else rate = 0.396;
loops:
/** * compute the largest * power of 2 * less than or equal to n */ public static void test2(int n){ int power = 1; while (power < n/2) power = 2 * power; System.out.println(power); }
/** * compute a finite sum * (1+2+...+n) */ public static void test3(int n){ int sum = 0; for(int i=0; i <= n; i++) sum += i; System.out.println(sum); }
/** * compute a finite product * (n! = 1*2*...*n) */ public static void test4(int n){ int product = 1; for(int i=1; i <= n; i++) product *= i; System.out.println(product); }
/** * compute the ruler function */ public static void test6(int n){ StringBuilder ruler = new StringBuilder("1"); for(int i=2; i <= n; i++) ruler.append(" ").append(i).append(" ").append(ruler); System.out.println(ruler); }
do-while:
//do-while public static void test7(){ int count = 0; do { System.out.println("count is:"+ count); count++; }while (count<11); }
switch-case:
//switch-case public static void test8(int day){ switch(day){ case 0: System.out.println("Sun");break; case 1: System.out.println("Mon");break; case 2: System.out.println("Tue");break; case 3: System.out.println("Wed");break; case 4: System.out.println("Thu");break; case 5: System.out.println("Fri");break; case 6: System.out.println("Sat");break; } }
02.字符串操作
字符串比较:
boolean result = str1.equals(str2); boolean result = str1.equalsIgnoreCase(str2);//忽略大小写
搜索与检索:
int result = str1.indexOf(str2); int result = str1.indexOf(str2,5); String index = str1.substring(14);
字符串反转:
//字符串反转 public static void test11(){ String str1 = "whatever string something"; StringBuffer buffer = new StringBuffer(str1); String reverse = buffer.reverse().toString(); System.out.println(reverse); }
按单词的字符串反转:
//按单词的字符串反转 public static void test12(){ String str1 = "reverse this string"; Stack<Object> stack = new Stack<>(); StringTokenizer tokenizer = new StringTokenizer(str1); while (tokenizer.hasMoreElements()) stack.push(tokenizer.nextElement()); StringBuffer buffer = new StringBuffer(); while (!stack.isEmpty()){ buffer.append(stack.pop()); buffer.append(" "); } System.out.println(buffer); }
大小写转化:
String strUpper = str1.toUpperCase();
String strLower = str1.toLowerCase();
首尾空格移除:
String str1 = " asdfsdf "; str1.trim(); //asdfsdf
空格移除:
str1.replace(" ","");
字符串转化为数组:
String str = "tim,kerry,timmy,camden";
String[] results = str.split(",");
03.数据结构
重置数组大小:
int[] myArray = new int[10]; int[] tmp = new int[myArray.length + 10]; System.arraycopy(myArray, 0, tmp, 0, myArray.length); myArray = tmp;
集合遍历:
Map<String,Object> map = new HashMap<>(); map.put("1","zhangsan"); map.put("2","lisi"); map.put("3","wangwu"); for (Map.Entry<String, Object> next : map.entrySet()) { System.out.println(next.getKey() + ":" + next.getValue()); }
数组排序:
int[] nums = {1,4,7,324,0,-4}; Arrays.sort(nums); System.out.println(Arrays.toString(nums));
列表排序:
List<String> unsortList = new ArrayList<>(); unsortList.add("CCC"); unsortList.add("111"); unsortList.add("AAA"); Collections.sort(unsortList);
列表搜索:
int index = arrayList.indexOf(obj);
finding an object by value in a hashmap:
hashmap.containsValue(obj);
finding an object by key in a hashmap:
hashmap.containsKey(obj);
二分搜索:
int[] nums = new int[]{7,5,1,3,6,8,9,2}; Arrays.sort(nums);int index = Arrays.binarySearch(nums,6); System.out.println("6 is at index: "+ index);
arrayList 转化为 array:
Object[] objects = arrayList.toArray();
将 hashmap 转化为 array:
Object[] objects = hashmap.entrySet().toArray();
04.时间与日期类型(开发推荐使用org.apache.commons.lang3.time.DateUtils 或者 Java8新的日期工具类,切勿重复造轮子!)
打印时间与日期:
Date todaysDate = new Date(); //todays date SimpleDateFormat formatter = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss"); //date format String formattedDate = formatter.format(todaysDate); System.out.println(formattedDate);
将日期转化为日历:
Date mDate = new Date(); Calendar mCal = Calendar.getInstance(); mCal.setTime(mDate);
将 calendar 转化为 date:
Calendar mCal = Calendar.getInstance();
Date mDate = mDate.getTime();
字符串解析为日期格式:
public void StringtoDate(String x) throws ParseException{ String date = "March 20, 1992 or 3:30:32pm"; DateFormat df = DateFormat.getDateInstance(); Date newDate = df.parse(date); }
date arithmetic using date objects:
Date date = new Date(); long time = date.getTime(); time += 5*24*60*60*1000; //may give a numeric overflow error on IntelliJ IDEA Date futureDate = new Date(time); System.out.println(futureDate);
date arithmetic using calendar objects:
Calendar today = Calendar.getInstance();
today.add(Calendar.DATE,5);
difference between two dates:
long diff = time1 - time2; diff = diff/(1000*60*60*24);
comparing dates:
boolean result = date1.equals(date2);
getting details from calendar:
Calendar cal = Calendar.getInstance();
cal.get(Calendar.MONTH);
cal.get(Calendar.YEAR);
cal.get(Calendar.DAY_OF_YEAR);
cal.get(Calendar.WEEK_OF_YEAR);
cal.get(Calendar.DAY_OF_MONTH);
cal.get(Calendar.DAY_OF_WEEK_IN_MONTH);
cal.get(Calendar.DAY_OF_MONTH);
cal.get(Calendar.HOUR_OF_DAY);
calculating the elapsed time:
long startTime = System.currentTimeMillis();//times flies by.. long finishTime = System.currentTimeMillis(); long timeElapsed = startTime-finishTime; System.out.println(timeElapsed);
05.正则表达式
使用 REGEX 寻找匹配字符串:
String pattern = "[TJ]im"; Pattern regPat = Pattern.compile(pattern,Pattern.CASE_INSENSITIVE); String text = "This is Jim and that's Tim"; Matcher matcher = regPat.matcher(text); if (matcher.find()){ String matchedText = matcher.group(); System.out.println(matchedText); }
替换匹配字符串:
String pattern = "[TJ]im"; Pattern regPat = Pattern.compile(pattern,Pattern.CASE_INSENSITIVE); String text = "This is jim and that's Tim"; Matcher matcher = regPat.matcher(text); String text2 = matcher.replaceAll("Tom"); System.out.println(text2);
使用 StringBuffer 替换匹配字符串:
Pattern p = Pattern.compile("My"); Matcher m = p.matcher("My dad and My mom"); StringBuffer sb = new StringBuffer(); boolean found = m.find(); while(found){ m.appendReplacement(sb,"Our"); found = m.find(); } m.appendTail(sb); System.out.println(sb);
打印所有匹配次数:
String pattern = "\\sa(\\w)*t(\\w)*"; //contains "at"Pattern regPat = Pattern.compile(pattern); String text = "words something at atte afdgdatdsf hey"; Matcher matcher = regPat.matcher(text); while(matcher.find()){ String matched = matcher.group(); System.out.println(matched); }
打印包含固定模式的行:
String pattern = "^a"; Pattern regPat = Pattern.compile(pattern); Matcher matcher = regPat.matcher(""); BufferedReader reader = new BufferedReader(new FileReader("file.txt")); String line; while ((line = reader.readLine())!= null){ matcher.reset(line); if (matcher.find()){ System.out.println(line); } }
匹配新行:
String pattern = "\\d$"; //any single digitString text = "line one\n line two\n line three\n"; Pattern regPat = Pattern.compile(pattern, Pattern.MULTILINE); Matcher matcher = regPat.matcher(text); while (matcher.find()){ System.out.println(matcher.group()); }
regex:
beginning of a string: ^ end of a string: $ 0 or 1 times: ? 0 or more times: (*) //without brackets 1 or more times: + alternative characters: [...] alternative patterns: | any character: . a digit: d a non-digit: D whitespace: s non-whitespace: S word character: w non word character: W
06.数字与数学操作处理
内建数据类型:
byte: 8bits, Byte short: 16bits, Short long: 64bits, Long float: 32bits, Float
判断字符串是否为有效数字:
String str = "dsfdfsd54353%%%"; try{ int result = Integer.parseInt(str); }catch (NumberFormatException e){ System.out.println("not valid"); }
比较 Double:
Double a = 4.5; Double b= 4.5; boolean result = a.equals(b); if (result) System.out.println("equal");
rounding:
double doubleVal = 43.234234200000000234040324; float floatVal = 2.98f; long longResult = Math.round(doubleVal); int intResult = Math.round(floatVal); System.out.println(longResult + " and " + intResult); // 43 and 3
格式化数字:
double value = 2343.8798; NumberFormat numberFormatter; String formattedValue; numberFormatter = NumberFormat.getNumberInstance(); formattedValue = numberFormatter.format(value); System.out.format("%s%n",formattedValue); //2.343,88
格式化货币:
double currency = 234546457.99; NumberFormat currencyFormatter; String formattedCurrency; currencyFormatter = NumberFormat.getCurrencyInstance(); formattedCurrency = currencyFormatter.format(currency); System.out.format("%s%n",formattedCurrency); // $ 234.546.457,99
二进制、八进制、十六进制转换:
int val = 25; String binaryStr = Integer.toBinaryString(val); String octalStr = Integer.toOctalString(val); String hexStr = Integer.toHexString(val);
随机数生成:
double rn = Math.random(); int rint = (int) (Math.random()*10); // random int between 0-10 System.out.println(rn); System.out.println(rint);
计算三角函数:
double cos = Math.cos(45); double sin = Math.sin(45); double tan = Math.tan(45);
计算对数
double logVal = Math.log(125.5);
07.输入输出操作
从输入流读取:
//throw IOexception first BufferedReader inStream = new BufferedReader(new InputStreamReader(System.in)); String inline =""; while (!(inline.equalsIgnoreCase("quit"))){ System.out.println("prompt> "); inline=inStream.readLine(); }
格式化输出:
StringBuffer buffer = new StringBuffer(); Formatter formatter = new Formatter(buffer, Locale.US); formatter.format("PI: "+Math.PI); System.out.println(buffer.toString());
打开文件:
BufferedReader br = new BufferedReader(new FileReader(textFile.txt)); //for reading BufferedWriter bw = new BufferedWriter(new FileWriter(textFile.txt)); //for writing
读取二进制数据:
InputStream is = new FileInputStream(fileName); int offset = 0; int bytesRead = is.read(bytes, ofset, bytes.length-offset);
文件随机访问:
File file = new File(something.bin); RandomAccessFile raf = new RandomAccessFile(file,"rw"); raf.seek(file.length());
读取 Jar/zip/rar 文件:
ZipFile file =new ZipFile(filename); Enumeration entries = file.entries(); while(entries.hasMoreElements()){ ZipEntry entry = (ZipEntry) entries.nextElement(); if (entry.isDirectory()){ //do something } else{ //do something } } file.close();
08.文件与目录
创建文件:
File f = new File("textFile.txt"); boolean result = f.createNewFile();
文件重命名:
File f = new File("textFile.txt"); File newf = new File("newTextFile.txt"); boolean result = f.renameto(newf);
删除文件:
File f = new File("somefile.txt"); f.delete();
改变文件属性:
File f = new File("somefile.txt"); f.setReadOnly(); // making the file read only f.setLastModified(desired time);
获取文件大小:
File f = new File("somefile.txt"); long length = file.length();
判断文件是否存在:
File f = new File("somefile.txt"); boolean status = f.exists();
移动文件:
File f = new File("somefile.txt"); File dir = new File("directoryName"); boolean success = f.renameTo(new File(dir, file.getName()));
获取绝对路径:
File f = new File("somefile.txt"); File absPath = f.getAbsoluteFile();
判断是文件还是目录:
File f = new File("somefile.txt"); boolean isDirectory = f.isDirectory(); System.out.println(isDirectory); //false
列举目录下文件:
File directory = new File("users/ege"); String[] result = directory.list();
创建目录:
boolean result = new File("users/ege").mkdir();
09.网络客户端
服务器连接:
String serverName = "www.egek.us"; Socket socket = new Socket(serverName, 80); System.out.println(socket);
网络异常处理:
try { Socket sock = new Socket(server_name, tcp_port); System.out.println("Connected to " + server_name); sock.close( ); } catch (UnknownHostException e) { System.err.println(server_name + " Unknown host"); return; } catch (NoRouteToHostException e) { System.err.println(server_name + " Unreachable" ); return; } catch (ConnectException e) { System.err.println(server_name + " connect refused"); return; } catch (java.io.IOException e) { System.err.println(server_name + ' ' + e.getMessage( )); return; }
10.包与文档
创建包:
package com.ege.example;
使用 JavaDoc 注释某个类:
javadoc -d \home\html -sourcepath \home\src -subpackages java.net
Jar 打包:
jar cf project.jar *.class
运行 Jar:
java -jar something.jar
排序算法
各种排序算法总结和比较
作者:努力为明天
-------------------------------------------
个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!