Day01 java基礎(學習筆記)
標簽: java
計算機硬件基礎
馮諾依曼
中央處理器(CPU)
由控制單元和算數邏輯單元組成
- 控制單元:控制和協調其他組件的動作;
- 算數邏輯單元:完成數值運算和邏輯運算;
時鐘
每臺計算機內部都有一個內部時鐘,以固定速度發射電子脈沖。時鐘速度越快,在給定時間段內執行的指令就越多。計量單位是赫茲(Hz),1Hz相當于每秒一個脈沖。隨著CPU速度不斷提高,目前以千兆赫茲(GHz)來表示。
IT定律
- 摩爾定律:等價買到的電腦性能,每隔18-24個月會翻一倍以上。
- 安迪-比爾定律:”比爾拿走了安迪的東西“,軟件廠商吃掉硬件提升帶來的好處。
- 反摩爾定律:IT公司今天和18個月之前賣掉同樣多的相同產品,那他的營業額會降一半。
存儲設備
- 磁盤驅動器。硬盤用以永久的保存數據和程序。
- 光盤驅動器。CD和DVD。
- USB閃存驅動器。用于存儲和傳輸數據。
內存
計算機中最小的存儲單位,比特(bit),值為0/1。
計算機中最基本的存儲單元,字節(byte),一個字節由八個比特構成。
內存采用半導體存儲單元,包括隨機存儲器(RAM),只讀存儲器(ROM),以及高速緩存(CACHE)。
RAM斷電后數據不在保存,可讀也可寫;ROM存儲計算機BIOS等基本程序,只可讀不可寫;
內存一個程序和他的數據在被CPU執行前必須移動到計算機的內存中。
操作系統
- 控制和監視系統的活動;
- 分配惡化調配系統資源;
- 調度操作;
萬維網
常簡稱Web,分為Web客戶端和Web服務器程序。讓Web客戶端訪問Web服務器上的頁面。每個頁面由“統一資源標識符(URI)”標識。通過超文本傳輸協議(HTTP)傳送給用戶。
互聯網>英特網>萬維網
Java(sun公司)
軟件
軟件是一系列按照特定順序組織的計算機數據和指令的集合。分為系統軟件和應用軟件。
人機交互方式分為圖形化界面(GUI)和命令行方式(CLI)
計算機語言
第一代語言:機器語言。二進制代碼形式存在。
第二代語言:匯編語言。使用助記符表示機器指令。
第三代語言:高級語言。Java、Python…
Java語言特點
特點一:面向對象
- 封裝、繼承、多態
特點二:健壯性(例如,垃圾回收機制)
特點三:跨平臺性(JVM)
核心機制
- Java虛擬機(JVM);
- 垃圾回收機制(GC);
JDK、JRE、JVM
JDK>JRE>JVM
- JDK:Java開發工具包。包含Java開發工具,例如編譯工具、打包工具等,此外也包括了JRE。
- JRE:Java運行環境。包括JVM和核心類庫。
標識符
凡是自己可以取名字的地方都叫做標識符。
命名規則
- 不能以數字開頭;
- 不能使用關鍵字和保留字;
- 區分大小寫;
- 不能包含空格;
命名規范
- 包名:所有字母小寫;
- 類名、接口名:多單詞首字母分別大寫(駝峰);
- 變量名、方法名:第一個單詞首字母小寫,之后的單詞首字母大寫;
- 常量:所有字母大寫,且用下劃線分割;
變量
變量是程序中最基本的存儲單元。包含變量類型、變量名和存儲的值。
變量用于在內存中保存數據。
類型
-
基本數據類型
- 數值型
- 整數類型:int、short、long、byte
- 浮點類型:float、double
- 字符型
- 布爾型
- 數值型
-
引用數據類
- 類:class
- 接口:interface
- 數組:[]
類型 | 占用存儲空間 | 表數范圍 |
---|---|---|
byte | 1字節 = 8bit(位) | -128-127 |
short | 2字節 | -215-215-1 |
int | 4字節 | -231-231-1 |
long | 8字節 | -263-263-1 |
類型 | 占用才存儲空間 | 表數范圍 |
---|---|---|
單精度float | 4字節 | 7位有效數組 |
雙精度double | 8字節 | 15位有效數字 |
(通常使用double。定義float變量時,變量要以”f“或”F“結尾)
字符型char:(1字符=2字節)定義char型變量通常使用一對單引號。
注意:
char e1 = 97; //此時97為ASCII碼為97對應的字符
System.out.println(e1);//輸出‘a’
char e2 = '5';
int e3= e2;//自動類型轉換為ASCII碼是‘5’對應的整型數字
System.out.println(e3);//輸出53
布爾型boolean:true或false,常用在循環語句。
類型轉換
1.自動類型提升:(小到大)
byte、char、short->int->long->float->double
當容量小的與容量大的變量做運算時,結果自動提升為容量大的數據類型。特別地,byte、char、short三種做運算時,結果為int。
2.強制類型轉換:(大到小)
需要使用強轉符:()。可能導致精度損失。
整型常量默認為int型,浮點型常量默認為double型。
按位置分類
-
成員變量
- 實例變量(不以static修飾)
- 類變量(以static修飾)
-
成員變量
-
形參(方法、構造函數中定義的變量)
-
方法局部變量(在方法內定義)
-
代碼塊局部變量(在代碼塊內定義)
-
字符串類型
String類型,不是基本數據類型,屬于引用數據類型,使用雙引號進行定義(不能直接賦值數字)。
String類型可以和8種基本數據類型做運算,且運算只能是連接運算,結果也是String類型。
例:String轉int
String hello = "123";
int a = Integer.parseInt(hello);
進制
二進制:以0b或0B開頭;
八進制:以0開頭;
十六進制:以0x或0X開頭,A-F不區分大小寫;
互相轉換:
Integer.toBinaryString();
Integer.toOctalString();
Integer.toHexString();
Java整數常量默認是int類型,當用二進制定義整數時,其第32位是符號位;當long型時,第64位是符號位。
二進制整數有三種形式:原碼、反碼、補碼。
- 正數的原碼、反碼和補碼相同
- 負數反碼為原碼除符號位依次取反,補碼為反碼加一
計算機底層都以補碼的方式來存儲數據。
運算符
算數運算符
+、-、*、/、%、++、–、+(連接)
負數取余:
int m1 = -12;
int m2 = -5;
System.out.println(m1 % m2);//輸出-2
自增自減不會改變數據類型。
byte b2 = 127;
b2++;
System.out.println(b2);//結果為10000000(-128的補碼),輸出-128
賦值運算符
= 、+=、-+、*=、/=、%=
當”=“兩側數據類型不一致時,可以使用自動類型轉換或強制類型轉換進行處理,支持連續賦值。
”+=、-+、*=、/=、%=“不會改變變量本身的數據類型。
short s2 = 10;
//s2 = s2 + 5; //編譯失敗
s2 += 5;
比較運算符
==、!=、>=、<=、>、>、instanceof
邏輯運算符
&(邏輯與)、&&(短路與)、|、||、!、^(異或)
操作的數據類型都是布爾類型
邏輯與&和短路與&&的異同(|與||類似):
相同點:1.運算結果相同;2.符號左邊是true時,都會執行右邊的語句。
不同點:1.符號左邊為false時,&仍執行右邊語句,但&&不執行右邊語句。
位運算符
<<、>>、>>>、&、|、^、~
注意:
- 位運算符<<:空位補0,被移除的高位丟棄。
- 位運算符>>:最高位為0,則補0;最高位為1,則補1。
- 位運算符>>>:無論最高位是0或1,都補0。
- ^異或、~逐位取反。
- 2*8 等價于 2<<3,后者運算效率更高。
- 無<<<;數據類型為布爾類型時,&和|為邏輯運算符,數字類型時為位運算符。
騷操作:
交換兩個變量的值,例如交換m和n:
n = (m^n)^n;
m = (m^n)^n;
三元運算符
(條件表達式)?A:B; 其中A、B需為相同數據類型。
凡是用三元運算符的地方,都可以改寫為if-else,反之不成立,三元運算符的執行效率高于if-else。
字符串轉字符數組:
char[] str = s.toCharArray();
字符數組轉字符串:
String.valueOf(str)
集合初始化:
HashSet<Character> vowels = new HashSet<>(Arrays.asList('a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'));
List<Character> vowels = Arrays.asList('a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U');
注意:這種方式添加的是不可變的
List<Character> vowels = new ArrayList<>(Arrays.asList('a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'));
上述方式的基礎上使用 ArrayList 再包裝一下,即轉變為可變集合。
智能推薦
requests實現全自動PPT模板
http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...
Linux C系統編程-線程互斥鎖(四)
互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...
統計學習方法 - 樸素貝葉斯
引入問題:一機器在良好狀態生產合格產品幾率是 90%,在故障狀態生產合格產品幾率是 30%,機器良好的概率是 75%。若一日第一件產品是合格品,那么此日機器良好的概率是多少。 貝葉斯模型 生成模型與判別模型 判別模型,即要判斷這個東西到底是哪一類,也就是要求y,那就用給定的x去預測。 生成模型,是要生成一個模型,那就是誰根據什么生成了模型,誰就是類別y,根據的內容就是x 以上述例子,判斷一個生產出...
styled-components —— React 中的 CSS 最佳實踐
https://zhuanlan.zhihu.com/p/29344146 Styled-components 是目前 React 樣式方案中最受關注的一種,它既具備了 css-in-js 的模塊化與參數化優點,又完全使用CSS的書寫習慣,不會引起額外的學習成本。本文是 styled-components 作者之一 Max Stoiber 所寫,首先總結了前端組件化樣式中的最佳實踐原則,然后在此基...
猜你喜歡
19.vue中封裝echarts組件
19.vue中封裝echarts組件 1.效果圖 2.echarts組件 3.使用組件 按照組件格式整理好數據格式 傳入組件 home.vue 4.接口返回數據格式...
【一只蒟蒻的刷題歷程】【藍橋杯】歷屆試題 九宮重排 (八數碼問題:BFS+集合set)
資源限制 時間限制:1.0s 內存限制:256.0MB 問題描述 如下面第一個圖的九宮格中,放著 1~8 的數字卡片,還有一個格子空著。與空格子相鄰的格子中的卡片可以移動到空格中。經過若干次移動,可以形成第二個圖所示的局面。 我們把第一個圖的局面記為:12345678. 把第二個圖的局面記為:123.46758 顯然是按從上到下,從左到右的順序記錄數字,空格記為句點。 本題目的任務是已知九宮的初態...
dataV組件容器寬高發生變化后,組件不會自適應解決方法
項目中需要大屏幕數據展示,于是使用了dataV組件,但是使用是發現拖動瀏覽器邊框,dataV組件顯示異常,如圖: 于是查了官網,官網的解釋如下: 于是按照官網的意思編寫代碼: 于是可以自適應了...