走进Java
先百度下學(xué)習(xí)方案。
?
在線文檔
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
跟它學(xué)吧。。
?
javac
java
編譯、運(yùn)行,第一課必然是這點(diǎn),但不用鏈接嗎?現(xiàn)在還不知道。
javac編譯出的文件是.class,似乎不是最終的可執(zhí)行程序,但可以用java命令執(zhí)行,難度java的輸出文件是.class?這似乎是類的obj吧。
?
JavaSE
JavaEE
JavaME
標(biāo)準(zhǔn)版、企業(yè)版、移動(dòng)版。
?
特性:
1. 簡單
沒有操作符重載、多繼承、自動(dòng)的強(qiáng)制類型轉(zhuǎn)換、指針。托管內(nèi)存。
2. 面向?qū)ο蟆⑹褂媒涌?/p>
接口支持多繼承,類不支持。
Java支持全面的動(dòng)態(tài)綁定,不懂。
3. 網(wǎng)絡(luò)支持, java net
URL, URLConnection, Socket,ServerSocket, RMI(遠(yuǎn)程方法激活)
4. 健壯
強(qiáng)類型、異常、內(nèi)存托管。處處與C++對(duì)比。
5. 安全
網(wǎng)絡(luò)環(huán)境下的 ClassLoader , SecurityManager。
6. 中立,無非就是虛擬機(jī)機(jī)制的跨平臺(tái)特性。
7. 移植,同上。
8. 解釋性語言,類似.net
9. 高性能,C++笑了。
10. 多線程。
這大概是我在C++里的一個(gè)痛點(diǎn)了。
synchronized 線程同步機(jī)制
11. 動(dòng)態(tài)
Java類的動(dòng)態(tài)加載。
?
有些明白為什么編譯出來是.class了,這就是編譯出來的文件,好像java還有包的概念,這就是它的結(jié)構(gòu)嗎?
?
注釋和C++一樣。 // /* */
對(duì)象、類、方法、實(shí)例變量
類名首字母大寫
方法名首字母小寫
源文件名與類名相同
入口 public static void main(String args[])
?
標(biāo)識(shí)符 沒什么特別
?
修飾符
default
是switch的默認(rèn)分支?那應(yīng)該是在關(guān)鍵字部分的作用而不是修飾符。那是默認(rèn)構(gòu)造函數(shù)?像C++11那樣?
strictfp
?
變量 :
類變量(靜態(tài)變量)
按Java的規(guī)則,沒有全局變量,只能是靜態(tài)變量了。
?
數(shù)組
?
枚舉與c#沒什么區(qū)別
不對(duì),Java中可以在枚舉中構(gòu)造方法、變量、構(gòu)造函數(shù),也即枚舉也是一個(gè)類型。
?
關(guān)鍵字
boolen, 不是bool 需記一下
break
跳出循環(huán)或者label代碼段,label代碼段,比較陌生
const 未使用。那怎么定義常量呢?
extends 表示一個(gè)類是另一個(gè)類的子類,怎么用呢?
final
表示一個(gè)值在初始化之后就不能再改變了
表示方法不能被重寫,或者一個(gè)類不能有子類。這個(gè)解釋我懂,什么叫一個(gè)值初始化之后就不能再改變了呢?常量?
goto 未使用,即沒有g(shù)oto 那也就是說沒有const了,還是怎么定義常量呢
implements
表示一個(gè)類實(shí)現(xiàn)了接口
import
導(dǎo)入類
instanceof
測(cè)試一個(gè)對(duì)象是否是某個(gè)類的實(shí)例,類似 iskindof 吧
interface
接口,一種抽象的類型,僅有方法和常量的定義。定義方法我明白,常量也可以在接口中定義?
native
表示方法用非java代碼實(shí)現(xiàn),什么鬼?調(diào)用C++什么的非托管方法?
package
一系列相關(guān)類組成一個(gè)包,不懂。
strictfp
浮點(diǎn)數(shù)比較使用嚴(yán)格的規(guī)則,不懂。
synchronized
表示同一時(shí)間只能由一個(gè)線程訪問的代碼塊,線程同步,概念懂。
throws
定義方法可能拋出的異常。概念知道。
transient
修飾不要序列化的字段,不懂。
volatile
標(biāo)記字段可能會(huì)被多個(gè)線程同時(shí)訪問,而不做同步,公共數(shù)據(jù)嘛。
剛LOL了一把,繼續(xù)。
JAVA特性:
多態(tài)、繼承、封裝、抽象、類、對(duì)象、實(shí)例、方法、消息解析。
一個(gè)源文件只能有一個(gè)public類,可以有多個(gè)類。源文件名與public類相同。
如果一個(gè)類定義在某個(gè)包內(nèi), 則首行語句為 package 包名
import 在package之后,類定義之前。
package和import對(duì)整個(gè)文件中的類生效。
?
包: 給類分類,看定義類似名稱空間。
測(cè)試代碼:
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;// 構(gòu)造函數(shù),java里叫構(gòu)造器public Employee(String name){this.name = name;}// 設(shè)置agepublic void empAge(int empAge){this.age = empAge;}// 設(shè)置designationpublic void empDesignation(String empDesig){this.designation = empDesig;}// 設(shè)置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[]){// 構(gòu)造兩個(gè)employeeEmployee empOne = new Employee("小楊");Employee empTwo = new Employee("大楊");// 分別調(diào)用empOne.empAge(2);empOne.empDesignation("小楊小楊");empOne.empSalary(1000);empOne.printEmployee();empTwo.empAge(30);empTwo.empDesignation("大楊大楊");empTwo.empSalary(400);empTwo.printEmployee();} }?
順便測(cè)試了運(yùn)行配置,可以在同一個(gè)項(xiàng)目里選擇啟動(dòng)的入口類。一個(gè)項(xiàng)目中可以有多個(gè)main()。c++就不行了。
?
數(shù)據(jù)類型
java好像沒有unsignd 類型?
所有數(shù)字類型有 SIZE? MAX_VALUE MIN_VALUE三個(gè)靜態(tài)變量,定義了類型的位數(shù)、最大值、最小值。
有void類型,無法操作。java.long.Void
?
果然沒猜錯(cuò),java使用final定義常量。
這里的轉(zhuǎn)義,以后會(huì)很有用:
http://www.runoob.com/java/java-basic-datatypes.html
?
訪問修飾符,
default,默認(rèn),包內(nèi)可見類似c#的internal
private,public,
protected,與c++和c#不同的是,對(duì)包內(nèi)的類和所有子類都可見。
?
接口,接口里的變量默認(rèn)為 public static final, 方法默認(rèn)為public
類和接口不能聲明為private
Java的main()必須是公有的, public static 。
protected也不能聲明類和接口。聲明的成員可以被包內(nèi)的類可見。接口的成員和方法也不能聲明為protected
?
父類public,子類必須public
父類protected, 子類可以public, protected。
父類默認(rèn),子類可以private
?
final , 類不能被繼承,方法不能被重新定義,變量為常量。
final修飾的引用,不能指向其他對(duì)象,但可以被修改。即,這相當(dāng)于指針常量而不是常量指針。
?
抽象方法必須在抽象類中,抽象類可以不包含抽象方法。
使用extends繼承類, implement實(shí)現(xiàn)接口,略感別扭。
序列化的對(duì)象包含被transient修飾的實(shí)例變量時(shí),java虛擬機(jī)(JVM)跳過該特定的變量
?
今天到此,
學(xué)習(xí)了 基礎(chǔ)語法,對(duì)象和類,數(shù)據(jù)類型、變量、修飾符。
明天到運(yùn)算符處。
http://www.runoob.com/java/java-operators.html
轉(zhuǎn)載于:https://www.cnblogs.com/hailong/p/5020790.html
總結(jié)
- 上一篇: chrome console 调试xpa
- 下一篇: java美元兑换,(Java实现) 美元