走进Java
先百度下學習方案。
?
在線文檔
http://tool.oschina.net/apidocs/apidoc?api=jdk_7u4
http://tool.oschina.net/apidocs/apidoc?api=jdk-zh
?
菜鳥教程
http://www.runoob.com/
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;}// 設置agepublic void empAge(int empAge){this.age = empAge;}// 設置designationpublic void empDesignation(String empDesig){this.designation = empDesig;}// 設置salarypublic 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[]){// 構造兩個employeeEmployee 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)跳過該特定的變量
?
今天到此,
學習了 基礎語法,對象和類,數據類型、變量、修飾符。
明天到運算符處。
http://www.runoob.com/java/java-operators.html
轉載于:https://www.cnblogs.com/hailong/p/5020790.html
總結
- 上一篇: chrome console 调试xpa
- 下一篇: HDU5593 ZYB's Tree