Java基本語法:
__1、標識符 Java出現的名稱 如源文件名 類名 變量名 方法名 __
命名規范(見名知意):
1、類名 :所有單詞首字母大寫的 其他字母要小寫 一般使用名詞命名 如Person
如TestPerson
2、變量名:第一個單詞首字母小寫 其他單詞首字母大寫 其他字母小寫 一般使用形容詞 如stuAge
3、常量名:所有字母都大寫 多個單詞之間使用下劃線隔開 如static final int EXIT_ON_CLOSE=0
4、方法名:第一個單詞首字母小寫 其他單詞首字母大寫 其他字母小寫 一般使用動詞 如void setAge(int age)
__2、變量 定義 變量的數據類型 變量名[=初始值];變量可能是基本數據類型 如 int age
;
也可能是引用數據類型的變量 如 Student stu
; __
3、常量 定義 final 數據類型 常量名 = 初始值;
4、數據類型
基本數據類型
byte, short, int, long, float, double, char, boolean
基本數據類型的轉換
1、自動轉換 :
小容量類型 自動轉換為大容量類型
byte, short, char 參與運算時 先提升為int
如 short s1 = 1; short s2 = s1 + 1
;
2、強制轉換
大容量 轉換為 小容量
注意:強制轉換可能丟失精度
引用數據類型
數組
類
接口
枚舉 :
1.默認實現java.lang.Comparable接口
2 .它不能有public的構造函數,這樣做可以保證客戶代碼沒有辦法新建一個enum的實例。
3.所有枚舉值都是public , static , final的。
5、運算符
算術
+ - * / % ++ --
比較運算符
> >= < <= != ==
所有的比較都可以應用到int, short, byte, long, float, double, char
對于boolean只能使用==
和!=
引用數據類型 只能使用 ==
和 !=
賦值運算符
= ,+=, -= ,*= ,/= ,%=
如:int x = 20;
邏輯運算符
&& 短路
& 非短路
|| 短路
| 非短路
! 非
程序的流程結構
順序結構
選擇結構
if(條件表達式){}else{}
switch case break default
switch(表達式){// byte short char int String enum(也可以是枚舉類型)
case 常量1:
語句塊;
[break;]
case 常量2:
語句塊;
[break;]
default:
默認的語句塊
[break;]
}
循環結構
while(條件表達式){
}
do{
}while(條件表達式);
for(初始表達式;條件表達式;迭代表達式){
}
流程跳轉語句
break
continue
面向對象
1、數組定義和使用
定義數組:
數據類型[] 數組名;
如 int[] scores ; Student[] students
;
創建數組:
a、scores = new int[10];
b、Student stu1 = new Student();
Student[] students = {new Student(),new Student(),stu1};
c、Student[] students = new Student[2];
students[0] = new Student();
通過索引引用數組中的元素 從0 開始 到 length-1
數組有length屬性表示數組的長度
注意:數組越界異常 (運行時異常) java.lang.ArrayIndexOutOfBoundsException
2、面向對象的相關語法:
類定義
[修飾符(public|final|abstract)] class 類名 [extends 父類][implements 接口1,接口2]{
成員變量
定義:[修飾符(public|protected|private|final|static)] 數據類型 變量名[=初始值];
成員方法
定義:[修飾符(public|protected|private|final|static|abstract)] 返回值類型|void 方法名([參數類型 參數名]) throws 異常類型,異常類型{
}
構造方法
定義:[修飾符(public|protected|private)] 類名([參數類型 參數名]){}
成員內部類
靜態和實例代碼塊
}
對象創建
Student stu = new Student() ;
new Student().setAge(10);
new 構造方法([參數]);
構造方法定義與使用
在Java中,任何變量在被使用前都必須先設置初值.Java提供了為類的成員變量賦初值的專門方法
1、有參
2、無參
public class A{
public A(){
System.out.println("調用了無參的構造函數");
}
public A(String mess){
System.out.println("調用了有參的構造函數\n"+
"參數內容為:"+mess);
}
}
方法重載(overload)
同一個類中定義類多個同名方法 但是這些方法參數不同
參數不同: 參數數據類型不同 參數個數不同
__ 什么是引用__
引用就是某一變量(目標)的一個別名,對引用的操作與對變量直接操作完全一樣。
引用的聲明方法:類型標識符 &引用名=目標變量名;
【例1】:int a; int &ra=a; //定義引用ra,它是變量a的引用,即別名
__ 對象的內存地址__
__ this關鍵字的使用__
this指的是當前類的當前對象 保存當前對象的引用
1、調用當前對象的成員變量和成員方法 如 this.成員變量名 或者 this.成員方法
2、在構造方法調用同一個類的另外一個構造方法 如 this([參數])
3、繼承
Java中類和類之間是單繼承 接口和接口是多繼承
所有的類默認會繼承Object
主要目的:
重用,擴展性提升
子類會繼承父類中非私有的成員(成員變量 成員方法 成員內部類)
4、重寫
把從父類繼承來的方法在子類中重新實現
注意:
和重載的區別
方法的簽名要和父類一致(
訪問修飾符要大于或者等于父類中方法
拋出異常個數要少于或者等于父類中異常個數
拋出異常的類型要和父類相同 或者 是父類中拋出異常類型的子類型
)
__ super__
當前對象的父對象
1、調用父類對象的成員變量和成員方法
2、在子類構造方法調用父類的構造方法
__ static __
修飾符 注意 不能和abstract一起使用
成員變量
類變量 是當前類所有對象共享的 建議使用類名調用
成員方法
類方法 建議使用類名調用
static{
}
__ final__
修飾符
變量 成員方法 類 注意 final不能和abstract一起使用
final 、finally 、finalize三者之間的區別
5、封裝
把一類事物進行抽象 取出它屬性和行為封裝到Java類中
屬性的封裝 將屬性私有 提供get和set方法
private 修飾 成員變量 成員方法 構造方法
程序23種設計模式 其中有一種模式 :單例模式 保證某一個類在程序運行期間只有一個對象 而且獲取多次是同一個對象
抽象類 和 抽象方法
abstract class 類名{ }
抽象類中可能會定義抽象方法
[修飾符(public|protected)] abstract 返回值類型|void 方法名([參數類型 參數名]);
__6、接口 __
[public] interface 接口名 [extends 接口1,接口2]{
//常量 public static final
//抽象方法 public abstract
}
類實現接口
[implements 接口名1,接口名2]
__7、向上轉型 __
把子類對象 賦值 給父類型的引用變量 就是向上轉型:
WindowListener wl = new WindowAdepater(){};
向上轉型之后 只能調用父類型中定義成員變量和成員方法,但是如果這個方法子類中寫了 調用子類重寫后的方法
8、多態
相同類型的引用變量 調用同一個方法表現出不同的行為
Animal a = new Cat();
a.shout();//喵喵
a = new Dog();
a.shout()://汪汪
訪問修飾符
public > protected > 默認的 > private
常用類:
Objecte quals toString hashCode finalize wait notify notifyAll clone String
最常用的
String s0 = new String("hello");
String s1 = "hello";
String s2 = "hello";
StringBuffer
StringBuilder
包裝類
八種基本數據類型 每一個基本數據類型對應一個包裝類
將字符串轉換為基本數據類型值的方法 xxx parseXxx
自動裝箱 和 自動拆箱
java.util.Date ****表示日期時間的對象
Date()
Date(long mills)
long getTime()
java.util.Calendar **** 通過這個類可以實現 設置具體某一個日期時間
java.text.SimpleDateFormat ****
集合
Collection<E>
List<E>
ArrayList<E>
LinkedList<E>
Set<E>
HashSet<E>
Map<K,V> ****
HashMap<K,V>
Map.Entry<K,V> 表示Map集合中一個鍵值對對象
getKey()
getValue()
Collections 排序
public void changeSort(int type){
Comparator<ItemBean> comparator;
Toast.makeText(this, "type=="+type, 5).show();
switch(type){
case 1:{
// 價格從低到高排序
comparator = new PriceLowToHighComparator();
Collections.sort(list, comparator);
}
break;
case 2:{
// 價格從高到低排序
comparator = new PriceHighToLowComparator();
Collections.sort(list, comparator);
}
break;
}
adapter.setItemBeanList(list);
adapter.notifyDataSetChanged();
}
__File 和 io流 __
io流和文件是Android常用技術
根據處理數據類型的不同分為:字符流和字節流
根據數據流向不同分為:輸入流和輸出流
線程
Java中線程的創建方式 以及保證類是線程安全
1、繼承 java.lang.Thread
2、實現 java.lang.Runnable
重寫他們的run方法 創建線程對象 調用start方法啟動線程
掌握線程狀態
異常
1、分類
運行時 :NullPointerException 空指針異常
ArrayIndexOutOfBoundsException 數組越界異常(數組下標越界)
StringIndexOutOfBoundsException 字符串越界異常(字符串索引越界)
ClassCastException 數字格式化異常
NumberFormatException 類轉換異常
編譯期異常: IOException 以及它的子類(FileNotFoundException(文件未找到異常),SocketException(套接字異常))
PaserException
2、異常處理的方式:
a、拋出 定義方式 指定 當前方法的方法體內可以能會產生異常類型
b、捕捉try{ }catch(異常類型 對象名){}finally{總是要執行的代碼}
網絡編程
1、TCP
TCP屬于即時通信,點對點連接進行通信,常用于開發聊天室。
學習的時候寫過一個demo,放在了github上,需要的可以下載看看,地址https://github.com/wapchief/chat-room-JFrame
2、UDP
UDP是通過數據包來進行通信,UDP當中會涉及到數據的解析和傳送。常用于音頻、視頻等數據的傳輸。
內部類
⒈靜態內部類
⒉成員內部類
⒊局部內部類
⒋匿名內部類
枚舉類型 和 類 以及 接口類似 是Jdk1.5之后提供的一種新的Java類型 類似于定義的常量
[public] enum 類型名{
//枚舉常量
//成員方法
}
之前學習java時候做的總結筆記,希望對一些初學者能有所幫助。