第一章 初識java
1.1 Java簡介
java是一種可以編寫跨平臺的、面向對象的程序設計語言。
JAVA語言編寫的程序即是編譯型的,又是解釋型的。程序代碼經過編譯之後轉換爲一種稱爲java字節碼的中間語言,java虛擬機(JVM)將對字節碼進行解釋和運行。編譯只進行一次,而解釋在每次運行程序時都會進行。
Java版本:
1.java SE 爲java標準版,主要用於桌面應用程序的開發。
2.java EE 爲企業版,用於開發企業級分佈式的網絡程序。
3.java ME 主要應用於嵌入式開發。
java API(應用程序編程接口)
JDK(java開發者工具箱)
JRE(JAVA運行環境)
JRE主要負責java程序的運行,JDK包含了Java程序開發所需要的編譯、調試等工具,另外含JDK的源代碼
第二章 Eclipse開發工具
2.1熟悉Eclipse
IDE(集成開發工具)
編輯器顯示行號
在Java編輯器左側單擊鼠標右鍵,在彈出的快捷菜單中選擇“顯示行號”。
編寫Java代碼
Ctrl+Alt+/ 快捷鍵自動補全Java關鍵字,也可以使用Alt+/ 快捷鍵啓動Eclipse代碼輔助菜單。
System.out.println()方法可以通過輸入“syso”和按Alt+/快捷鍵完成快速輸入。
eclipse光標變成黑塊解決方法:
是由於編程時一不小心按到了Insert鍵,重新按一下Insert鍵就可以(在Delete鍵的上方)。
第三章 Java語言基礎
3.1 Java主體結構
Java程序的基本組成單元就是類,類體又包括屬性與方法兩部分。而每一個應用程序都必須包含一個main()方法,含有main()方法的類稱爲主類。
文件名必須和類名同名。
通常將類的屬性稱爲類的全局變量(成員變量),將方法中的屬性稱爲局部變量。
public、static和void分別是main()方法的權限修飾符、靜態修飾符和返回值修飾符。
3.2 基本數據類型
3.2.1整數類型
3.2.2轉義字符
3.3變量與常量
標識符由任意循序的字母、下劃線(_)、美元符號($)和數字組成,且第一個字符不能是數字。
生命常量,用final關鍵字
格式:final 數據類型 常量名稱[=值]
實例:final double PI = 3.1415926D
常量名通常使用大寫字母。
3.3.4變量的有效範圍
1.成員變量
可分爲靜態變量(也稱類變量):static int i = 90 ;和實例變量: int y = 45
靜態變量的有效範圍可以跨類,甚至可以達到整個應用程序之內。在其他類中可用“類名.靜態變量”的方式使用。
2.局部變量
只在當前代碼塊中有效。局部變量和成員變量名字相同時,隱藏成員變量,即成員變量在此方法中暫時失效。
3.4 運算符
3.5 數據類型轉換
3.5.1隱形類型轉換
從低級類型到高級類型的轉換,系統自動執行。順序:byte<short<int<long<float<double
3.5.2顯性類型轉換
從高級類型到低級類型的轉換(強制類型轉換)
語法如下:
(類型名)要轉換的值 int a = (int)45.3;long b=(long)456.6F
3.6 代碼註釋與編碼規範
單行註釋“//”
多行註釋“/* */”
文檔註釋“/** */”會被javadoc文檔工具讀取爲javadoc文檔內容
程序中註釋要佔代碼總量的20%-50%
Java語言的基本類型中並沒有String類型
第四章 流程控制
4.1 複合語句
以整個塊區爲單位的語句,又稱塊語句。以“{”開始,以“}”結束
4.2 條件語句
4.2.1 if條件語句
if(布爾表達式){
語句序列
}
4.2.2 switch多分支語句
switch(表達式)
{
case 常量1:
語句塊1
[break;]
```
case 常量n:
語句塊n
[break;]
default:
語句塊n+1;
[break;]
}
switch表達式中的值必須是整形或字符型,常量1~n必須也是整形或字符型。
4.3 循環語句
4.3.1 while循環語句
while(條件表達式)
{
執行語句
}
4.3.2 do...while循環語句
do
{
執行語句
}
while(條件表達式);
比while語句多一次循環
4.3.3 for循環語句
1.for語句
for(表達式1;表達式2;表達式3)
{
語句序列
}
2.foreach語句(用於遍歷數組等)
for(元素變量x:遍歷對象 obj){
引用了x的Java語句;
}
第五章 字符串
5.1 String類
聲明字符串:
String str = [null] 例:String s;
創建字符串:
String(char a[]) 例:String s = new String(a);
5.2 連接字符串
使用運算符“+”可完成多個字符串連接功能
只要“+”運算符的一個操作數是字符串,編譯器就會將另一個數自動調用toString()方法轉換成字符串形式。
int booktime = 4;
System.out.println(“我每天話費” + booktime + "小時看書" + practice);
5.3 獲取字符串信息
5.3.1 獲取字符串長度
str.length();
5.3.2 字符串查找
indexOf(String s)用於返回參數字符串s在指定字符串中首次出現的索引位置
語法:
str.indexOf(substr)
lastIndexOf(String str)用於返回指定字符串最後一次出現的索引位置
語法:
str.lastIndexOf(substr)
5.3.3 獲取指定索引位置的字符
str.chatAt(int index)
5.4 字符串操作
5.4.1 獲取子字符串
substring()方法可對字符串進行截取
1.
substring(int beginIndex) 從指定的索引位置開始截取直到該字符串結尾的子串
語法:
str.substring(int beginIndex)
2. substring(int beginIndex,int endIndex)從字符串某一索引開始截取至某一索引位置結束的子串
語法:
str.substring(int beginIndex,int endIndex)
5.4.2 去除空格
trim()方法返回字符串的副本,忽略前導空格和尾部空格
語法:
str.trim()
5.4.3 字符串替換
replace()方法可實現將指定的字符或字符串替換成新的字符或字符串
方法:
str.replace(char oldChar,char newChar)
5.4.4 判斷字符串的開始與結尾
startsWith()方法與endsWith()方法分別用於判斷字符串是否以指定的內容開始或結束
語法:
str.startsWith(String prefix) str.indsWith(String suffix)
5.4.5 判斷字符串是否相等
equals()方法區分大小寫
語法:
str.equals(String otherstr)
equalsIgnoreCase()方法 不區分大小寫
語法:
str.equalsIgnoreCase(String otherstr)
5.4.6 按字典順序比較兩個字符串
compareTo()方法爲按字典順序比較兩個字符串
語法:
str.compareTo(String otherstr)
5.4.7 字母大小寫轉換
toLowerCase()方法可將字符串中的所有字符從大寫字母改爲小寫字母
語法:
str.toLowerCase()
toUpperCase() 方法可將字符串中的所有字符從小寫字母改爲大寫字母
語法:
str.toUpperCase()
5.4.8 字符串分割
split()方法可以使字符串按指定的分割字符或字符串對內容進行分割,並將分割後的結果存放在字符串數組中
1. split(String sign)根據給定的分隔符對字符串進行拆分
語法: str.split(String sign)
沒有統一的對字符進行分割的字符。如想定義多個分隔符,可使用“|”,如“,|=”
2. split(String sign,int limit) 根據給定的分隔符對字符串進行拆分,並限定拆分的次數
5.5 格式化字符串
format()方法用於創建格式化的字符串
5.6 正則表達式
通常被用作判斷語句中,用於檢查某一字符串是否滿足某一格式
5.7 字符串生成器
StringBuider,提高頻繁增加字符串的效率
StringBuilder builder = new StringBuilder()
第六章 數組
6.1 數組概述
數組是相同類型的、用一個標識符封裝到一起的基本數據類型序列或對象序列。
6.2 一維數組
1.聲明:數組元素類型 數組名字[ ];
數組元素類型[ ] 數組名字;例:int arr[];
2.聲明數組只是給出了一個數組名字和元素的數據類型,
想真正使用數組,還得爲它分配內存空間:
數組名字 = new 數組元素類型[數組元素的個數];
例:arr= new int[5];
3.聲明的同時並分配內存:
數組元素類型 數組名 = new 數組元素類型[數組元素的個數];
例:int month[] = new int[12];
6.3 二維數組
1.聲明:數組元素類型 數組名字[][]; 數組元素類型[][] 數組名字;例:int arr[][];
6.4 數組的基本操作
6.4.1 遍歷數組
使用for循環實現。遍歷二維數組需使用雙層for循環,通過數組length屬性可獲取數組長度。
int arr = new int[]{1.2.4.5.6.3.7};
for (int k = 0; k < arr.length; k++)
{
System.out.println(arr[k]);
}
6.4.2 填充替換數組元素
通過Arrays類的靜態方法fill()來對數組中的元素進行替換。
1.fill(int[] a,int value)
//a:要進行元素替換的數組;value:要存儲數組中所有元素的值
2.fill(int[] a,int fromIndex,int toIndex,int value)
fromIndex:要使用指定值填充的第一個元素的索引(包括)
toIndex:要使用指定值填充的最後一個元素的索引(不包括)
6.4.3 數組排序
通過Arrays類的靜態方法sort()
Arrays.sort(object)
//object:要排序的數組名
根據字典編排順序排序,所以數字在字母前面,大寫字母在小寫字母前面
6.4.4 複製數組
Arrays類的copyOf()與copyOfRange()方法可實現對數組的複製。
1.copyOf()複製數組至指定長度
copyOf(arr,int newlength)
例:int newarr[] = Arrays.copyOf(arr,5)
2.copyOfRange()將指定數組的指定長度複製到一個新數組
copyOfRange(arr,int formIdex,int toIndex)
例:int newarr[] = Arrays.copyOfRange(arr,0,3)
6.4.5 數組查詢
Arrays類的binarySearch()方法,可用二分搜索法來搜索指定數組。
1.binarySearch(Object[] a.Object key)
//a:要搜索的數組;key:要搜索的值
若果key包含在數組中,則返回搜索值得索引;否則返回-1或_插入點。
2..binarySearch(Object[].a,int formIdex,int toIndex,Object key)
指定範圍內索引某一元素。
6.5 數組排序算法
6.5.1 冒泡排序
對比相鄰元素值,滿足條件就交換元素值,將較小的元素移動的數組前面
6.5.2 直接選擇排序
將指定排序位置與其他數組元素分別對比,滿足條件就交換元素值。
6.5.3 反轉排序
將數組最後一個元素與第一個元素替換,依次類推,直到所有元素反轉替換
第七章 類和對象
實質上可以將類看做是封裝對象屬性和行爲的載體,它定義了對象所具有的功能。而對象是類抽象出來的一個實例。
7.1 面向對象概述
7.1.1 對象
對象是事物存在的實體,如人、書桌等。
對象可劃分爲兩部分:靜態部分(屬性);動態部分(行爲)
7.1.2 類
類是同一類事物的統稱。具有相同屬性和行爲的一類實體稱爲類。
在Java語言中,類中對象的行爲是以方法的形式定義的,對象的屬性是以成員變量的形式定義的。
7.1.3 封裝
面向對象程序設計的特點:
封裝性
繼承性
多態性
封裝是面向對象編程的核心思想,將對象的屬性和行爲封裝起來,而將對象的屬性和行爲封裝起來的載體就是類,
類通常對客戶隱藏其實現細節,這就是封裝思想。提高程序的可維護性。
7.1.4 繼承
類與類之間的一種關係:繼承
主要利用特定對象之間的共有屬性
7.1.5 多態
將父類對象應用於子類的特徵就是多態。
多態性允許以統一的風格編寫程序,以處理種類繁多的已存在的類以及相關類。該風格由父類實現。
父類通常定義爲抽象類,在抽象類中給一個方法的標準,而不給出實現的具體流程。
在多態體制中,比抽象類更爲方便的方式是將抽象類定義爲接口。,由抽象方法組成的集合就是接口。
7.2 類
7.2.1 成員變量
對象的屬性
7.2.2 成員方法
1.對象的行爲
2.語法格式:
權限修飾符 返回值類型 方法名(參數類型 參數名){
```//方法體
return 返回值;
}
使用return後,方法執行將被終止
3.類成員變量和成員方法統稱爲類成員。
7.2.3 權限修飾符
控制着對類和類的成員變量以及成員方法的訪問。
7.2.4 局部變量及其有效範圍
從該變量的聲明開始到該變量的結束爲止
在乎不嵌套的作用域中可以同時聲明兩個名稱和類型相同的局部變量。
7.2.5 this關鍵字
代表本類對象的引用,用於引用對象的成員變量和方法。
還可以作爲方法的返回值
7.3 類的構造方法
構造方法是一個與類同名的方法。對象的創建就是通過構造方法完成的。每實例化一個對象時,類就會自動調用構造方法。
1.特點:
構造方法沒有返回值
構造方法的名稱要與本類的名稱相同。
2.語法格式:
public book(){
//```構造方法體
}
3.構造方法中可以爲成員變量賦值。
4.在無參構造方法中可以用this關鍵字調用有參的構造方法。且只可以在第一句使用this調用。
7.4 靜態變量、常量和方法
1.被static修飾的成員變量和成員方法獨立於該類的任何對象。也就是說,它不依賴類特定的實例,被類的所有實例共享。
只要這個類被加載,Java虛擬機就能根據類名在運行時數據區的方法區內定找到他們。因此,static對象可以在它的任何對象創建之前訪問,無需引用任何對象。
2.使用“類名.靜態成員”的形式調用
3.規定:
在靜態方法中不可以使用this關鍵字
在靜態方法中不可以直接調用非靜態方法
不能在方法體內的局部變量聲明爲static
7.5 類的主方法
主方法是類的入口,它定義程序從何處開始:主方法提供對程序流向的控制
特性:
1.主方法也是靜態,所以如要在主方法中調用其他方法,這該方法必須也是靜態的
2.主方法沒有返回值
3.主方法的形參爲數組
7.6 對 象
1.通過new操作符創建對象。
語法:
Test test = new Test();
Test test = new Test("a");
//"a"參數
每個對象都是相互獨立的
2.使用“對象.類成員”來獲取對象的屬性和行爲
3.對象的引用:
類名 對象引用名稱
例:Book book;
引用只是存放一個對象的內存地址,並非存放一個對象。
4.對象的比較:
“==”比較兩個對象的引用地址是否相等
equals()方法用於比較兩個對象引用所指的內容是否相等。
5.對象的銷燬
自動回收的情況:對象引用超過其作用範圍;見對象賦值爲null
第八章 包裝類
Java中不能定義基本類型對象,爲了能將基本類型視爲對象來處理,並能連接相關的方法,Java爲每個基本類型提供了包裝類。
8.1 Integer
java.lang包中的Integer類、Long類和Short類,分別將基本類型int、long和short封裝成一個類,且都是Number的子類,其包含的方法基本相同。
1.構造方法
1. Integer(int number)
例:Integer number = new Integer(7);
2.Integer(String str)
例:Integer number = new Integer(“85”);
8.2 Boolean
Boolean類將基本類型爲Boolean的值包裝在一個對象中。
構造方法
1.Boolean(boolean value)
2.Boolean(String str)
8.3 Byte
構造方法
1.Byte(byte value)
2.Byte(String str)
8.4 Character
構造方法
Chatacter(char value)
例:Character c1 = new Character('a');
8.5 Double
構造方法
Double(double value)
Double(String str)
8.6 Number
抽象類Number是BigDecimal,BigInteger,Byte,Double,Float,Integer,Long和Short類的父類。
第九章 數字處理類
9.1 數字格式化(DecimalFormat類)
DecimalFormat類用於格式化十進制數字,在格式化數字時,使用一些特殊字符構成一個格式化模板。
9.2 數字運算
Math類
提供了衆多數學函數方法,主要包括三角函數方法、指數函數方法、取整函數方法、取最大值、最小值以及平均值函數方法,這些方法都被定義爲static形式。
語法: Math.數學方法
9.3 隨機數
9.3.1 Math.random()方法
用於產生隨機數字,該方法默認生成大於等於0.0小於1.0的double型隨機數。
該方法返回的值實際是僞隨機數,是通過複雜運算得到的。
9.3.2 Random類
java.util.Random類,可以通過實例化一個Random對象創建一個隨機數生成器。
1.語法:Random r = new Random();
以這種方式實例化對象時,java編譯器以系統當前時間爲隨機數生成器的種子。
2.也可以自己設置隨機數生成器的種子(seedValue)。
語法:Random r = new Random(seedValue);
*9.4 大數字運算
BigInteger類是針對大整數的處理類,BigDecimal類是針對大小數的處理類。都用於高精度運算。