文章目錄一瞥
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);
}
數組的複製1:
int[] 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;
數組的複製2:
int[] 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類,則文件名必須按該類名命名。