java程序開發(fā)使用的工具類包:JDK(java development kit)
java程序運行需要使用的虛擬機:JVM,只需要安裝JRE (java runtime environment)
java源碼文件:后綴是.java
編譯后的字節(jié)碼文件:后綴是class
運行class文件:源碼中必須有 public static void main(String[] args)方法,這樣才能啟動運行。
創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站制作、網(wǎng)站建設(shè)與策劃設(shè)計,白河網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)10余年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務涵蓋:白河等地區(qū)。白河做網(wǎng)站價格咨詢:028-86922220
把多個文件打包成一個模塊來運行:jar文件,jar文件由多個class組成,可以有main入口運行,也可以沒有。
需要運行的jar包必須指定一個MainClass,里面必須有main方法
概念:
類:一般情況下,一個源文件就是一個類,用類來劃分代碼結(jié)構(gòu),代碼內(nèi)容包含在類里面,以大括號包裹
public class MyClass {}
package:包,和文件夾的功能類似,用來對類進行分組,在類文件的首行,例如
package com.mypackagename.mysubpack;
導入類:一個類需要引用另外一個類的內(nèi)容時需要導入,例如:
import com.mypack.MyClassB;
導入靜態(tài)類:
import static com.myPack.MyClassB.MyStaticClass;
導入靜態(tài)類后可以直接使用靜態(tài)類里的靜態(tài)方法,例如可以
myStaticMethod();
如果沒有導入靜態(tài)類則需要,MyStaticClass.myStaticMethod();
構(gòu)造方法(或稱構(gòu)造函數(shù)),用來實例化類的方法,分為帶參和不帶參,默認不帶參的為空構(gòu)造方法,可以省略,特殊情況下不能省略。名稱和類名一致。
public MyClass(){}
方法:在類里面的一個執(zhí)行代碼塊,可以給外部或者內(nèi)部調(diào)用
訪問修飾符 返回類型 方法名(參數(shù)){}
public MyReturnType myMethod(String myParam){}
變量:
局部變量:在方法或者代碼塊里面聲明的變量,只有方法和內(nèi)部代碼塊能使用,不能使用訪問修飾符:
public String myMethod() {
String myLocalVar = "";
{
Integer myLocalVar2 = 0;
}
}
運算符:算術(shù)運算符,邏輯運算符
/**
*/
下面以代碼示例進行描述:
package com.kavy.test; //定義包名
import com.kavy.test.sub.SubLevelClass; //導入其他包的類
import java.util.ArrayList;
import java.util.List;
import static com.kavy.test.sub.SubLevelClass.MyStaticClass;//靜態(tài)類導入需要添加static
public class MyMain { //聲明一個MyMain的類
//聲明全局變量,在類內(nèi)部使用
private String myGlobalVar;
//聲明全局靜態(tài)變量,可以給外部直接使用
public static String myGlobalStaticVar;
//聲明不可修改的全局常量,final聲明的變量一旦賦值就不能更改,否則編譯時報錯
private final String MY_FINAL_VAR = "FINAL";
//類的運行入口,執(zhí)行這個class文件時會找到這個方法進行調(diào)用
public static void main(String[] args) {
new MyMain(); //實例化類,在內(nèi)存中創(chuàng)建一個MyMain對象
}
//無參構(gòu)造函數(shù)
public MyMain() {
String myLocalVar = "";//聲明局部變量,只能在這個構(gòu)造函數(shù)方法體內(nèi)部使用
{
String myLocalVarTwo = "";//局部變量,只能在方法體{}內(nèi)使用
}
new SameLevelClass();//同一個包下的類可以不需要使用import導入可以直接使用
new SubLevelClass();//不同包的類需要先導入才能使用
MyStaticClass.myStaticMethod();
SubLevelClass.MyStaticClass.myStaticMethod();
//算術(shù)運算符: + - * / % 加,減,乘,除,求余
//邏輯運算符:用作判斷 && 與, ||或 !非
//三目運算:myCondition ? a : b 如果條件為真則執(zhí)行a,為假則執(zhí)行b
//自增運算: ++ -- ,變量在左邊時,先返回變量,然后再自增
int a = 0;
int b = a++;//等同于 int b = a; a = a + 1;
int c = ++a; //等同于 a = a + 1; int c = a;
//邏輯判斷
if (true) {
} else if (false) {
} else {
}
//循環(huán):fori dowhile, while do
for(int i = 0; i < 10; i++){} //(初始條件,判斷條件;增加值,用分號分隔
String[] str = new String[10];//聲明一個數(shù)組,長度為10
for(String o: str){} //使用forin循環(huán)
do {
} while (a < 10); //do while循環(huán),無論while條件如何都會執(zhí)行一次do內(nèi)容
while (a < 10) {};//while循環(huán),只有while條件符合才會執(zhí)行里面的內(nèi)容
List myList = new ArrayList<>();
myList.forEach(item -> {}); //使用JDK1.8以后提供的stream和lambda表達式來簡化書寫
//分支語句:
switch (a) {
case 1: //a =1執(zhí)行一些內(nèi)容,執(zhí)行完末尾必須加上break,否則會
break;
case 2: //a =2執(zhí)行一些內(nèi)容
break;
default: //上面的值都沒有時
break;
}
//異常:分為運行時異常和檢查時異常,finally為無論異常怎樣都會執(zhí)行
try {
} catch (Exception e) {
} finally {
}
}
//有參構(gòu)造函數(shù)
public MyMain(String myParam) {}
//有參,有返回值的,內(nèi)部和外部都可以調(diào)用的實例方法
public String myMethod(String... myParam){
return "";
}
//方法重載:同名,同返回類型;參數(shù)類型,個數(shù)不一樣
public String myMethod(String paramA, Integer paramB) {
return "";
}
//內(nèi)部類:在一個類內(nèi)部再聲明一個類
class MySub extends MyMain { //繼承:使用extends繼承父類,擁有父類的除了private修飾的所有內(nèi)容
//方法覆蓋:子類覆蓋父類的方法,名稱,返回類型,參數(shù)類型個數(shù)都一樣,只有方法體內(nèi)部的內(nèi)容不一樣
public String myMethod(String paramA, Integer paramB) {
return "son";
}
}
//使用abstract聲明抽象類,一般類的方法都需要有方法體內(nèi)容,抽象類的抽象方法不需要有方法體內(nèi)容,方法體內(nèi)容交給繼承的子類實現(xiàn)
//含有抽象方法的類都是抽象類
abstract class MyAbstract{
abstract void myAbstractMethod();
}
//聲明一個接口,接口里只有方法和變量,沒有實體內(nèi)容,方法體的內(nèi)容交給實現(xiàn)這個接口的類來做,和抽象類不同的就是抽象類可以有實體內(nèi)容
interface MyInterface {
void myMethod();
}
}