JavaSE篇—Day(1、2)筆記

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是面向對象的語言,其重點特點是開源和跨平臺

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

運算符優先級

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章