Java基礎課程概述【筆記】

Java基礎課程概述

第一部分:編程語言核心結構
主要知識點:變量、基本語法、分支、循環、數組、 …
第二部分: Java面向對象的核心邏輯
主要知識點: OOP、封裝、繼承、多態、接口、 …
第三部分:開發Java SE高級應用程序
主要知識點:異常、集合、 I/O、多線程、反射機制、 網絡編程、 ……
第四部分:實訓項目
項目一:家庭收支記賬軟件
項目二:客戶信息管理軟件
項目三:開發團隊人員調度軟件
附加項目一:銀行業務管理軟件
附件項目二:單機考試管理軟件

1.java中的數據類型:數據的單位

基本數據類型:程序裏面自帶的數據類型
布爾類型:boolean *true/false
字符類型:char    *: Unciode編碼 -》 不區分中英文
		統一的都是2個字節 = 16個位
		取值範圍:0-65535
		char x = 'a';
		char y = '男';
		char z = 55;//範圍:0-65535
整數類型:byte short int long -> int*  
浮點類型:float double -> 小數  double*

	重點:boolean  char  int/long double
	boolean -> 判斷
	char -> 一個字、一個字母
	int/long -> 整數
	double -> 小數

2.基本數據類型之間的轉換:

取值範圍:小 -》 大
      char
byte  short  int  long  float  double
小的變大的 直接轉變
	int x = 45;
	double y = x;
大的變小的 需要強轉:
	double x = 45.5;
	int y = (int)x;

3.引用數據類型 程序員自己開發的數據類型

main:
創建對象:
Student stu = new Student();
對屬性賦值:
stu.name = "張三";
stu.gender = '男';
stu.stuId = 12345;
stu.study();//學習
//char x = stu.showGender();
System.out.println(stu.showGender());

main:
Student stu = new Student();
System.out.println(stu.name.length());

class Student{
	String name;//null
	char gender;// 
	int stuId;//0
	
	public void study(){
		System.out.println("學習");
	}
	public char showGender(){
		int x = 45;
		return gender;
	}
}

4.java中的變量:

分類:
成員變量 屬性 實例變量:定義在類體裏面
局部變量 自動變量:定義在方法體裏面

區別:
1:定義的位置不同
2:作用範圍不同
	成員變量:依賴於對象存在
	Student stu = new Student();//name gender stuId創建
	局部變量:依賴於方法存在
	stu.XXX();裏面的局部變量創建
3:默認值不同:
	成員變量:即使不賦值 也有默認值
	局部變量:沒有默認值 要求在使用之前必須先賦值

5.java中的分支/判斷:

if else:*****

	if(boolean判斷){
		執行語句;
	}else if(boolean判斷){
		執行語句;
	}else if(boolean判斷){
		執行語句;
	}

	if(x % 2 == 0){
		return "偶數";
	}else{
		return "奇數";
	}
	-if(x % 2 == 0)
		return "偶數";
	return "奇數";

	if(x % 2 == 0){
		return true;
	}else{
		return false;
	}	
	->
	return x % 2 == 0;
	
	只要兩個學生的姓名一樣就是爲相等對象
	public boolean equals(Object obj){
		if(obj == null)return false;
		if(!(obj instanceof Student))return false;
		if(obj == this)return true;

		return this.name.equals(((Student)obj).name));	
	}
	

=====================================
switch case:
	switch(參數){
		case XX : 執行語句;
		case YY : 執行語句;
		default : 執行語句;
	}

	參數只能傳某幾種數據類型:
		jdk1.0 char byte short int
		jdk5.0 enum
		jdk7.0 String
	
	System.out.println("請選擇A/B/C/D");
	Scanner sc = new Scanner(System.in);
	String ABCD = sc.next();
	
	switch(ABCD){
		case "A" : 語法操作1;break;
		case "B" : 語法操作1;break;
		case "C" : 語法操作1;break;
		case "D" : 語法操作1;break;
		default : 語法操作1;
	}

6.java中的循環:

for:
	for(變量初始化;循環條件;循環之後的變化){
				循環執行的代碼
	}
	for(int x = 1;x <= 100;x++){
		if(x % 8 == 0){
			System.out.println(x);
		}
	}
while:
	變量初始化;
	while(循環條件){
		執行語句;
		循環之後的變化;
	}
	int x = 1;
	while(x <= 100){
		if(x % 8 == 0){
			System.out.println(x);
		}
		x++;
	}

do while:
	int x = 1;
	do{
		if(x % 8 == 0){
			System.out.println(x);
		}
		x++;
	}while(x <= 100);

7.數組:

基本概念:數組是容器 裝元素 類型相同 存儲空間連續

int[] data = new int[5];//0 0 0 0 0
int[] data = new int[]{45,77,82,19,90};
int[] data = {56,77,28,99};

得到某一個元素:data[下標]0開始
得到數組大小:data.length
	     str.length()
	     list.size()
遍歷數組:
for(int x = 0;x < data.length - 1;x++){
	System.out.println(data[x]);
}

for(int x : data){
	System.out.println(x);
}

數組的複製1int[] data = {56,77,28,99};
往數組裏面添加元素:
int[] temp = new int[data.length+1];//0 0 0 0 0 0
System.arraycopy(data,0,temp,0,4);//56 77 28 99 0
temp[temp.length - 1] = 66;
data = temp;

數組的複製2int[] data = {44,55,66,77,88};
data = Arrays.copyOf(data,data.length+1);

數組排序:
自動排序:Arrays.sort(數組對象);
          只能升序   import java.util.*;

手動排序 冒泡排序:
	int[] data = {56,88,37,40,99};

	for(int x = 0;x < data.length - 1;x++){//次數
		for(int y = 0;y < data.length - 1;y++){//下標
			if(data[y] > daya[y + 1]){
				int z = data[y];
				data[y] = data[y + 1];
				data[y + 1] = z;
			}
		}
	}

8.封裝:用private修飾屬性和方法

main:
Student stu = new Student();
//stu.name = "";
stu.setName("張三");
System.out.println(stu.getName());

class Student{
	private String name;
	//setter方法修改值
	public void setName(String name){
		this.name = name;
	}

	//getter方法得到值:
	public String getName(){
		return name;
	}
}

9.繼承:用extends實現兩個類之間的is a的關係

共享代碼
class Person{
	String name;
	int age;
	char gender;
}

class Student extends Person{}

10多態:一個對象總有不同的類型去定義它

1:創建對象
       Person x = new Student();

2:放在參數裏面解耦
   public void wc(Student stu){XXX}
   public void wc(Teacher tea){XXX}
   public void wc(Doctor x){XXX}

   ->
   public void wc(Person x){}

   -> Object類裏面有一個方法判斷兩個對象能不能視爲相等對象
      1.equals(Object obj)

11.方法重載 Overload:

條件?
是否發生在同一個類體中
方法名是否一模一樣
參數是否不同【類型不同 個數不同 順序不同】

String:
substring(int 下標):該下標截取到最後
substring(int x,int y):從下標x截取到下標y-1

ArrayList:
remove(int 下標);
remove(Object 元素)

作用
同時滿足用戶的不同需求

12方法覆蓋 Override

條件?
子類在繼承得到父類的某些方法之後 不滿意 在子類裏面重新實現一下

子類權限 >= 父類權限
返回類型
	jdk5.0之前 一模一樣
	jdk5.0開始 斜變返回類型
方法簽名		一模一樣
異常	<= 父類的異常

父類:
protected Object clone(){XXX}
子類:
public Object/Object子類 clone(){}

13.構造方法

每個類都有構造方法 我們不寫 系統提供一個默認構造方法
//Student stu = new Student();

Student stu = new Student("張三"34);
stu.setAge(45);

class Student{
	String name;
	int age;
	public Student(String name,int age){
		this.name = name;
		this.age = age;
	}
	//public Student(){}
}

構造方法的首行:
super():表示要執行本構造方法之前 先去執行父類的構造方法
class Father{
	String name;
	int age;
	public Father(String name,int age){
		this.name = name;
		this.age = age;
	}

	public void showDay(){
		System.out.println("吃飯");
		System.out.println("看電視");
		System.out.println("砍樹");
	}
}

class Son extends Father{
	//name  age
	int stuId;
	
	public Son(String name,int age,int stuId){
		super(name,age);//只能放在構造方法的首行 共享父類構造方法的代碼
		this.stuId = stuId;
	}
	
	@Override
	public void showDay(){
		super.showDay();//放在普通方法裏面任何一行 共享父類普通方法的代碼
		System.out.println("打遊戲");

	}
}

this():要執行本構造方法之前 先去執行本類的其他的構造方法
class Student{
	String name;
	int age;
	int stuId;//成員變量
	
	public Student(String name,int age){
		this.name = name;
		this.age = age;
	}
	
	public Student(String name,int age,int stuId){
		this(name,age);//放在構造方法首行 共享本類其他構造方法的代碼
		this.stuId = stuId;
	}

	public void show(){
		int stuId = 12345;//局部變量
		System.out.println(stuId);
		//this.表示當前調用該方法的對象 沒有位置限制
		System.out.println(this.stuId);
	}
}

Java基礎課程體系

第1章 Java語言概述
第2章 基本語法
第3章 數組
第4章 面向對象編程(上)
第5章 面向對象編程(中)
第6章 面向對象編程(下)
第7章 異常處理
第8章 枚舉類&註解
第9章 Java集合
 第10章 泛型
 第11章 IO流
 第12章 多線程
 第13章 Java常用類
 第14章 Java反射機制
 第15章 網絡編程
 第16章 Lambda表達式與Stream API
 第17章 Java 9 & 10 & 11新特性在這裏插入圖片描述

第1章 Java語言概述

軟件開發
軟件,即一系列按照特定順序組織的計算機數據和指令的集合。有系統軟件和應用軟件之分
人機交互方式
 圖形化界面(Graphical User Interface GUI)這種方式簡單直觀,使用者易於接受,容易上手操作。
 命令行方式(Command Line Interface CLI): 需要有一個控制檯,輸入特定的指令,讓計算機完成一些操作。較爲麻煩,需要記錄住一些命令
常用的DOS命令
dir : 列出當前目錄下的文件以及文件夾
md : 創建目錄
rd : 刪除目錄
cd : 進入指定目錄
cd… : 退回到上一級目錄
cd: 退回到根目錄
del : 刪除文件
exit : 退出 dos 命令行
 補充: echo javase>1.doc

是SUN(Stanford University Network,斯坦福大學網絡公司 ) 1995年推出的一門高級編程語言。
 是一種面向Internet的編程語言。 Java一開始富有吸引力是因爲Java程序可以在Web瀏覽器中運行。 這些Java程序被稱爲Java小程序(applet)。 applet使用現代的圖形用戶界面與Web用戶進行交互。 applet內嵌在HTML代碼中。
 隨着Java技術在web方面的不斷成熟,已經成爲Web應用程序的首選開發語言,開發效率
在這裏插入圖片描述

Java技術體系平臺

Java SE(Java Standard Edition)標準版
Java EE(Java Enterprise Edition)企業版
Java ME(Java Micro Edition)小型版
Java Card支持一些Java小程序(Applets)運行在小內存設備(如智能卡)上的平臺

從Java的應用領域來分, Java語言的應用方向主要表現在以下幾個方面:
• 企業級應用:主要指複雜的大企業的軟件系統、各種類型的網站。 Java的安全機制以及它的跨平臺的優勢,使它在分佈式系統領域開發中有廣泛應用。應用領域包括金融、電
信、交通、電子商務等。
• Android平臺應用: Android應用程序使用Java語言編寫。 Android開發水平的高低,很大程度上取決於Java語言核心能力是否紮實。
• 大數據平臺開發:各類框架有Hadoop, spark, storm, flink等,就這類技術生態圈來講,還有各種中間件如flume, kafka, sqoop等等 ,這些框架以及工具大多數是用Java編寫而成,但提供諸如Java, scala, Python, R等各種語言API供編程。
• 移動領域應用:主要表現在消費和嵌入式領域, 是指在各種小型設備上的應用,包括手機、 PDA、機頂盒、汽車通信設備等。

java之父James Gosling團隊在開發”Green”項目時,發現C缺少垃圾回收系統,還有可移植的安全性、 分佈程序設計和多線程功能。最後,他們想要一種易於移植到各種設備上的平臺。

主要特徵

• Java語言是易學的。 Java語言的語法與C語言和C++語言很接近,使得大多數程序員很容易學習和使用Java。
• Java語言是強制面向對象的。 Java語言提供類、接口和繼承等原語,爲了簡單起見,只支持類之間的單繼承,但支持接口之間的多繼承,並支持類與接口之間的實現機制(關鍵字爲implements)。
• Java語言是分佈式的。 Java語言支持Internet應用的開發,在基本的Java應用編程接口中有一個網絡應用編程接口(java net),它提供了用於網絡應用編程的類
庫,包括URL、 URLConnection、 Socket、 ServerSocket等。 Java的RMI(遠程方法激活)機制也是開發分佈式應用的重要手段。
• Java語言是健壯的。 Java的強類型機制、異常處理、垃圾的自動收集等是Java程序健壯性的重要保證。對指針的丟棄是Java的明智選擇。
Java語言是安全的。 Java通常被用在網絡環境中,爲此, Java提供了一個安全機制以防惡意代碼的攻擊。如:安全防範機制(類ClassLoader),如分配不同的名字空間以防替代本地的同名類、字節代碼檢查。
• Java語言是體系結構中立的。 Java程序(後綴爲java的文件)在Java平臺上被編譯爲體系結構中立的字節碼格式(後綴爲class的文件),然後可以在實現這個Java平臺的任何系統中運行。
• Java語言是解釋型的。 如前所述, Java程序在Java平臺上被編譯爲字節碼格式,然後可以在實現這個Java平臺的任何系統的解釋器中運行。
• Java是性能略高的。 與那些解釋型的高級腳本語言相比, Java的性能還是較優的。
• Java語言是原生支持多線程的。 在Java語言中,線程是一種特殊的對象,它必須由Thread類或其子(孫)類來創建

1.4 Java語言運行機制及運行過程

特點一: 面向對象
兩個基本概念:類、對象
三大特性:封裝、繼承、多態
特點二: 健壯性
吸收了C/C++語言的優點,但去掉了其影響程序健壯性的部分(如指針、內存的申請與
釋放等),提供了一個相對安全的內存管理和訪問機制
特點三: 跨平臺性
跨平臺性:通過Java語言編寫的應用程序在不同的系統平臺上都可以運行。 “Write
once , Run Anywhere”
原理:只要在需要運行 java 應用程序的操作系統上,先安裝一個Java虛擬機 (JVM Java
Virtual Machine) 即可。由JVM來負責Java程序在該系統中的運行
在這裏插入圖片描述
Java兩種核心機制
Java虛擬機 (Java Virtal Machine)
垃圾收集機制 (Garbage Collection)

核心機制—垃圾回收

不再使用的內存空間應回收—— 垃圾回收。

  • 在C/C++等語言中,由程序員負責回收無用內存。
  • Java 語言消除了程序員回收無用內存空間的責任:它提供一種系統級線程跟蹤存儲空間的分配情況。並在JVM空閒時,檢查並釋放那些可被釋放的存儲空間。

垃圾回收在Java程序運行過程中自動進行,程序員無法精確控制和干預。

1.5 Java語言的環境搭建

明確什麼是JDK, JRE
下載 JDK
安裝 JDK
配置環境變量
path: windows系統執行命令時要搜尋的路徑。
驗證是否成功: javac java
選擇合適的文本編輯器或 IDE 開發

JDK(Java Development Kit Java開發工具包)
JDK是提供給Java開發人員使用的,其中包含了java的開發工具,也包括了JRE。所以安裝了JDK,就不用在單獨安裝JRE了。
 其中的開發工具:編譯工具(javac.exe) 打包工具(jar.exe)等
JRE(Java Runtime Environment Java運行環境)
包括Java虛擬機(JVM Java Virtual Machine)和Java程序所需的核心類庫等,如果想要運行一個開發好的Java程序,計算機中只需要安裝JRE即可
在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述

聲明爲public的類應與文件名一致,否知編譯失敗

public static void main(String[] args)

單行註釋
格式: //註釋文字
多行註釋
格式: /* 註釋文字 */
注:
對於單行和多行註釋,被註釋的文字,不會被JVM(java虛擬機)解釋執行。
多行註釋裏面不允許有多行註釋嵌套。

Java源文件以“java”爲擴展名。源文件的基本組成部分是類(class), 如
本例中的HelloWorld類。
Java應用程序的執行入口是main()方法。它有固定的書寫格式:
public static void main(String[] args) {…}
Java語言嚴格區分大小寫。
Java方法由一條條語句構成,每個語句以“;”結束。
大括號都是成對出現的, 缺一不可。
一個源文件中最多只能有一個public類。其它類的個數不限,如果源文件包含
一個public類,則文件名必須按該類名命名。

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