电竞比分网-中国电竞赛事及体育赛事平台

分享

JAVA速成

 昵稱(chēng)22369024 2015-04-02

一  基本知識(shí)

1 數(shù)據(jù)類(lèi)型

類(lèi)似于c/c++


對(duì)于long類(lèi)型常量書(shū)寫(xiě)時(shí),要在數(shù)字后面加上L或者l。0L
    對(duì)于float類(lèi)型常量書(shū)寫(xiě)時(shí),要在小數(shù)點(diǎn)后面加上F或者f。0.0F
    對(duì)于double類(lèi)型常量書(shū)寫(xiě)時(shí),要在小數(shù)點(diǎn)后面加上D或者d。 0.0D

數(shù)據(jù)類(lèi)型之間的轉(zhuǎn)換
Java中也有隱式轉(zhuǎn)換(Java則叫做自動(dòng)轉(zhuǎn)換)和顯式轉(zhuǎn)換(Java則叫做強(qiáng)制轉(zhuǎn)換)。自動(dòng)轉(zhuǎn)換由編譯器實(shí)現(xiàn),強(qiáng)制轉(zhuǎn)換則由用戶編程實(shí)現(xiàn),再由編譯器執(zhí)行。

自動(dòng)轉(zhuǎn)換的規(guī)則:低級(jí)數(shù)據(jù)類(lèi)型 ==》 高級(jí)數(shù)據(jù)類(lèi)型;所占字節(jié)數(shù)低的數(shù)據(jù)類(lèi)型 ==》 所占字節(jié)數(shù)高的數(shù)據(jù)類(lèi)型
例如:byte short int long(整數(shù)類(lèi)型) ==》 float double(浮點(diǎn)數(shù)類(lèi)型)
      byte short(8字節(jié)和16字節(jié)) ==》int(32字節(jié))
      byte short int(8字節(jié),16字節(jié)和32字節(jié)) ==》 long(64字節(jié))
      float(32字節(jié)) ==》 double(64字節(jié))
      char(16字節(jié)) ==》 int(32字節(jié))
注:整數(shù)類(lèi)型中的long,雖然占64個(gè)字節(jié),但是卻能自動(dòng)轉(zhuǎn)換成float類(lèi)型(32字節(jié))。因此,我認(rèn)為,在自動(dòng)轉(zhuǎn)換的過(guò)程中,先考慮數(shù)據(jù)類(lèi)型的等級(jí)高低,再考慮數(shù)據(jù)類(lèi)型的所占字節(jié)數(shù)。

再注:從簡(jiǎn)單數(shù)據(jù)類(lèi)型圖中不難看出,各數(shù)據(jù)類(lèi)型的長(zhǎng)度均為固定值,這使得Java能夠在不同的平臺(tái)上運(yùn)行相同的Java程序時(shí)不用修改代碼,提高了程序的可移植特性。
 

2  頭文件

(1)類(lèi)似于c++的命名空間或者是頭文件

在JAVA中叫做包(package)。Java的核心包中,我們常用的有這樣5種:
(1)java.lang , 封裝了所有編寫(xiě)java程序所需要的基本類(lèi),包括Object、Class、System等。其中,Object類(lèi)是所有類(lèi)的根類(lèi),任何類(lèi)都是繼承該類(lèi)而建立的;Class類(lèi)是由編譯器動(dòng)態(tài)生成對(duì)象的一個(gè)伴隨每一個(gè)類(lèi)的特殊類(lèi);System類(lèi)是一個(gè)final類(lèi),主要提供標(biāo)準(zhǔn)I/O和對(duì)系統(tǒng)環(huán)境信息的訪問(wèn)等,這個(gè)類(lèi)不能被實(shí)例化。
(2)java.awt , 窗口工具包,提供操作圖形用戶界面的基本功能。
(3)java.applet , 封裝Applet類(lèi)的包,提供Applet執(zhí)行時(shí)需要的類(lèi)。
(4)java.io , 封裝I/O操作的包。
(5)java.util , 提供使用程序類(lèi)以及集合類(lèi)等常用的工具類(lèi)。


3 程序結(jié)構(gòu)

首先,是package語(yǔ)句,用來(lái)指定源文件所在的包。

然后,是public classDefinitiom,也就是公共類(lèi),用來(lái)指定源文件的類(lèi)名,這個(gè)類(lèi)名要與源文件名相同,可有0個(gè)或1個(gè)。
再然后,是classDefinition,也就是一般類(lèi),可以有若干個(gè),也可以沒(méi)有。
注:一個(gè)java源文件中,最多只能有一個(gè)public類(lèi),且必須與文件名相同。

我們的第一個(gè)程序:

import java.lang.*;
import java.io.*;

class matrix  //一般類(lèi) 
{     
    void luoyang1()
   {   } 
}

public class Matrixkey //public類(lèi),類(lèi)名要與文件名相同
{     
     public static void main(String args[])
     {
        System.out.println("很高興認(rèn)識(shí)你,我是Matrixkey");
      }
}


Java的解釋執(zhí)行

在系統(tǒng)運(yùn)行Java程序時(shí),Java編譯器將Java程序(*.java文件)轉(zhuǎn)化為字節(jié)碼(*.class文件),在運(yùn)行時(shí),解釋器將編譯得到的字節(jié)碼進(jìn)行解釋執(zhí)行。
Java語(yǔ)言一個(gè)源程序可以含有多個(gè)類(lèi)(public類(lèi)最多一個(gè)),每個(gè)類(lèi)編譯都生成一個(gè)字節(jié)碼文件。也就是說(shuō),有幾個(gè)類(lèi),就有幾個(gè)字節(jié)碼文件。
這就是,我們?cè)趫?zhí)行一個(gè)Java程序時(shí)要先用javac *.java將Java程序轉(zhuǎn)化為字節(jié)碼的原因。
注:Java區(qū)分大小寫(xiě),因此上面的程序中,public類(lèi)的類(lèi)名:Matrixke,那么這個(gè)java程序的文件名必須為:Matrixkey.java


5 輸入輸出 

輸出使用println方法。println方法的使用方法如下:

System.out.println( x );

 System是java.lang.*包中的類(lèi),out是System類(lèi)的一靜態(tài)屬性,而println()是out屬性的一個(gè)靜態(tài)方法。該方法用于打印后再換行,可以打印基本類(lèi)型的數(shù)據(jù)以及字符串等,'+' 在字符串中代表將字符串相互連接。

        int x = 4772;
        /* 輸出一個(gè)字符m */
        System.out.println(m);  
       
        * 輸出一個(gè)數(shù)字4772 */

        System.out.println("變量x等于"+x); //或者直接System.out.println(x);
     
        /* 輸出一個(gè)字符串matrixkey */

        System.out.println("matrixkey");

        /* 輸出漢字落陽(yáng)*/
        
System.out.println("落陽(yáng)");
   

println方法打印后自動(dòng)換行,因此,下面2條代碼輸出結(jié)果是一致的

int x = 100;
System.out.println(x);
System.out.print(x + "\n");

注意:"+"號(hào)用來(lái)連接字符串是有點(diǎn)麻煩的! 例如:
System.out.println(1+2+"3"); 
Sysrem.out.println("1"+2+3); 
'+'號(hào)優(yōu)先級(jí)別,從左到右 
所以打印結(jié)果是這樣的:
33(先做1+2 變成字符串"3" 連接后面的"3",所以打印33) 
123(先把"1"和2連接成為"12",在連接3就變成"123")


6 運(yùn)算符和流程控制

C/C++類(lèi)似,注意switch不能做實(shí)數(shù)的判斷


二 類(lèi)  

1 概念

類(lèi)作為JAVA程序的基本要素,由成員變量(即屬性)和成員方法組成,必須先定義在使用。
類(lèi)聲明格式:[修飾符] class 類(lèi)名 [extends 父類(lèi)名] [implements 類(lèi)實(shí)現(xiàn)的接口列表]
(1)修飾符用于確定類(lèi)的訪問(wèn)控制權(quán)限(public和friendly)以及類(lèi)型(abstract和final)
(2)類(lèi)名是合法的標(biāo)識(shí)符,并且首字母大寫(xiě)
(3)保留字extends指明聲明的類(lèi)所繼承的父類(lèi)
(4)[ ]里的內(nèi)容可選

/* JAVA中類(lèi)的聲明和繼承*/
public class Matrixkey
{成員變量
 成員方法}
 class Matrix extends Matrixkey

/* C#中類(lèi)的聲明和繼承*/
public class Matrixkey
{成員變量
 成員方法}
 class Matrixk : Matrixkey

類(lèi)體格式:class 類(lèi)名 {成員變量 成員方法}
其中成員變量定義的格式為:<修飾符> <類(lèi)型> <變量名稱(chēng)>
        成員方法定義的格式為:<修飾符> <返回值類(lèi)型> <方法名稱(chēng)> ( [ <參數(shù)表> ] )
(1)成員變量和成員方法可以通過(guò)public private protected等修飾符控制訪問(wèn)權(quán)限
(2)java中,方式是通過(guò)值傳遞參數(shù),而不是通過(guò)地址,因此方法不可以改變參數(shù)的值
例:

public class Matrixkey  //類(lèi)聲明
 { public int a;
    public double b;        //成員變量的聲明
    
    static void Min(double c)  //成員方法的聲明 
 }

類(lèi)成員的修飾符有兩種
訪問(wèn)限定符:public  可以被外部類(lèi)訪問(wèn)
                        protected  可以被同一個(gè)包中的類(lèi)以及該類(lèi)的子類(lèi)訪問(wèn)
                        private  只能在該類(lèi)內(nèi)部被訪問(wèn)
                      
  default  可以被同一個(gè)包中的類(lèi)訪問(wèn)
非訪問(wèn)限定符:靜態(tài)修飾符 static
                            最終修飾符  final
       抽象修飾符 abstract  syncronized

2 類(lèi)的繼承

在java語(yǔ)言中,類(lèi)繼承是通過(guò)extends保留字實(shí)現(xiàn)的,格式為:

 class Subclass extends Superclass {...}

(1) 用extends指明新定義的子類(lèi)(Subclass)的父類(lèi)(Superclass),就在兩個(gè)類(lèi)之間建立了繼承的關(guān)系
(2)子類(lèi)可以從父類(lèi)繼承所有非private的屬性和方法作為自己的成員
(3)若子類(lèi)成員變量的名字 和 父類(lèi)成員變量的名字 相同,則子類(lèi)成員隱藏父類(lèi)成員
(4)若子類(lèi)成員方法 與 父類(lèi)成員方法的名字,返回值類(lèi)型,參數(shù)表都相同,則子類(lèi)方式是父類(lèi)方法的重寫(xiě)
(5)方法重寫(xiě)時(shí)注意:子類(lèi)方法的訪問(wèn)權(quán)限要高于父類(lèi)

子類(lèi)方法的訪問(wèn)權(quán)限比父類(lèi)方法的訪問(wèn)權(quán)限要高,一般用Super關(guān)鍵字來(lái)訪問(wèn)父類(lèi)的方法和變量,但是父類(lèi)的對(duì)象不能直接訪問(wèn)子類(lèi)的方法和變量


3  數(shù)組

定義一維數(shù)組的格式:<類(lèi)型> <數(shù)組名> [ ]; 或者 <類(lèi)型> [ ] <數(shù)組名>;
因此,int A [ ]; int [ ] A ; 兩者是相同的
(1)<類(lèi)型>可以是簡(jiǎn)單或者復(fù)雜數(shù)據(jù)類(lèi)型
(2)進(jìn)行數(shù)組定義時(shí),不分配內(nèi)存,因此不要求給出其元素的個(gè)數(shù)
(3)數(shù)組分配內(nèi)存通過(guò)new操作符或靜態(tài)初始化實(shí)現(xiàn)
創(chuàng)建一維數(shù)組的格式:<數(shù)組名> = new <類(lèi)型> [ <數(shù)組大小> ];
                                          A = new int [3];
定義的同時(shí)創(chuàng)建:<類(lèi)型> [ ] 數(shù)組名 = new <類(lèi)型> [ <數(shù)組大小> ];
                                 int [ ] A = new int [3];
初始化數(shù)組:對(duì)已定義的數(shù)組元素賦值,有動(dòng)態(tài)和靜態(tài)兩種方式
(1)當(dāng)初始化元素?cái)?shù)目較少,采用靜態(tài)初始化
            int A[ ];
            A[0] = 1; A[1] = 2;A[2] = 3;
(2)對(duì)簡(jiǎn)單類(lèi)型,定義數(shù)組的同時(shí),用new操作符進(jìn)行初始化
           int [ ] A = new int [3]{1,2,3};
(3)當(dāng)初始化元素?cái)?shù)目較多,可以利用循環(huán)語(yǔ)句對(duì)數(shù)組元素動(dòng)態(tài)初始化

多維數(shù)組
定義的格式:<類(lèi)型> <數(shù)組名> [ ] [ ];  或者 <類(lèi)型> [ ] [ ] <數(shù)組名>;
初始化:在定義的同時(shí)對(duì)數(shù)組元素進(jìn)行賦值(靜態(tài))
                可以按順序直接對(duì)每一維分配內(nèi)存或從最高維開(kāi)始對(duì)每一維分配內(nèi)存(動(dòng)態(tài))

數(shù)組操作
(1)方法arraycopy()用來(lái)進(jìn)行數(shù)組的拷貝
(2)ArrayList類(lèi)用來(lái)動(dòng)態(tài)調(diào)整數(shù)組的大小  


4 字符串的表示

(1)用String類(lèi)表示字符串,String類(lèi)的對(duì)象表示的是固定長(zhǎng)度的字符串
(2)用StringBuffer類(lèi)表示字符串,StringBuffer類(lèi)的每個(gè)對(duì)象都是長(zhǎng)度可變的字符串
字符串的操作
(1)對(duì)String的修改
String類(lèi)提供了concat() replace() substring()方法分別實(shí)現(xiàn)字符串的連接,替換,取子串的操作;“+”運(yùn)算符也可以用來(lái)連接字符串。
(2)對(duì)StringBuffer的修改
 StringBuffer類(lèi)表示的是可變長(zhǎng)度的字符串,使用它,就可以方便地在字符串中插入或在字符串尾追加字符。相應(yīng)的方法是:insert(),setCharAt(),append()。
(3)判斷兩個(gè)字符串是否相等,使用equals()方法

三  異常處理 

參考類(lèi)似c/c++。
對(duì)于try和catch子句的排列方式,下列哪個(gè)是正確的?
A。 子類(lèi)異常在前,父類(lèi)異常在后
B。 父類(lèi)異常在前,子類(lèi)異常在后
C。 只能有子類(lèi)異常
D。 父類(lèi)異常和子類(lèi)異常不能同時(shí)出現(xiàn)在同一個(gè)try程序段內(nèi)
解析:在java語(yǔ)言中,在捕獲父類(lèi)異常時(shí)對(duì)其子類(lèi)異常也捕獲了,根據(jù)try與catch的匹配原則,盡量使用一個(gè)父類(lèi)去捕獲其所有子類(lèi)的異常,而父類(lèi)和子類(lèi)異常是可以同時(shí)出現(xiàn)的。
答案:A

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多