Day(1)筆記
一、計算機基礎
1.計算機概述
計算機全稱爲:電子計算機,俗稱電腦
2.計算機硬件和軟件概述
- 計算機硬件是指計算機系統中由電子,機械和光電元件等組成的各種物理裝置的總稱。
- 計算機軟件是指使用計算機過程中必不可少的東西,計算機軟件可以使家算計按照事先預定好的順序完成特定的功能,計算機軟件按照其功能劃分爲系統軟件和應用軟件。
3.軟件開發和計算機語言概述
- 軟件開發:藉助開發工具與計算機語言製作軟件。
- 計算機語言:人與計算機之間進行信息交流溝通的一種特殊語言。
- 常見的計算機語言如C,C++,C#,JAVA,python。
4.人機交互
交互方式:
- 圖形化界面:這種方式簡單直觀,使用者易於接受,容易操作上手。
- 命令性方式:需要一個控制檯,輸入特定的指令,讓計算機完成一些操作。較爲麻煩。需要記錄住一些命令。
5.鍵盤功能鍵和快捷鍵
應該記住一些簡單的功能鍵和快捷鍵
- Tab 縮進空格
- Enter 回車
- Window鍵
- Ctrl+A全選 Ctrl+C 複製 Ctrl+V 粘貼 Ctrl+X剪切 Ctrl+Z 撤銷 Ctrl+S 保存
6.如何打開DOS控制檯
Windows+R -> cmd -> 回車
7.常見的DOS講解
- d: +回車 盤符切換
- dir(directory): 列出當前目錄下的文件以及文件夾
- md(make directory): 創建目錄
- rd(remove directory): 刪除目錄
- cd(change directory): 改變指定目錄(進入指定目錄)
- cd..: 退回上級目錄
- cd\: 退回根目錄
- exit: 推出dos命令行
- cls(clear screen): 清屏
- del(delete): 刪除文件,刪除一堆後綴名一樣的文件,例如.txt
二、Java語言基礎
1.Java語言概述
Java語言由詹姆斯.高斯林發明
2.Java語言跨平臺原理
Java是面向對象的語言,其重點特點是開源和跨平臺
3.JDK與JRE的概述
JRE -> Java運行環境
JDK -> Java開發工具包,其中包含了JRE
簡單而言:使用JDK開發完成的java程序,交給JRE去運行
4.JDK的下載、安裝和卸載
詳情請看:https://blog.csdn.net/nuoyanli/article/details/86513950
5.Java環境變量的配置
詳情請看:https://blog.csdn.net/nuoyanli/article/details/86513950
6.第一個Java案例的編寫和運行
視頻里老師用的是記事本進行編寫和運行,而我用的是Eclipse Jee 2018-12
import java.util.*;
import java.math.*;
import java.io.*;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Hello world");
}
}
Day(2)筆記
Java基礎語法
1.關鍵字
關鍵字概述:
被Java語言賦予特定含義的單詞。
關鍵字特點:
組成關鍵字的字母全部小寫。
注意事項:
goto和const是保留字,在一般的高級Java編譯器中,針對關鍵字都有特殊的顏色標記。
- Java關鍵字
2.標識符
標識符概述:
就是給類,接口,方法,變量等起名字時使用的字符序列
組成規則:
- 英文大小寫字母
- 數字字符
- $和_
注意事項:
- 不能以數字開頭
- 不能是Java中的關鍵字
- 區分大小寫
3.標識符的常見命名規則
注意事項:
見名知意
- 舉例:我要定義一個學生類
class Student {}
單級:liuyi包:
其實就是文件夾,用於把相同的類名進行區分,全部小寫
- 多級:cn.itcast
類或者接口:
- 一個單詞:單詞的首字母必須大寫,舉例:Student,Dog
- 多個單詞:每個單詞的首字母必須大寫,舉例:HelloWorld,StudentName
方法或者變量:
- 一個單詞:單詞的首字母小寫,舉例:main,age
- 多個單詞:從第二個單詞開始,每個單詞的首字母大寫,舉例:studentAge,showAllNames
常量:
- 一個單詞組成:全部大寫,舉例:PI
- 多個單詞組成:每個字母都大寫,用_隔開,舉例:STUDENT_MAX_AGE
4.註釋概述及其分類
註釋概述:
用於解釋說明的文字
Java中註釋分類格式:
- 單行註釋:格式://註釋文字
- 多行註釋:格式:/星 註釋文字 星/,注意:多行不可以嵌套使用,而單行是可以的
- 文檔註釋:格式:/星星 註釋文字 星/
5.HelloWorld案例加入註釋
/*
需求:我準備寫一個java程序,把"HelloWorld"這句話輸出在控制檯
分析:
A:要寫一個Java程序,必須定義類
B:把數據能夠輸出,說明我們的程序是可以獨立運行的,而程序要獨立運行,必須定義main方法
C:把數據輸出在控制檯,必須使用輸出語句
實現:
A:java語言提供了一個關鍵字:class用來定義類,後面跟的是類名
B:main方法的格式是固定的:
public static void main(String[] args) {
}
C:輸出語句的格式是固定的:
System.out.println("HelloWorld");
"HelloWorld"這個內容是可以改變的
*/
//這是我的HelloWorld案例
class HelloWorld {
/*
爲了程序能夠獨立運行,定義main方法
main方法是程序的入口
被jvm自動調用
*/
public static void main(String[] args) {
//爲了把數據顯示在控制檯,我們就使用了輸出語句
System.out.println("HelloWorld");
}
}
6.註釋的作用
略過,在Eclipse Jee 2018-12程序中編寫Java代碼時,有錯誤的話,編譯器會提示。
7.常量的概述和使用
常量概述:
在程序執行的過程中其值不可以發生改變
/*
常量:
在程序執行過程中,其值不發生改變的量。
分類:
A:字面值常量
B:自定義常量(後面講)
字面值常量
A:字符串常量 用雙引號括起來的內容。
舉例:"hello","world","HelloWorld"
B:整數常量 所有的整數
舉例:100,200
C:小數常量 所有的小數
舉例:10.23,110.11
D:字符常量 用單引號括起來的內容
舉例:'a','A','0'
錯誤的:'ab'
E:布爾常量 比較特殊
舉例:true,false
F:空常量 後面講
舉例:null
*/
class ConstantDemo {
public static void main(String[] args) {
//字符串常量的輸出
System.out.println("hello");
//整數常量的輸出
System.out.println(100);
//小數常量的輸出
System.out.println(100.10);
//字符常量的輸出
System.out.println('a');
System.out.println('A');
System.out.println('0');
//這個是有問題的
//System.out.println('ab');
//布爾常量的輸出
System.out.println(true);
System.out.println(false);
}
}
8.進制概述以及二進制、八進制、十六進制圖解
二進制->八進制:
把二進制的數據,從右開始,每三位一組合,最左邊不夠的時候,補0。然後,分別計算出對應的十進制數值,最後,再把每個十進制的數據組合起來,就是一個八進制數據。
二進制->十六進制:
把二進制的數據,從右開始,每四位一組合,最左邊不夠的時候,補0。然後,分別計算出對應的十進制數值,最後,再把每個十進制的數據組合起來,就是一個十六進制數據。
規則:進制越大,表現形式越短
9.不同進制數據的表現形式
/*
不同進制的數據表現:
二進制:由0,1組成。以0b開頭。
八進制:由0,1,...7組成。以0開頭。
十進制:由0,1,...9組成。默認整數是十進制。
十六進制:由0,1,...9,a,b,c,d,e,f(大小寫均可)組成。以0x開頭。
*/
class JinZhiDemo {
public static void main(String[] args) {
System.out.println(100); //十進制
System.out.println(0b100); //二進制
System.out.println(0100); //八進制
System.out.println(0x100); //十六進制
}
}
10.任意進制到十進制的轉換
係數:每一個位上的數據值本身就是係數。
基數:x進制的基數就是x。
權:我們針對每一個位上的數據進行編號,從右邊,並且是從0開始編號,這個編號就是該位上數據的權值。
PS:每一個位上的係數x基數^權次冪相加。
11.十進制到任意進制的轉換
方法:這個數對基數依次取餘,將餘數倒序輸出,在倒序輸出餘數之前正序輸出最後一次的商。(這個方法是很簡單的一種方式,可以大大的節省時間)。
將十進制轉成八進制:
579 / 8 = 72 ...3
72 / 8 =9 ...0
9 / 8 =1 ...1
先輸出最後一次計算的商,然後倒序從下到上輸出餘數
八進制的 576 爲 1103
12.快速的進制轉換法
8421碼
13.原碼、反碼、補碼的講解
在探求爲何機器要使用補碼之前, 讓我們先了解原碼, 反碼和補碼的概念.對於一個數, 計算機要使用一定的編碼方式進行存儲. 原碼, 反碼, 補碼是機器存儲一個具體數字的編碼方式。
原碼:
原碼就是符號位加上真值的絕對值, 即用第一位表示符號, 其餘位表示值. 比如如果是8位二進制:
[+1]原 = 0000 0001
[-1]原 = 1000 0001
第一位是符號位. 因爲第一位是符號位, 所以8位二進制數的取值範圍就是:[1111 1111 , 0111 1111]即[-127 , 127],原碼是人腦最容易理解和計算的表示方式。
反碼:
反碼的表示方法是:正數的反碼是其本身;負數的反碼是在其原碼的基礎上, 符號位不變,其餘各個位取反。
[+1] = [00000001]原 = [00000001]反
[-1] = [10000001]原 = [11111110]反
可見如果一個反碼錶示的是負數, 人腦無法直觀的看出來它的數值. 通常要將其轉換成原碼再計算。
補碼:
補碼的表示方法是:正數的補碼就是其本身;負數的補碼是在其原碼的基礎上, 符號位不變, 其餘各位取反, 最後+1. (即在反碼的基礎上+1)。
[+1] = [00000001]原 = [00000001]反 = [00000001]補
[-1] = [10000001]原 = [11111110]反 = [11111111]補
對於負數, 補碼錶示方式也是人腦無法直觀看出其數值的. 通常也需要轉換成原碼在計算其數值。
14.變量的概述及格式
變量的概念:
-
在程序執行的過程中,在某個範圍內其值可以發生改變的量
-
從本質上講,變量其實是內存中的一小塊區域,使用變量名來訪問這塊區域,因此,每一個變量使用前必須要先申請(聲明),然後必須進行賦值(填充內容),才能使用。
變量定義格式:
- 數據類型 變量名 = 初始化值;
注意:格式是固定的,記住格式,以不變應萬變
15.數據類型的概述和分類和定義不同數據類型的變量
/*
數據類型:Java是一種強類型的語言,針對每一種數據都定義了明確的數據類型。
數據類型分類:
A:基本數據類型
B:引用數據類型(類,接口,數值)
基本數據類型:4類8種
A:整數 佔用字節數
byte 1
short 2
int 4
long 8
B:浮點數
float 4
double 8
C:字符
char 2
D:布爾
boolean 1
注意:
整數默認是int類型
浮點數默認是double類型。
長整型後綴用L或者l標記。建議使用L。
單精度浮點數用F或者f標記。建議使用F。
*/
class DataTypeDemo {
public static void main(String[] args) {
//定義變量的格式:
//數據類型 變量名 = 初始化值;
//定義一個字節變量
byte b = 10;
System.out.println(10);
System.out.println(b);
//定義一個短整型變量
short s = 100;
System.out.println(s);
//定義一個整型變量
int i = 1000;
System.out.println(i);
//超過了int的範圍
//int j = 1000000000000;
long j = 1000000000000L;
//long j = 100L;
System.out.println(j);
//定義浮點數據變量
float f = 12.345F;
System.out.println(f);
double d = 12.345;
System.out.println(d);
//定義字符變量
char ch = 'a';
System.out.println(ch);
//定義布爾變量
boolean flag = true;
System.out.println(flag);
}
}
16.使用變量的注意事項
/*
使用變量的時候要注意的問題:
A:作用域
變量定義在哪個大括號內,它就在這個大括號內有效。
並且,在同一個大括號內不能同時定義同名的變量。
B:初始化值
沒有初始化值的變量不能直接使用。
你只要在使用前給值就行,不一定非要在定義的時候立即給值。
推薦在定義的時候給值。
定義變量的格式:
a:數據類型 變量名 = 初始化值;
b:數據類型 變量名;
變量名 = 初始化值;
C:在一行上建議只定義一個變量
可以定義多個,但是不建議
*/
class DataTypeDemo2 {
public static void main(String[] args) {
//定義變量
int x = 100;
//錯誤,不能有同名的
//int x = 200;
//定義變量必須給值
//int y;
//System.out.println(y);
int z;
z = 100;
System.out.println(z);
//在一行上定義多個變量
//int a = 10; int b = 20; int c = 30;
//上面的寫法可以,但是不建議。
int a = 10;
int b = 20;
int c = 30;
//int d, e;
//d = 40;
//e = 50;
//int f,int g; //錯誤
//int h; int i; //正確
}
}
17.數據類型轉換默認轉換
/*
+是一個運算符(我們等會講解)。做加法運算的。
一般來說,我們在運算的時候,要求參與運算的數據類型必須一致。
注意:
boolean類型不能轉換爲其他的數據類型
默認轉換(從小到大的轉換)
A:byte,short,char—int—long—float—double
B:byte,short,char相互之間不轉換,他們參與運算首先轉換爲int類型
*/
class DataTypeDemo3 {
public static void main(String[] args) {
//直接輸出的方式做加法
//System.out.println(3 + 4);
//兩個int類型做加法
int x = 3;
int y = 4;
int z = x + y;
System.out.println(z);
//定義一個byte類型,一個int類型,做加法
byte a = 3;
int b = 4;
System.out.println(a + b);
//可能損失精度
//byte c = a + b;
int c = a + b;
System.out.println(c);
}
}
18.數據類型轉換強制轉換
/*
強制轉換:
從大的數據類型到小的數據類型。
格式:
目標數據類型 變量 = (目標數據類型) (被轉換的數據);
注意:
不要隨意的去使用強制轉換,因爲它隱含了精度損失問題。
*/
class DataTypeDemo4 {
public static void main(String[] args) {
byte a = 3;
int b = 4;
//這個肯定沒有問題
//int c = a + b;
//byte c = 7;
//這個是有問題的
//byte c = a + b;
//用強制類型轉換改進
byte c = (byte) (a + b);
System.out.println(c);
}
}
19.強制轉換的思考題
/*
思考題1:請問下面這個有沒有問題
double d = 12.345;
float f = d;
思考題2:看看下面兩個定義有沒有區別呢?
float f1 = (float)12.345;
float f2 = 12.345f;
f1其實是通過一個double類型轉換過來的。
而f2本身就是一個float類型。
*/
class DataTypeDemo5 {
public static void main(String[] args) {
//把double賦值給float,加了強制類型轉換
double d = 12.345;
float f = (float)d;
//看看下面兩個定義有沒有區別呢?
float f1 = (float)12.345;
float f2 = 12.345F;
}
}
20.變量相加和常量相加的面試題
/*
面試題:
byte b1=3,b2=4,b;
b=b1+b2;
b=3+4;
哪句是編譯失敗的呢?爲什麼呢?
b = b1 + b2;是有問題的。
因爲變量相加,會首先看類型問題,最終把結果賦值的也會考慮類型問題。
常量相加,首先做加法,然後看結果是否在賦值的數據類型範圍內,如果不是,才報錯。
*/
class DataTypeDemo6 {
public static void main(String[] args) {
//定義了三個byte類型的變量,b1,b2,b3
//b1的值是3,b2的值是4,b沒有值
byte b1 = 3,b2 = 4,b;
//b = b1 + b2; //這個是類型提升,所以有問題
b = 3 + 4; //常量,先把結果計算出來,然後看是否在byte的範圍內,如果在就不報錯。
}
}
21.強制轉換數據溢出後的結果怎麼算
/*
byte b = 130;有沒有問題?如果我想讓賦值正確,可以怎麼做?結果是多少呢?
練習:byte b = (byte)300;
*/
class DataTypeDemo7 {
public static void main(String[] args) {
//因爲byte的範圍是:-128到127。
//而130不在此範圍內,所以報錯。
//byte b = 130;
//我們可以使用強制類型轉換
byte b = (byte) 130;
//結果是多少呢?
System.out.println(b);
}
}
/*
分析過程:
我們要想知道結果是什麼,就應該知道是如何進行計算的。
而我們又知道計算機中數據的運算都是補碼進行的。
而要得到補碼,首先要計算出數據的二進制。
A:獲取130這個數據的二進制。
00000000 00000000 00000000 10000010
這是130的原碼,也是反碼,還是補碼。
B:做截取操作,截成byte類型的了。
10000010
這個結果是補碼。
C:已知補碼求原碼。
符號位 數值位
補碼: 1 0000010
反碼: 1 0000001
原碼: 1 1111110
*/
22.字符數據參與運算
常用字符與ASCII代碼對照表
23.字符串參與運算
/*
看程序寫結果
字符串數據和其他數據做+,結果是字符串類型。
這裏的+不是加法運算,而是字符串連接符。
*/
class DataTypeDemo9 {
public static void main(String[] args) {
System.out.println("hello"+'a'+1); //helloa1,因爲有優先級
System.out.println('a'+1+"hello"); //98hello
System.out.println("5+5="+5+5); //5+5=55
System.out.println(5+5+"=5+5"); //10=5+5
}
}
運算符優先級