差不多扔下java1年多了,現在回來看看才明白什么叫一日千里,我還是想把以前丟下的東西找回來,所以看看資料.把筆記放在這里
float fl=3.5; //錯誤 因為3.5是double的 應該是:float fl=3.5f;
byte b = 3;
b = b - 1;
以上寫法錯誤 因為如果表達式中有int型數字,那么所有的byte ,shot,char的值都將被提升到int;同樣,long,float, double也是如此
System.out.println('a'+1); 結果是98
System.out.println(""+'a'+1); 結果是a1
static void drawTech(int x,int y)
{.........}
這個方法可以直接使用而不需要new,比如在main方法中寫drawTech(3,5);
System.out.println("2+5="+getAres(2,5));而不是
System.out.println("2+5=",getAres(2,5));
非法參數的檢查用return;直接返回
函數的重載就是在一個類中允許同時存在一個以上的同名函數,只要它們的參數個數或者類型不同即可
小數之間的除 結果會保留小數部分
整數之間的除 結果拋棄小數部分
-------------------------
int x=5,y;
int y=x/2;//結果是2
--------------------------
int x=5,y;
float f=x/2;//結果是2.0
----------------------------
int x=5,y;
float f=(float)x/2;//結果是2.5 這里發生了表達式數據類型提升
------------------------------------------------------------
int x=3510;x=x*1000/1000; 結果是3000
----------------------------------------
int x=5,y;
y = x%2;//結果是 1
--------------------------------
int x=5,y;
y = -x%2;//結果是 -1
-------------------------------
int x=5,y;
y = x%-2;//結果是 1 表示取摸時 摸數如果是負數 那么負號忽不計算
--------------------------------------
安排房間題目,共有x個學生,每個房間住6人,用一個公式計算他們要住的房間數?
解答:有些人是x/6+1; 顯然在x為30的時候就不對了,正解是:(x+5)/6;
這種算法還可以用在查看留言版的分頁顯示上,x是總留言數,6是每頁顯示數,結果就是總共多少頁面
-----------------------------------------------------------------------------------
假設要讓x的值在0到9之間循環變化,寫出代碼:
int x=0;
while(true)
{
x=(x+1)%10;
}
這個可以用在循環10副圖的顯示上
-------------------------------------
x = 0x80000000;
y = x>>1;//有符號移位最高位補的是原來的最高位,原來是1就補1,是0補0
System.out.println(Integer.toHexString(y));//將int的y轉化為16進制
y = x>>>1;//無符號移無論原來是1還是0都補0
System.out.println(Integer.toHexString(y));//將int的y轉化為16進制
-----------------------------------------------------------------------
byte,short,char,int,long都可以移位運算
低于int的操作數先自動轉int再移
int型移 最多移31位,因為int最大是32位的 系統將操作數對32取模,得到的結果才是真正的依的位數,a>>33 和a>>1結果是一樣的
long型是對64取模
x>>1和x/2結果一樣 x<<2和x*4結果一樣
-----------------------------------------------------
從鍵盤讀取輸入字符的整數值System.in.read();
以下代碼為不斷讀入鍵盤值,如果是q,那么退出,如果不是q,打印字符
try
{
x=System.in.read();
}
catch(Exception e){}
while(x!='q')
{
System.out.println((char)x);
try{
x=System.in.read();
}
catch(Exceotion e){}
}
---------------------------------
聲明數組可以:一開始就對數組賦值的叫靜態數組
int a[]={1,2,3};
也可以
int []a=new int[]{1,2,3}
如果沒有賦值,比如
int []a=new int[];
打印出來默認的全為0
如果這么定義一個數組int [] y;然后就拿來使用那么是編譯通不過的,因為沒有初始化,一個數組沒有初始化,也沒有指向堆中的任何地方,所以也沒有默認值
------------------------
int a[4];//聲明數組時 不能指定長度,編譯將出錯。和c不一樣
---------------------------------------------------------
int[] x=new int[100];
x= null;
x[1]=3;
這樣的代碼編譯通過,運行出錯:空指針錯誤。 因為x數組指向的是空,所以就沒有所謂的第一個元素第二個元素 這點需要注意
同理,當我們調用一個返回的對象的功能時,如果不對這個對象進行檢查,而這個對象是空,那么就可能是這種空指針異常
-----------------------------------------------------------------------------------------------------
遍歷二維數組
int [][] xx = new int[2][3];
for(int i=0;i<xx.length;i++)
{
for(int j=0;j<xx[i].length;j++)
{
System.out.println(xx[i][j]);
}
}
-----------------------------------------
int []a=new int[]{9,4,3,8};
Arrays.sort(a);//從小到大排序
2下結束