走進Java

先百度下學習方案。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/數組

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)跳過該特定的變量

 

今天到此,

學習了 基礎語法,對象和類,數據類型、變量、修飾符。

明天到運算符處。

http://www.runoob.com/java/java-operators.html

相關文章
相關標籤/搜索