Java 语法清单

Java 语法清单翻译自 egek92JavaCheatSheet,从属于笔者的 Java 入门与实践系列。时间仓促,笔者只是简单翻译了些标题与内容整理,支持原作者请前往原文点赞。需要注意的是,此文在 Reddit 上也引起了广泛的讨论,此文讲解的语法要点还是以 Java 7 为主,未涉及 Java 8 中内容,略显陈旧,读者可以带着批判的视角去看。进阶阅读推荐 Java 进阶面试问题列表 - 知乎专栏,如果你是技术初学者,建议阅读 2016-我的技术之路:编程知识体系结构以获得相对完整的技术全局观

Java CheatSheet

基础

hello, world! :

if-else:

loops:

do-while:

do {
System.out.println("Count is: " + count);
count++;
} while (count < 11);

switch-case:

数组:

二维数组:

对象:

类:

方法:

Java IDE 比较:


图片来自 Wikipedia

个人推荐 IntelliJ IDEA 并且对于 学生免费.

字符串操作

字符串比较:

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);

单字节处理:

for (int i=0;i<str1.length();i++){

char aChar = str1.charAt(i);
}

字符串反转:

public class Main {

    public static void main(String[] args) {

        String str1 = "whatever string something";

        StringBuffer str1buff = new StringBuffer(str1);

        String str1rev = str1buff.reverse().toString();

        System.out.println(str1rev);

    }
}

按单词的字符串反转:

public class Main {

public static void main(String[] args) {

    String str1 = "reverse this string";

    Stack<Object> stack = new Stack<>();

    StringTokenizer strTok = new StringTokenizer(str1);

    while(strTok.hasMoreTokens()){

        stack.push(strTok.nextElement());
} StringBuffer str1rev = new StringBuffer(); while(!stack.empty()){ str1rev.append(stack.pop());
str1rev.append(" "); } System.out.println(str1rev); }
}

大小写转化:

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(",");

数据结构

重置数组大小:

int[] myArray = new int[10];

int[] tmp = new int[myArray.length + 10];
System.arraycopy(myArray, 0, tmp, 0, myArray.length);
myArray = tmp;

集合遍历:

 for (Iterator it = map.entrySet().iterator();it.hasNext();){

            Map.Entry entry = (Map.Entry)it.next();
Object key = entry.getKey();
Object value = entry.getValue();
}

创建映射集合:

        HashMap map = new HashMap();
map.put(key1,obj1);
map.put(key2,obj2);
map.put(key2,obj2);

数组排序:

       int[] nums = {1,4,7,324,0,-4};
Arrays.sort(nums);
System.out.println(Arrays.toString(nums));

列表排序:

        List<String> unsortList = new ArrayList<String>();

        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();

时间与日期类型

打印时间与日期:

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);

正则表达式

使用 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 digit
String 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

数字与数学操作处理

内建数据类型:

  • 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);

Math library:

输入输出操作:

从输入流读取:

//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());

formatter format calls:

打开文件:

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();

文件与目录

创建文件:

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();

网络客户端

服务器连接:

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;
}

包与文档

创建包:

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

排序算法

  • Bubble Sort

  • Linear Search

  • Binary Search

  • Selection Sort

  • Insertion Sort

Over here

来源 https://zhuanlan.zhihu.com/p/25578170

Java 语法清单的更多相关文章

  1. Java语法清单-快速回顾(开发)

    Java CheatSheet 01.基础 hello,world! public static void main(String[] args) { System.out.println(" ...

  2. Java语法

    java语法: 一个java程序可以说是一系列对象的集合,而这些对象都要通过调用彼此的方法来协同工作. 对象: 对象是一个实例,例如:一只猫,它是一个对象,有状态和行为.它的状态状态有:颜色,名字,品 ...

  3. Java语法糖1:可变长度参数以及foreach循环原理

    语法糖 接下来几篇文章要开启一个Java语法糖系列,所以首先讲讲什么是语法糖.语法糖是一种几乎每种语言或多或少都提供过的一些方便程序员开发代码的语法,它只是编译器实现的一些小把戏罢了,编译期间以特定的 ...

  4. 程序员带你学习安卓开发,十天快速入-对比C#学习java语法

    关注今日头条-做全栈攻城狮,学代码也要读书,爱全栈,更爱生活.提供程序员技术及生活指导干货. 如果你真想学习,请评论学过的每篇文章,记录学习的痕迹. 请把所有教程文章中所提及的代码,最少敲写三遍,达到 ...

  5. Java语法基础(1)

    Java语法基础(1) 1.      Java是一门跨平台(也就是跨操作系统)语言,其跨平台的本质是借助java虚拟机 (也就是JVM(java virtual mechinal))进行跨平台使用. ...

  6. C++、Java语法差异对照表

    C++.Java语法差异对照表 C++ and Java Syntax Differences Cheat Sheet First, two big things--the main function ...

  7. jsp页面执行java语法,获取的值在页面调用

    首先在页面头引用用到类的包路径 写需要执行的java语法 页面转换引用 <!-- 引用包路径 --> <%@ page language="java" impor ...

  8. Java语法之反射

    一.反射机制 在前面Java语法之注解自定义注解时我们也有提到反射,要获取类方法和字段的注解信息,必须通过Java的反射技术来获取 Annotation对象.那什么是反射呢?JAVA反射机制是在运行状 ...

  9. Java语法知识总结

    一:java概述: 1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒.PDA等的微处理器: 1994年将Oak语言更名为Java: ...

随机推荐

  1. HDU——2087剪花布条

    剪花布条 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  2. google jib容器打包工具

    简介 Jib 是 Google 开发的可以直接构建 Java 应用的 Docker 和 OCI 镜像的类库,以 Maven 和 Gradle 插件形式提供. 通过 Jib,Java 开发者可以使用他们 ...

  3. CodeForces 232E.Quick Tortoise

    John Doe has a field, which is a rectangular table of size n × m. We assume that the field rows are ...

  4. 【CF721C】Journey(拓扑排序,最短路,DP)

    题意:给一个无环的图,问用不超过T的时间从1到n最多可以经过多少个点.要求输出一条路径. 思路:因为无环,可以用DP做.不过因为时间最短的原因要拓扑排序后再DP,目测由底向上的更新也是可以的. ; . ...

  5. JS函数(自调函数)与闭包【高级函数】

    JavaScript:BOM(浏览器对象)+DOM(文档对象)+ECMAScript javascript面向对象: * 概述: * 发展: * 互联网发展对浏览器页面性能或效果要求越来越高,HTML ...

  6. 【Visual Studio】让用VS2012/VS2013编写的程序在XP中顺利运行(转)

    原文转自 http://blog.csdn.net/asanscape/article/details/38752655 微软为了推销自家平台,默认配置下VS2012和VS2013编写的应用程序只能在 ...

  7. 共享内存之——system V共享内存

    System V 的IPC对象有共享内存.消息队列.信号灯(量). 注意:在IPC的通信模式下,不管是共享内存.消息队列还是信号灯,每个IPC的对象都有唯一的名字,称为"键(key)&quo ...

  8. 安装phpssdb扩展:

    安装 igbinary   扩展(安装phpssdb扩展时候要用到--enable-ssdb-igbinary): clone  https://github.com/igbinary/igbinar ...

  9. Keep-Alive 长连接(转载)

    短连接与长连接 通俗来讲,浏览器和服务器每进行一次通信,就建立一次连接,任务结束就中断连接,即短连接.相反地,假如通信结束(如完成了某个HTML文件的信息获取)后保持连接则为长连接.在HTTP/1.0 ...

  10. iOS开发之手势gesture详解(一)

    前言 在iOS中,你可以使用系统内置的手势识别(GestureRecognizer),也可以创建自己的手势.GestureRecognizer将低级别的转换为高级别的执行行为,是你绑定到view的对象 ...