先百度下學習方案。html
在線文檔java
http://tool.oschina.net/apidocs/apidoc?api=jdk_7u4c++
http://tool.oschina.net/apidocs/apidoc?api=jdk-zhc#
菜鳥教程api
http://www.runoob.com/java/java-tutorial.html安全
跟它學吧。。網絡
javac多線程
java函數
編譯、運行,第一課必然是這點,但不用連接嗎?如今還不知道。
javac編譯出的文件是.class,彷佛不是最終的可執行程序,但能夠用java命令執行,難度java的輸出文件是.class?這彷佛是類的obj吧。
JavaSE
JavaEE
JavaME
標準版、企業版、移動版。
特性:
1. 簡單
沒有操做符重載、多繼承、自動的強制類型轉換、指針。託管內存。
2. 面向對象、使用接口
接口支持多繼承,類不支持。
Java支持全面的動態綁定,不懂。
3. 網絡支持, java net
URL, URLConnection, Socket,ServerSocket, RMI(遠程方法激活)
4. 健壯
強類型、異常、內存託管。到處與C++對比。
5. 安全
網絡環境下的 ClassLoader , SecurityManager。
6. 中立,無非就是虛擬機機制的跨平臺特性。
7. 移植,同上。
8. 解釋性語言,相似.net
9. 高性能,C++笑了。
10. 多線程。
這大概是我在C++裏的一個痛點了。
synchronized 線程同步機制
11. 動態
Java類的動態加載。
有些明白爲何編譯出來是.class了,這就是編譯出來的文件,好像java還有包的概念,這就是它的結構嗎?
註釋和C++同樣。 // /* */
對象、類、方法、實例變量
類名首字母大寫
方法名首字母小寫
源文件名與類名相同
入口 public static void main(String args[])
標識符 沒什麼特別
修飾符
default
是switch的默認分支?那應該是在關鍵字部分的做用而不是修飾符。那是默認構造函數?像C++11那樣?
strictfp
變量 :
類變量(靜態變量)
按Java的規則,沒有全局變量,只能是靜態變量了。
數組
枚舉與c#沒什麼區別
不對,Java中能夠在枚舉中構造方法、變量、構造函數,也即枚舉也是一個類型。
關鍵字
boolen, 不是bool 需記一下
break
跳出循環或者label代碼段,label代碼段,比較陌生const 未使用。那怎麼定義常量呢?
extends 表示一個類是另外一個類的子類,怎麼用呢?
final
表示一個值在初始化以後就不能再改變了
表示方法不能被重寫,或者一個類不能有子類。這個解釋我懂,什麼叫一個值初始化以後就不能再改變了呢?常量?
goto 未使用,即沒有goto 那也就是說沒有const了,仍是怎麼定義常量呢
implements
表示一個類實現了接口import
導入類instanceof
測試一個對象是不是某個類的實例,相似 iskindof 吧interface
接口,一種抽象的類型,僅有方法和常量的定義。定義方法我明白,常量也能夠在接口中定義?native
表示方法用非java代碼實現,什麼鬼?調用C++什麼的非託管方法?package
一系列相關類組成一個包,不懂。strictfp
浮點數比較使用嚴格的規則,不懂。synchronized
表示同一時間只能由一個線程訪問的代碼塊,線程同步,概念懂。throws
定義方法可能拋出的異常。概念知道。transient
修飾不要序列化的字段,不懂。volatile
標記字段可能會被多個線程同時訪問,而不作同步,公共數據嘛。
剛LOL了一把,繼續。
JAVA特性:
多態、繼承、封裝、抽象、類、對象、實例、方法、消息解析。
一個源文件只能有一個public類,能夠有多個類。源文件名與public類相同。
若是一個類定義在某個包內, 則首行語句爲 package 包名
import 在package以後,類定義以前。
package和import對整個文件中的類生效。
包: 給類分類,看定義相似名稱空間。
測試代碼:
package Employ; /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ import java.io.*; /** * * @author y */ public class Employee { String name; int age; String designation; double salary; // 構造函數,java裏叫構造器 public Employee(String name) { this.name = name; } // 設置age public void empAge(int empAge){ this.age = empAge; } // 設置designation public void empDesignation(String empDesig){ this.designation = empDesig; } // 設置salary public void empSalary(double empSalary){ salary = empSalary; } // 打印 public void printEmployee() { System.out.println("Name:" + name); System.out.println("Age:" + age); System.out.println("Designation:" + designation); System.out.println("Salary:" + salary); } }
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package Employ; import Employ.Employee; /** * * @author y */ public class EmployeeTest { public static void main(String args[]){ // 構造兩個employee Employee empOne = new Employee("小楊"); Employee empTwo = new Employee("大楊"); // 分別調用 empOne.empAge(2); empOne.empDesignation("小楊小楊"); empOne.empSalary(1000); empOne.printEmployee(); empTwo.empAge(30); empTwo.empDesignation("大楊大楊"); empTwo.empSalary(400); empTwo.printEmployee(); } }
順便測試了運行配置,能夠在同一個項目裏選擇啓動的入口類。一個項目中能夠有多個main()。c++就不行了。
數據類型
java好像沒有unsignd 類型?
全部數字類型有 SIZE MAX_VALUE MIN_VALUE三個靜態變量,定義了類型的位數、最大值、最小值。
有void類型,沒法操做。java.long.Void
果真沒猜錯,java使用final定義常量。
這裏的轉義,之後會頗有用:
http://www.runoob.com/java/java-basic-datatypes.html
訪問修飾符,
default,默認,包內可見相似c#的internal
private,public,
protected,與c++和c#不一樣的是,對包內的類和全部子類均可見。
接口,接口裏的變量默認爲 public static final, 方法默認爲public
類和接口不能聲明爲private
Java的main()必須是公有的, public static 。
protected也不能聲明類和接口。聲明的成員能夠被包內的類可見。接口的成員和方法也不能聲明爲protected
父類public,子類必須public
父類protected, 子類能夠public, protected。
父類默認,子類能夠private
final , 類不能被繼承,方法不能被從新定義,變量爲常量。
final修飾的引用,不能指向其餘對象,但能夠被修改。即,這至關於指針常量而不是常量指針。
抽象方法必須在抽象類中,抽象類能夠不包含抽象方法。
使用extends繼承類, implement實現接口,略感彆扭。
序列化的對象包含被transient修飾的實例變量時,java虛擬機(JVM)跳過該特定的變量
今天到此,
學習了 基礎語法,對象和類,數據類型、變量、修飾符。
明天到運算符處。