java中常用關鍵字:
與數據類型相關(10)
與流程控制相關(13)
if: 表示條件判斷,一般用法if(關系表達式),后跟else或{……}
else: 條件轉折,如if (關系表達式){語句塊1}else{語句塊2},如果關系表達式的值為true,則執行語句塊1,否則執行語句塊2.
do……while……:do和while一般一起使用,用于表示循環語句。do{……}while(關系表達式)……;當關系表達式的值為true是繼續循環。
for:用于表示循環,for循環是最常使用的循環,格式for(表達式a; 表達式b; 表達式c)括號里面的書通常用于控制循環的次數,一般會用一個int類型的變量類計數,如(int i=0; i<10; i++)表達式a用于流程控制的開始值,表達式b表示循環終止條件,表達式c用于計數。
switch(條件a)case……:switch和case合起來用于表示條件分支流程。如:
1
2
3
4
5
6
7
|
while ( int c) { case 1 : {語句塊 1 } case 2 : {語句塊 2 } ……?????? …… case n: {語句塊n} default :exit( 0 ); } |
如果c為1,則執行語句塊1;如果c為2,則執行語句塊2;以此類推,如果c為n,則執行語句塊n。default表示除case以外出現的情況。
default:在switch……case……分支語句可知,default是在所有case條件下都不成立時使用。用于包表示s“rc”文件夾下的當前包;如果用于類,表示只可被本文件內的其它類訪問。
break:用于結束本層循環,或跳出某層循環。
continue:用于跳出本次循環,而break跳出本層循環。break和continue可以實現類似于c\c++中goto語句的用法:
label0:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
{ for ( int k = 0 ; k < 10 ; k++) { .......... label1: for ( int j = 0 ; j < 10 ; j++) { ................ break label0; //跳轉至label0 } ........... label2: for ( int kk = 0 ; kk < 10 ; kk++) { .............. break label0; //跳至label2 } } |
return:返回一個值,通常用于函數中,返回一個具有特定類型的值。如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
public int fuction() { int a; …… return a; //返回int型的值 } try …… catch …… finally ……:用于異常處理,使用形式如: try { …… } catch (類型b){ …… } finally { …… } |
try{……}中放置可能會發生異常的的語句塊,catch(){……}用于抓住異常,{}定義當出現異常時的處理方法。finally{……}表示不管異常是否發生,都得進行finally{}中的處理。
與修飾符相關(12)
不同訪問修飾符的訪問權限
范圍
|
本類
|
同軟件包
|
不同包中子類
|
不同包且無繼承
|
作用(含義)
|
public
|
可以
|
可以
|
可以
|
可以
|
公有的
|
protect
|
可以
|
可以
|
可以
|
|
受保護的
|
default(無權限修飾符)
|
可以
|
可以
|
|
|
當前的
|
private
|
可以
|
|
|
|
私有的
|
如:
一個".java"后綴名的文件里面只能一個public型的class類。如com.bjpowernode包下有helloworld.java 文件,該文件下有如下代碼:
1
2
3
4
5
6
|
package com.bjpowernode; public class helloworld { public void show() { system.out.println( "helloworld!" ); } } |
在default包下有如下代碼:
1
2
3
4
5
6
7
|
import com.bjpowernode.*; //引入所需要的包里的所有類 public class test { public static void main(string args[]) { helloworld h = new helloworld(); h.show(); } } |
此時運行正常,結果:helloworld!
如果把public class helloworld改成privateclass helloworld則會運行錯誤,因為private是私有的不能被其他包內的對象所引用。
final:(類似于c++中的const),用法如下:
a,final的變量的值不能被改變;
b,final的方法不能被重寫;
c,final的類不能被繼承。
void:空類型,用于函數前表示空返回值。
static:可用于定義靜態成員變量或方法
strictfp:意思是fp-strict,也就是說精確浮點的意思。在java虛擬機進行浮點運算時,如果沒有指定strictfp關鍵字時,java的編譯器以及運行環境在對浮點運算的表達式是采取一種近似于我行我素的行為來完成這些操作,以致于得到的結果往往無法令你滿意。而一旦使用了strictfp來聲明一個類、接口或者方法時,那么所聲明的范圍內java的編譯器以及運行環境會完全依照浮點規范ieee-754來執行。因此如果你想讓你的浮點運算更加精確,而且不會因為不同的硬件平臺所執行的結果不一致的話,那就請用關鍵字strictfp。
你可以將一個類、接口以及方法聲明為strictfp,但是不允許對接口中的方法以及構造函數聲明strictfp關鍵字,例如下面的代碼:
1. 合法的使用關鍵字strictfp
1
2
3
4
|
strictfp interface a {} public strictfp class fpdemo1 { strictfp void f() {} } |
2. 錯誤的使用方法
1
2
3
4
5
6
|
interface a { strictfp void f(); } public class fpdemo2 { strictfp fpdemo2() {} } |
一旦使用了關鍵字strictfp來聲明某個類、接口或者方法時,那么在這個關鍵字所聲明的范圍內所有浮點運算都是精確的,符合ieee-754規范的。例如一個類被聲明為strictfp,那么該類中所有的方法都是strictfp的。
abstract:抽象的意思,可以用定義抽象類,抽象函數。抽象類的用法規則如下:
a,用abstract關鍵字來修飾一個類時,這個類叫做抽象類;用abstract來修飾一個方法時,這個方法叫做抽象方法;
b,含有抽象方法的類必須被聲明為抽象類,抽象類必須被繼承,抽象方法必須被重寫;
c,抽象類不能被實例化;
d,抽象方法只需聲明,而不需實現。
transient: java語言的關鍵字,用來表示一個域不是該對象串行化的一部分。當一個對象被串行化的時候,transient型變量的值不包括在串行化的表示中,然而非transient型的變量是被包括進去的。
使用對象:字段
介紹:字段不是對象持久的一部分,不應該字段和對象一起串起。
synchronized:鎖定當前對象,在執行當前這個對象時不應許其他線程打斷插入。使用的方式有:
這是我在暑假學習做的筆記
(1),
1
2
3
4
5
6
7
8
9
10
11
12
13
|
class timer { private static int num = 0 ; public synchronized void add(string name) { //執行這個方法的過程中鎖定當前對象。 num ++; try { thread.sleep( 1 ); } catch ( interruptedexception e) { return ; } system.out.println(name + ",你是第" + num + "使用timer的線程。" ); } } |
(2),
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
class timer { private static int num = 0 ; public void add(string name) { synchronized ( this ) { //鎖定大括號這個區域的代碼段 num ++; try { thread.sleep( 1 ); } catch ( interruptedexception e) { return ; } system.out.println(name + ",你是第" + num + "使用timer的線程。" ); } } } |
volatile:volatile變量一個時間只有一個線程可以訪問。 保證線程安全。
可以被寫入 volatile 變量的這些有效值獨立于任何程序的狀態,包括變量的當前狀態。
所以,volatile 變量是一種非常簡單但同時又非常脆弱的同步機制,它在某些情況下將提供優于鎖的性能和伸縮性。
native:是用作java 和其他語言(如c++)進行協作時用的也就是native 后的函數的實現不是用java寫的, native的意思就是通知操作系統,這個函數你必須給我實現,因為我要使用。所以native關鍵字的函數都是操作系統實現的, java只能調用。
與動作相關(10)
package:打包,把java程序寫在一個包中。
import:引入報名,用法:
a,寫全包名:jsxt.java140.cat c = new com.bjsxt.java140.cat
a,引入一個包中的具體某個對象:xt.java140.cat;
b,引入一個包中的所有象:import com.bjsxt.java140.cat.*;
throw:拋出用戶自己定義的異常
throws:拋出系統異常
extends:繼承(類繼承類,或接口繼承接口)
implements:實現,通過類來實現接口
this:是指向該對象自身的標示符
super:調用基類的構造函數
instanceof:判斷某個對象是否為自己所要的對象
new:用于新建一個對象,即類的實例化
其他(5)
true:表示boolean類型的真值
false:表示boolean類型的假值,即不成立的情況
null:表示空值,如果是對象,則表示此對象為空,如果是數據類型,在表示相應數據類型的默認值,如int的默認值為0。
goto:c\c++中實現無條件轉向語句,為了結構化程序設計java中現在一般不用。
const:和const一樣,在java中,const是作為保留字以備擴充。可以用final替換const,一般c++中用const,java中用final。