前言
我寫此文主要
參考:
目的是:
快速入門啦.由於工作的需求-Android安全.
計划:
Java一天入門
我從未學過Java.我會找出Java與C++等語言的區別.以達到快速學習的目的.
據了解Java基於C++,但是更簡單易學喲.
開始
類名
那一群帶.的東西是搞毛的?形如:package com.happyframework.javastudy.hello;
package對應目錄的相對路徑,class對應文件.
上面對應:
E:\Workspaces\MyEclipse 10\JavaStudy\src\com\happyframework\javastudy\hello\Hello.java
關於class有如下幾點規則:
文件的名字必須和class的名字一致(public級別的class名字)。
文件必須只包含一個public訪問基本的class(可以包含多個非public級別的class)。
package名字必須和目錄一致。
入口方法
Java里面只有方法,沒有函數喲.
入口方法如下:public class App {
public static void main(String[] args) {
com.happyframework.javastudy.hello.Hello.hello();
}
}
數據類型
特別之處是小數類型的常量默認是double類型,聲明float類型的常量需要使用F作為后綴。float fage =21.0F
運算符
特別之處是:
位運算符多了一種:
>
“>> 右移,高位補符號位” 這里右移一位.
“>>> 無符號右移,高位補0”; 與>>類似
字符串
Java原生支持字符串類型,而不是像C++一樣使用擴展,或者像C一樣使用數組.
String是擁有“值語義”的引用類型,字符串常量實現了“享元模式”,equals會按照內容進行比較,==按照地址比較。public class Program {
/**
*@param args
*/
public static void main(String[] args) {
String x = "段光偉";
String y = new String("段光偉");
System.out.println(x.equals(y)); // true
System.out.println(x == y); // false
}
}
為了高效的修改字符串Java引入了StringBuffer:{
StringBuffer sb =
new StringBuffer()
.append("段")
.append("光")
.append("偉");
System.out.println(sb.toString());
}
數組
相較於C++增加了一種聲明語法,改成了另外的三種初始化語法:
聲明語法
DataType[] name 或 DataType name[]。
初始化語法
DataType[] name = new DataType[length]。
DataType[] name = new DataType[] { element1, element2, …elementn }。
DataType[] name = { element1, element2, …elementn }。
只有不等長多維數組DataType[][],沒有DataType[xxx, xxx]啦。
控制結構
條件:沒變.
循環:for-each
Labeled block (多了個lable?)public class Program {
/**
*@param args
*/
public static void main(String[] args) {
task: {
int age = 25;
System.out.println("start");
if (age < 30) {
break task;
}
System.out.println("end");
}
}
}
方法
終於來到方法了.
Java中所有的賦值和方法調用都是“按值“處理的,引用類型的值是對象的地址,原始類型的值是其自身。
Java支持變長方法參數。public class Program {
/**
*@param args
*/
public static void main(String[] args) {
print("段光偉", "段光宇");
print(new String[] { "段光偉", "段光宇" });
}
private static void print(String... args) {
for (String item : args) {
System.out.println(item);
}
}
}
類糊塗開始
調用自身的構造方法是用this(xxx,xxx,…)來完成,且必須位於第一行。
靜態成員
Java中類似靜態構造方法的結構,稱之為:靜態初始化代碼塊,與之對應的是實例初始化代碼塊.
繼承
繼承使用extends,抽象類和抽象方法使用abstract聲明,向下轉型使用(ChildType)instance.
重寫
Java中的重寫規則比較靈活,具體如下:
1. 除了private修飾之外的所有實例方法都可以重寫,不需要顯式的聲明.
2. 重寫的方法為了顯式的表達重寫這一概念,使用@Override進行注解.
3. 重寫的方法可以修改訪問修飾符和返回類型,只要和父類的方法兼容(訪問級別更高,返回類型更具體).
4. 可以使用final將某個方法標記為不可重寫.
5. 在構造方法中使用super(xxx,xxx)調用父類構造方法,在常規實例方法中使用super.method(xxx,xxx)調用父類方法.
6. Java不支持覆蓋(new).
包
包的名字和項目路徑下的目錄路徑相對應.
Java支持三種導入語法:
1. 導入類型:import xxx.xxx.xxxClass
2. 導入包:import xxx.xxx.xxx.*
3. 導入靜態成員: import static xxx.xxx.*import static util.Helper.*;
public class Program {
/**
*@param args
*/
public static void main(String[] args) {
puts("段光偉");
}
}
訪問級別
Java支持四種訪問級別:public,private,protected和default(默認),類型和接口只支持public和default.
- protected 修飾過的成員只能被自己、子類和同一個包里的(不包括子包)其他類型訪問。
- default 修改過的類型或成員只能被自己和同一個包里的(不包括子包)其他類型訪問。
嵌套類
暈啊
常量
有一點需要注意的是:只有一種情況Java的常量是編譯時常量(編譯器會幫你替換),其它情況都是運行時常量,這種情況是:靜態類型常量且常量的值可以編譯時確定。
接口
Java的接口可以包含方法簽名,常量和嵌套類.
不同什么意思?百度一下.
枚舉
Java枚舉是class.
異常
Java中的異常分為checked和unchecked.
所有繼承Exception的異常(除了RuntimeException和它的后代之外)都是checked異常。
而checked異常必須聲明在方法中或被捕獲.
裝箱和拆箱
自動裝箱和自動拆箱是Java提供的語法糖。
語法糖是什么,我怎么會告訴你.
泛型方法
類似於C++的模板哈
類型參數約束
類型擦除過程
end.
入門到此結束.