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