Java語(yǔ)言的基礎(chǔ)
引導(dǎo)語(yǔ):Java是一種可以撰寫(xiě)跨平臺(tái)應(yīng)用程序的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言。以下是百分網(wǎng)小編分享給大家的Java語(yǔ)言基礎(chǔ),幫助大家了解Java語(yǔ)言的名稱,描述,定義,例子,備注。
java語(yǔ)言基礎(chǔ)(名稱,描述,定義,例子,備注)
1.1標(biāo)識(shí)符、關(guān)鍵字、保留字
標(biāo)識(shí)符、關(guān)鍵字、保留字
名稱:標(biāo)識(shí)符;定義:由任意順序的字母、數(shù)字、下劃線、美元符號(hào)$組成,第一個(gè)字母不能是數(shù)字,不能是保留關(guān)鍵字;描述:指用戶自定義的類名、變量名、接口名、方法名;例子:合法的:name、user_age1、$page,不合法的:5word、int、Username(字符不能有空格);備注:命名法則:文件|文件夾方式命名。
名稱:關(guān)鍵字;定義:對(duì)java的編譯器有特殊的意義,他們用來(lái)表示一種數(shù)據(jù)類型,或者表示程序的結(jié)構(gòu)等,關(guān)鍵字不能用作變量名、方法名、類名、包名;描述:java語(yǔ)言中已經(jīng)被賦予特定意義的一些單詞,不可以把這些字符作為標(biāo)識(shí)符來(lái)使用。例子:Java關(guān)鍵字
int |
public |
this |
finally |
boolean |
abstract |
continue |
float |
long |
short |
throw |
throws |
return |
break |
for |
static |
new |
interface |
if |
goto |
default |
byte |
do |
case |
strictfp |
package |
super |
void |
try |
switch |
else |
catch |
implements |
private |
final |
class |
extends |
volatile |
while |
synchronized |
instanceof |
char |
protected |
import |
transient |
implemends |
default |
double |
friendly,sizeof不是java的關(guān)鍵字,并且java關(guān)鍵字都是小寫(xiě)的
保留字:指現(xiàn)有Java版本尚未使用但以后版本可能會(huì)作為關(guān)鍵字使用的單詞;例子:Java保留字
byValue |
cast |
false |
future |
generic |
inner |
operator |
outer |
rest |
true |
var |
goto |
const |
null |
|
|
|
|
1.2量(常量、變量)
量的分類:常量和變量
名稱:變量;定義:指一個(gè)內(nèi)容可變的數(shù)據(jù)存儲(chǔ)空間的表示(在程序中使用變量?jī)?nèi)容可改變);描述:由變量類型和變量名或初始值組成(type 標(biāo)識(shí)符[=初始值]);例子:intage; Boolean b=true; float f1,f2,f3。
名稱:常量;定義:指在程序中不能改變的量(與變量性質(zhì)相反);描述:由final 類型名稱=值組成(final type 名稱=值);例子:finalfloat PI=3.1415926F;備注:常量名稱一般定義為大寫(xiě)字母。
量的使用:直接打印輸出;傳遞;對(duì)象名.變量名(實(shí)例變量);類名.變量名(靜態(tài)變量);
量的作用范圍:指量在程序中所擁有的權(quán)限。
量[變量]-全局變量(成員變量)|局部變量
成員變量:指在類中(在方法外面)聲明的變量,作用域是整個(gè)類,也可以說(shuō)是類的屬性。分類:靜態(tài)變量:創(chuàng)建的變量與對(duì)象無(wú)關(guān)(屬于成員變量),當(dāng)不必引用對(duì)象時(shí)可以直接用類來(lái)訪問(wèn)靜態(tài)變量;為多個(gè)實(shí)例分配一個(gè)內(nèi)存空間;實(shí)例變量:實(shí)例變量屬于某個(gè)對(duì)象的屬性,必須創(chuàng)建了實(shí)例對(duì)象,其中的實(shí)例變量才會(huì)被分配空間,才能使用這個(gè)實(shí)例變量;實(shí)例變量位于堆區(qū)中,其生命周期取決于實(shí)例的生命周期。
例子:
public class VariantTest
{
public static int staticVar = 0;
public int instanceVar = 0;
public VariantTest()
{
staticVar++;
instanceVar++;
System.out.println(“staticVar = ”++staticVar “, instanceVar = ” ++instanceVar);
}
}
量[常量]-系統(tǒng)常量|程序常量
修飾符 |
類 |
成員方法 |
構(gòu)造方法 |
成員變量 |
局部變量 |
Abstract(抽象) |
√ |
√ |
× |
× |
× |
Static(靜態(tài)) |
× |
√ |
× |
√ |
× |
Public(公共) |
√ |
√ |
√ |
√ |
× |
Private(私有) |
× |
√ |
√ |
√ |
× |
Protected保護(hù)) |
× |
√ |
√ |
√ |
× |
Synchronized(同生) |
× |
√ |
× |
× |
× |
Final(固定) |
√ |
√ |
× |
√ |
√ |
訪問(wèn)控制符 |
訪問(wèn)級(jí)別 |
同類 |
同包 |
子類 |
不同包 |
public |
公開(kāi) |
√ |
√ |
√ |
√ |
Protected |
保護(hù) |
√ |
√ |
√ |
× |
無(wú) |
默認(rèn) |
√ |
√ |
× |
× |
private |
私有 |
√ |
× |
× |
× |
1.3數(shù)據(jù)類型,類型轉(zhuǎn)型,相等性測(cè)試
數(shù)據(jù)類型分類:基本數(shù)據(jù)類型和字符串類型、引用類型(內(nèi)存占用字節(jié)數(shù),取值范圍,默認(rèn)值)
基本數(shù)據(jù)類型(8個(gè)):整型:byte(1字節(jié))、short(2字節(jié))、int(4字節(jié))、long(8字節(jié)),浮點(diǎn)型:float(4字節(jié))、double(8字節(jié));Boolean(1位):ture、false;字符型:Char (2字節(jié))
定義:基本類型的值是一個(gè)數(shù)字,一個(gè)字符或一個(gè)布爾值,其內(nèi)容存在棧中,變量直接指向數(shù)值內(nèi)容;
基本數(shù)據(jù)類型包括byte、int、char、long、float、double、boolean和short。
例子:
public class SimpleTypes{
publicstatic void main( String args[] ){
byte b=0x55;
shorts=0x55ff;
inti=1000000;
longl=0xfffL;
char c='c';
floatf=0.23F;
doubled=0.7E-3;
booleanbool=true;
System.out.println("b= "+b);
System.out.println("s= "+s);
System.out.println("i= "+i);
System.out.println("c= "+c);
System.out.println("f= "+f);
System.out.println("d= "+d);
System.out.println("bool= "+bool);
}
}
編譯并運(yùn)行該程序,輸出結(jié)果為:
C:\>java SimpleTypes
b = 85
s = 22015
i = 1000000
l = 4095
c = c
f = 0.23
d = 0.0007
bool = true
轉(zhuǎn)義字符:
\n
|
回車(\u000a)
|
\t
|
水平制表符(\u0009)
|
\b
|
空格(\u0008)
|
\r
|
換行(\u000d)
|
\f
|
換頁(yè)(\u000c)
|
\'
|
單引號(hào)(\u0027)
|
\"
|
雙引號(hào)(\u0022)
|
\\
|
反斜杠(\u005c)
|
\ddd
|
三位八進(jìn)制
|
\udddd
|
四位十六進(jìn)制
|
字符串類型,是用String表示的類型,①直接賦值,如:Stringstr=”hello”(直接存儲(chǔ)在棧里,尋找具有hello的字符串,如果已經(jīng)有則直接指向hello,如果沒(méi)有過(guò)就開(kāi)辟一個(gè)hello空間);②用new創(chuàng)建字符串對(duì)象,如:String str=new String(” hello”)(每創(chuàng)建一個(gè)new對(duì)象,就在堆中開(kāi)辟一個(gè)對(duì)象空間,棧中的地址指向堆的內(nèi)容);
引用類型:類類型,接口類型,數(shù)組類型
定義:引用類型的值是指向內(nèi)存空間的引用,就是地址,變量引用(地址)存在棧中,而對(duì)象存在堆中。
引用數(shù)據(jù)類型包括:類,數(shù)組,接口
基本數(shù)據(jù)類型和引用類型的區(qū)別主要在于基本數(shù)據(jù)類型的量和內(nèi)容是分配在棧上的,而引用類型的量被分配在棧內(nèi)存里,而真正內(nèi)容是分配在堆上的,棧通過(guò)指針指向堆上的內(nèi)容。
實(shí)例:我們分析一下”==“和equals()的區(qū)別。
①定義兩個(gè)string對(duì)象(引用類型)
stringa="abc"; //a指向堆中一個(gè)對(duì)象的地址
string b="abc"; //b指向堆中另一個(gè)對(duì)象的地址
然后
if(a==b){system.out.println("a==b");}
else
{system.out.println("a!=b");}
程序輸出a!=b
原因:a和b的地址是不相同的,a==b比較的是兩個(gè)變量的地址,所以地址不相等;
②定義兩個(gè)基本類型
int a=4;
int b=4;
if(a==b){system.out.println("a==b");}
else
{system.out.println("a!=b");}
輸出:a==b
原因:==比較的是兩個(gè)變量的內(nèi)容
結(jié)論:不論是基本數(shù)據(jù)類型還是引用類型,他們都會(huì)先在棧中分配一塊內(nèi)存,對(duì)于基本類型來(lái)說(shuō),這塊區(qū)域包含的是基本類型的內(nèi)容;而對(duì)于對(duì)象類型來(lái)說(shuō),這塊區(qū)域包含的是指向真正內(nèi)容的指針,真正的內(nèi)容被手動(dòng)的分配在堆上
User user; .棧區(qū) 局部變量
UserDAOuserDao; .方法區(qū) 靜態(tài)成員變量
User[] users; .堆區(qū) 實(shí)例變量
類型轉(zhuǎn)型:自動(dòng)類型轉(zhuǎn)換和強(qiáng)制類型轉(zhuǎn)換
自動(dòng)類型轉(zhuǎn)換:由低精度類型向高精度數(shù)據(jù)類型的轉(zhuǎn)換,如:bytebt=5;int it=bt;
強(qiáng)制類型轉(zhuǎn)換:與自動(dòng)轉(zhuǎn)換相反,如:inti=16;byte bt=(byte)i;
相等性測(cè)試:==和equals()
1.4操作符(運(yùn)算符)
分類:算術(shù)運(yùn)算符,布爾運(yùn)算符,關(guān)系運(yùn)算符,位運(yùn)算符,賦值運(yùn)算符,條件運(yùn)算符,字符串運(yùn)算符,逗號(hào)運(yùn)算符,其他運(yùn)算符;
①算術(shù)運(yùn)算符:
單目:+ (取正) - (取負(fù)) ++ (自增1) - - (自減1),如:i=0,j=0; j=i++(i=0,j=1);j=++i(i=1,j=1)
雙目:+ - * / %(取余)
三目:a>b?true:false
說(shuō)明:當(dāng)a大于b的時(shí)候,為true(也就是冒號(hào)之前的值),否則為false;這整個(gè)運(yùn)算符包括一個(gè)關(guān)系運(yùn)算符(可以是“>”"<""!="等等),一個(gè)“?”,一個(gè)“:”,冒號(hào)前后需要有兩個(gè)表達(dá)式或者是值或者是對(duì)象。
、陉P(guān)系運(yùn)算:
= =(等于),!= (不等于),> (大于),< (小于), >= (大于等于) ,<= (小于等于)。
、畚贿\(yùn)算符:
位運(yùn)算符 與(&)、非(~)、或(|)、異或(^)
&:當(dāng)兩邊操作數(shù)的位同時(shí)為1時(shí),結(jié)果為1,否則為0。如1100&1010=1000
| :當(dāng)兩邊操作數(shù)的位有一邊為1時(shí),結(jié)果為1,否則為0。如1100|1010=1110
~:0變1,1變0 。如~1010=0101
^:兩邊的位不同時(shí),結(jié)果為1,否則為0.如1100^1010=0110
、苓壿嬤\(yùn)算符:
與(&&)、非(!)、或(||)
⑤賦值運(yùn)算符:
= += -= *= /= %= &= ^= |= <<= >>=
、奁渌
運(yùn)算符優(yōu)先級(jí)
按優(yōu)先級(jí)從高到低排列如下:[ ] ( ) ++ -- ! ~ instanceof * / % + - << >>>>> <> < = > \ == != &^& & || ? := op= 。(口決:算關(guān)位邏賦)。
注:instanceof:測(cè)試某個(gè)對(duì)象是否是指定類或其子類的實(shí)例,。是Java的一個(gè)二元操作符,Java的保留關(guān)鍵字;作用是測(cè)試它左邊的對(duì)象是否是它右邊的類的實(shí)例,返回boolean類型的數(shù)據(jù)?梢杂迷诶^承中的子類的實(shí)例是否為父類的實(shí)現(xiàn)。instanceof 一般情況下用在對(duì)象類型的強(qiáng)制轉(zhuǎn)換。如:if(myObjectinstanceofMyClass){MyClassanothermyObject=(MyClass)myObject;…}是判定myObject是否是MyClass的實(shí)例或是其子類的實(shí)例。
<<:左移,如:
>>:右移(帶符號(hào))
>>>:添零右移
沒(méi)有必要去記憶運(yùn)算符號(hào)的優(yōu)先級(jí)別,在編寫(xiě)程序時(shí)可盡量的使用括號(hào)來(lái)實(shí)現(xiàn)你想要的運(yùn)算次序,以免產(chǎn)生難以閱讀或含糊不清的計(jì)算順序.運(yùn)算符的結(jié)合性決定了并列相同級(jí)別的運(yùn)算符的先后順序,例如,加減的結(jié)合性是從左到右,8-5+3 相當(dāng)于(8-5)+3.邏輯否運(yùn)算符的結(jié)合性是右到左, x 相當(dāng)于!(!x).表3.4是Java所有運(yùn)算符的優(yōu)先級(jí)和結(jié)合性。
當(dāng)運(yùn)算符進(jìn)行數(shù)值運(yùn)算時(shí),結(jié)果類型默認(rèn)高精度者,如:longa=1.23456,float b=2.123, c=a+b,c為long型。
1.5表達(dá)式
指用運(yùn)算符連接起來(lái)的符合Java 規(guī)則的式子,如:c=a+b
1.6語(yǔ)句
賦值語(yǔ)句:
流程控制語(yǔ)句:
判斷語(yǔ)句(if三種語(yǔ)句,switch語(yǔ)句)
、 簡(jiǎn)單if條件語(yǔ)句,描述:當(dāng)表達(dá)式返回true 時(shí),執(zhí)行語(yǔ)句1(或語(yǔ)句塊);當(dāng)表達(dá)式返回false 時(shí),直接執(zhí)行下面的語(yǔ)句。如:if ( x>90 ) System.out.println("Good!");
② if…else…語(yǔ)句,描述:當(dāng)布爾表達(dá)式返回true 時(shí)執(zhí)行語(yǔ)句塊1,否則執(zhí)行語(yǔ)句塊2;如:if (x>60)
System.out.println("Pass!");
else
System.out.println("No pass!");
、 if…else if…語(yǔ)句,描述:多分支語(yǔ)句,如:
int score;
char grade;
score=Integer.parseInt(args[0]);
if (score>=90)
grade=’A’;
else if(score>=80)
grade=’B’;
else if (score>=70)
grade=’C’;
else if (score>=60)
grade=’D’;
else
grade=’F’;
System.out.println("Score="+score+" Grade="+grade);
、 switch語(yǔ)句:描述:適合于用某個(gè)值來(lái)檢測(cè)一個(gè)變量是否符合某個(gè)條件;
switch(條件表達(dá)式){
case 常量表達(dá)式1:
語(yǔ)句塊1;
break;
…
case 常量表達(dá)式n:
語(yǔ)句塊n;
break;
default:
語(yǔ)句塊n+1;
break;
如:int week=3;
Switch(week){
Case 1:
System.out.println(“星期一”);
Break;
Case 2:
System.out.println(“星期二”);
Break;
Case 3:
System.out.println(“星期三”);
Break;
…
default:
System.out.println(“請(qǐng)輸入有效數(shù)字!”);
}
循環(huán)語(yǔ)句(for語(yǔ)句,while語(yǔ)句,dowhile語(yǔ)句)
for語(yǔ)句:
for(初始化語(yǔ)句;循環(huán)條件;迭代語(yǔ)句){
語(yǔ)句序列(循環(huán)體)
}
如:計(jì)算1~100各數(shù)字的和
Intsum=0;
For(inti=0;i<=100;i++){
Sum=sum+i;
}
System.out.println(sum);
while語(yǔ)句:
while(條件表達(dá)式){
循環(huán)體
}
如:1~10相加
Int i=0;
Intsum=0;
While(i<=0){
Sum=sum+i;
i++;
}
System.out.println(sum);
Do{
循環(huán)體
}while(循環(huán)條件);
如:1~10相加
Int i=0;
Int sum
Do{
Sum=sum+i;
i=i+1;
}while(i<=10);
System.out.println(sum);
跳轉(zhuǎn)語(yǔ)句(break語(yǔ)句,continue語(yǔ)句)
break語(yǔ)句:在執(zhí)行循環(huán)時(shí)可以中斷循環(huán),強(qiáng)迫跳出循環(huán);一般用在循環(huán)語(yǔ)句中。
如:輸出1~100各數(shù)字的整數(shù)和
Int sum=0;
Int control=1;
While(true){
Sum+=control++;
If(control>100){
System.out.pritnln(sum);
Break;
}
}
continue語(yǔ)句:用于結(jié)束本次(指定條件)循環(huán)直接跳過(guò)執(zhí)行循環(huán)體的剩余部分語(yǔ)句。
如:輸出1~100中可以整除10的數(shù)
For(int i=1;i<100;i++){
If(i%10 !=0){
Continue;
}
System.out.println(i+”、”);
}
其他語(yǔ)句:foreach語(yǔ)句
關(guān)于循環(huán)綜合例子:
、佥敵龈袷交木啪懦朔ū恚
For(int i=0;i<=9;i++){
For(int j=0;j<=i;j++){
String str=j+”*”+i+”=”+j*i;
System.out.print(str+”\t”);
}
System.out.println();
}
、谳敵鲆粋(gè)棱形
Public static void main(String[] args){
For(int i=1;i<=7;i+=2){
For(int kong=7;kong>i-1;kong--){
System.out.print(“ “);
}
For(intxing=1;xing<=i;xing++){
System.out.print(“*“);
}
System.out.println();
}
For(intj=1;j<=5;j+=2){
For(int kong1=1;kong1
System.out.print(“ “);
}
For(intxing1=5;xing1>=j;xing1--){
System.out.print(“*“);
}
System.out.println();
}
}
、垭A乘:實(shí)現(xiàn)一個(gè)計(jì)算階乘的方法,公式:n!=n*(n-1)*(n-2)…*2*1
Public static void main(String[] args){
Int n=16;
Long result=1;
If((n<0)||(n>17)){
System.out.println(“n的取值范圍是0~17,大于17會(huì)超出long類型范圍”);
}
Else if(n==0){
System.out.println(“0的階乘等于1”);
}
Else{
For(int i=n;i>0;i--){
Result*=i;
}
System.out.println(n+“的階乘等于:”+result);
}
}
、芩?cái)?shù):素?cái)?shù)是大于1的整數(shù),并且其正因子只有1和它本身。下面:查找40個(gè)素?cái)?shù),然后分別在4行中輸出,每行顯示10個(gè)。
Public static void main(String[] args){
Final intNUMBER_FOR_PRIMES=40; //聲明素?cái)?shù)的數(shù)量
Final intNUMBER_FOR_EVERY_LINE=10;級(jí) //聲明每行輸出多少素?cái)?shù)
Int count=0; //素?cái)?shù)計(jì)數(shù)器
Int number=2; //用于判斷素?cái)?shù)的數(shù)字
While(count< NUMBER_FOR_PRIMES){
Boolean isPrime=true; //是否素?cái)?shù)的狀態(tài)變量
For(int i=2;i<=number/2;i++){
If(number%i==0){
isPrime=false;
break;
}
}
If(isPrime){ //如果是素?cái)?shù)
Count++; //累加素?cái)?shù)計(jì)數(shù)器
System.out.print (number+”\t”); //輸出素?cái)?shù),不換行
If(count% NUMBER_FOR_EVERY_LINE==0){ //如果已輸出10個(gè)素?cái)?shù)
System.out.println(); //換行
}
}
Number++; //自增用于判斷的數(shù)字
}
}
1.7代碼塊
在Java中使用“{}”括起來(lái)的代碼稱為代碼塊,根據(jù)代碼塊的定義位置及聲明的關(guān)鍵字不同,代碼塊可以分為以下四種:普通代碼塊、構(gòu)造塊、靜態(tài)塊、同步代碼塊
1、 普通代碼塊:直接在一個(gè)方法中出現(xiàn)的“{}”就稱為普通代碼塊。
public class CodeDemo01 { public static void main(String args[]) { //定義一個(gè)普通代碼塊 { //定義一個(gè)局部變量 int x =10 ; System.out.println("普通代碼塊中的x = " + x) ; } int x = 100 ; System.out.println("代碼塊之外的x = " + x ) ; } } |
2、 構(gòu)造塊:直接在類中定義的代碼塊稱為構(gòu)造塊。
可以看出構(gòu)造塊會(huì)重復(fù)調(diào)用多次,構(gòu)造塊會(huì)優(yōu)先于構(gòu)造方法執(zhí)行。
class Demo { //定義構(gòu)造快 { System.out.println("**************構(gòu)造塊*************") ; } //定義構(gòu)造方法 public Demo() { System.out.println("**************構(gòu)造方法*************") ; } } public class CodeDemo02 { public static void main(String args[]) { //實(shí)例化三個(gè)對(duì)象 new Demo() ; new Demo() ; new Demo() ; } } |
3、 靜態(tài)塊:使用static關(guān)鍵字聲明的代碼塊,稱為靜態(tài)塊,靜態(tài)塊的主要目的是用來(lái)為靜態(tài)屬性初始化。
靜態(tài)塊優(yōu)先于主方法執(zhí)行,靜態(tài)塊優(yōu)先于構(gòu)造塊執(zhí)行,而且執(zhí)行一次。
class Demo { //定義構(gòu)造快 { System.out.println("**************構(gòu)造塊*************") ; } //定義靜態(tài)代碼塊 static { System.out.println("**************類中靜態(tài)塊*************") ; } //定義構(gòu)造方法 public Demo() { System.out.println("**************構(gòu)造方法*************") ; } } public class CodeDemo03 { //在主類中定義的靜態(tài)代碼塊 static { System.out.println("**************主類中的靜態(tài)塊*************") ; } public static void main(String args[]) { //實(shí)例化三個(gè)對(duì)象 new Demo() ; new Demo() ; new Demo() ; } } |
思考:
要求在屏幕上打印輸出“HelloWorld!”,但是不能用主方法。
使用靜態(tài)塊代替主方法,并結(jié)束程序:
public class CodeDemo04 { static { System.out.println("Hello World !!!" ) ; System.exit(1) ; } } |
在靜態(tài)塊中加入系統(tǒng)退出后,以保證程序不再繼續(xù)搜索主方法,但是程序知識(shí)娛樂(lè)使用,本身沒(méi)有任何意義。
4、同步代碼塊
同步代碼塊主要出現(xiàn)在多線程中。
2.8文件結(jié)構(gòu)
package XXX;//一個(gè)包
import java.util;//可以有多個(gè)
class 類名
{
//略主要是方法和變量
}
2.9注釋(兩種方式)
/*
*文檔注釋
*/
//單行注釋
/* 多行注釋 */
快捷鍵:ctrl+/
【Java語(yǔ)言的基礎(chǔ)】相關(guān)文章:
java基礎(chǔ)語(yǔ)言有哪些09-12
Java語(yǔ)言編程基礎(chǔ)知識(shí)06-16
沒(méi)有英語(yǔ)基礎(chǔ)怎么學(xué)好java語(yǔ)言08-04
Java語(yǔ)言程序設(shè)計(jì)基礎(chǔ)篇10-23
java教程之Java編程基礎(chǔ)09-12
Java基礎(chǔ)知識(shí)精選09-07
Java語(yǔ)法基礎(chǔ)for語(yǔ)句練習(xí)09-21
Java基礎(chǔ)知識(shí)概述05-16