快速熟悉Java(閒聊版)
一、簡要
背景:
java可能是很多同學大學學習的第一門或者第二門語言,大部分人可能並不需要這樣一篇熟悉性語法相關的文章。
但是有一部分同學可能和我經歷相似,大學課程並沒有java,工作後一直從事其他語言相關的工作(如python等)。知道java是什麼,也知道java的一些簡單的細節(如jdk、jvm)、比較深入地瞭解其他語言的情況(語法、資料結構、面向物件、單元測試等),但是並沒有直接做過java的開發。
筆者在某個場景下,發現對方只有java sdk且用其他語言實現相關協議比較困難、且py4j等lib效能較差情況下,快速地從零學習語法、學習框架、學習工程化相關(打包、單元測試等),從0到1實現高效能(百萬TPS)資料處理程式的開發(當然從1到100才算更有價值)。
Quick Java Explanation for Programmers 命名
希望能通過這個簡單的說明,快速熟悉java的語法
二、內容
package cn.bear2;
import java.util.ArrayList;
//一個原始檔中只能有一個public類,原始檔的名稱應該和public類的類名保持一致
public class Demo {
public static void main(String[] args) {
/*
* this is a demo;
* */
System.out .println("hello world"); //雙引號可以裝若干字元,稱為字串
System.out.println('h'); // 單引號只能裝單個字元
//function call
foo(5, 10);
// 陣列
String[] fool_array= {"hello","world"};
System.out.println(fool_array);
// ArrayList,更習慣這個.屬於引用型別資料結構
ArrayList<String> fool_array_list= new ArrayList<String>();
fool_array_list.add("hello");
fool_array_list.add("world");
System.out.println(fool_array_list);
// for 迴圈
for (int i = 0; i <= 3; i++) {
System.out.println(i);
}
// for each 風格
for(String item:fool_array_list){
System.out.println(item);
}
long dt = System.currentTimeMillis();
System.out.println(dt);
//final 修飾的常量是不能修改的
final double PI = 3.1415927;
// 列舉demo
FreshJuice juice = new FreshJuice();
juice.size = FreshJuice.FreshJuiceSize.SMALL;
}
private static void foo(Integer param1, Integer secondParam) {
Integer res = param1 + secondParam;
if (res > 10) {
System.out.println("res大於10");
} else if (res < 1) {
System.out.println("res小於1");
} else {
System.out.println(res);
}
}
}
//一個原始檔可以有多個非public類
class FreshJuice {
enum FreshJuiceSize {SMALL, MEDIUM, LARGE}
FreshJuiceSize size;
}
三、後續
java是一門工程化風格的語言,想要掌握Java,仍然需要學習以下知識,這裡就不一一展開。
- ide使用(eclipse\idea)
- Java’s collection
- 正則表示式
- 異常處理相關
- 多執行緒程式設計
- 網路程式設計
- 檔案操作與IO
- 圖形程式設計
- 單元測試
- 打包(ant/maven)
- JVM相關
工程化風格意味著你需要學習很多和語言不直接相關,卻是該語言開發工作中無法繞開的一些知識,但是萬物不離其宗,語言和語言特性仍然是其根本。
相關推薦
快速熟悉Java(閒聊版)
一、簡要 背景: java可能是很多同學大學學習的第一門或者第二門語言,大部分人可能並不需要這樣一篇熟悉性語法相關的文章。 但是有一部分同學可能和我經歷相似,大學課程並沒有java,工作後一直從事其他語言相關的工作(如python等)。知道java是什
使用Chrome Headless 快速實現java版數據的抓取
chrome headless java調webkit 參考《使用Chrome快速實現數據的抓取(一)——概述》和《使用Chrome快速實現數據的抓取(二)——協議》。各協議客戶端實現參考:https://github.com/ChromeDevTools/awesome-chrome-devtoo
JSON快速入門(Java版)
1.JSON JSON簡介: 是一種輕量級的資料交換格式。它基於 ECMAScript (歐洲計算機協會制定的js規範)的一個子集,採用完全獨立於程式語言的文字格式來儲存和表示資料。簡潔和
快速排序,一個愛情故事-java版
-- .com span 得到 跳出循環 div public while 五步 public static void myquicksort(int[] ages,int girl,int boy){ //這是一個站在數組兩端,追求完美愛情的故事 //年齡
資料結構--氣泡排序、歸併排序、快速排序、選擇排序、插入排序(Java版)
一、氣泡排序 1、思路 比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。 針對所有的元素重複以上的步驟,直到沒有任何一對元素需要比較。 2、實現 /** * 排序演算法的介面 * @author hoaven */ pu
java版資料結構與演算法—快速排序
/** * @author zoujc * @date 2018/11/15 * 快速排序:時間複雜度:O(NlogN) */ public class ArrayQuickSort { public static void quickSort(int arr[], int low
java版排序演算法之快速排序
快速排序的思想 快速排序是通過切分的方式將大陣列切分為左右兩個子陣列,分別對兩個子陣列進行遞迴的切分,當左右兩個子陣列都有序時整個陣列便有序了。 程式碼實現 public clas
paypal快速結賬支付方式整合(java版)
最近一個海外專案需要paypal支付,之前沒弄過,著實費了一番功夫,最終把paypal快速結賬整合進了專案中去,現在用文件總結下。整的時候感覺很難,各種找資料,等真正整出來後,發現也就那樣了。下面是整個程式碼: 1、說下快速結賬的整個流程, PayPal快速結賬 :此
六大經典排序演算法(Java版):冒泡、選擇、插入、希爾、快速、歸併
/** * @author Darren * @Date 2016-10-17 */ public class Main { public static void main(String[] args) { int[] ars = {
瓜娃(guava)的API快速熟悉使用(瓜娃是java API蛋糕上的冰激凌(精華))
1-使用 GOOGLE COLLECTIONS,GUAVA,STATIC IMPORTS 編寫漂亮程式碼 寫在前面: 以前在一個專案中用到過guava,當時匆匆用,也沒細研究,今天偶然在occhina看到這個系列教程的翻譯,感覺不錯,介紹得還比較全面,就一口氣全看完了,但看到第四節,發現還
快速排序演算法java版實現
快速排序思想:從待排序序列中找到一個關鍵字(預設為第一個元素) 然後將比關鍵字少的資料排列在左邊,大於關鍵字的排在右邊,然後對關鍵字左右兩邊的序列繼續上面步驟,直至關鍵字兩邊的序列都已經排好序。具體演算法如下: 設要排序的陣列是A[0]……A[N-1],首先任意選取一個數據
排序演算法之氣泡排序和快速排序(Java版)
轉自:http://www.cnblogs.com/0201zcr/p/4763806.html 作者:Whywin 1、氣泡排序 演算法如下(排序後,由小到大排列): /** * 氣泡排序 * 比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
高精度乘法 【C++版(簡單模擬版和FFT快速版)和java版】
高精度乘法C++版 簡單模擬版(N^2複雜度): #include <cstdio> #include <cstring> #include <cstdlib> #include <memory.h> using names
劍指Offer面試題15(Java版):鏈表中倒數第K個結點
head 計數器 easy sta 相同 ret white style 輸出 題目: 輸入一個鏈表。輸出該鏈表中倒數第k哥結點。 為了符合大多數人的習慣,本題從1開始計數。即鏈表的尾結點是倒數第1個結點。 比如一個鏈表有6個結點。從頭結點開始它們的值依次是1。2。
快速理解Java中的五種單例模式
嵌套類 ati class 由於 aop 適合 singleton 重復 code 解法一:只適合單線程環境(不好) package test; /** * @author xiaoping * */ public class Singleton { pri
撲克模擬,牌型判斷java版
setvalue () ssa pri isp src [] break -c Card類 package com.company; public class Card { private String color;
排序算法(java版)
emp ive public while href ava 指針 循環 lec 1. 冒泡算法2. 快速排序3. 歸並排序4. 選擇排序5. 堆排序 排序算法 重要性不言而喻,很多算法問題往往選擇一個好的排序算法往往問題可以迎刃而解 1、冒泡算法
快速熟悉網絡搭建的流程
網絡路由交換本筆記是本人在學習期間做一個網絡項目拓撲的簡單模擬,過程中將所遇到的所有問題都記錄在這裏,方便以後回顧。也希望能夠幫助他人解決一些相同的問題。--百家菜2017-6-16【實驗環境】華為模擬器eNSP、Windows系統【實驗目的】熟悉華為設備的配置、構建一個簡單的項目拓撲【實驗內容】依據給出的拓
高速排序(Java版)
content 輸入 println pop package ati 遞歸 子列 大於 package com.love.test; import java.util.Scanner; /** * @author huowolf *高速排序實現 *快排是十
Escape加解密Java版
java[java] view plain copy /** * 中文加密 * Created by geo on 2017/7/4. */ public class EscapeUtils { /** * Escape編碼 * @p