Java筆記(二)

來源:互聯網
上載者:User

標籤:ssi   規則   算術運算子   查看   運算   定義   ring   script   系統   

資料(Data)

是系統的核心,我們編程的目的就是為了操作資料(增,刪,改,查)

在代碼中如何定義和儲存資料呢?需要通過變數或者常量以及資料類型

注意:Java是一種強型別的語言,也就是說任何資料都需要有類型.
JavaScript,弱類型的程式設計語言,定義變數時無需聲明資料類型

Java語言分為基本類型和物件類型兩大類資料類型(無數種)
1)基本類型(8種):
名稱 容量範圍預設值
byte 位元組型佔1位元組=8bit-128~1270
short 短整型佔2位元組=16bit-32768~327670
int 整型佔4位元組=32bit-2147483648~21474836470
long 長整型佔8位元組=64bit-2^63 ~ 2^63 - 10
float 單精確度浮點數佔4位元組=32bit-3.4E+38 ~ 3.4E+380.0
double 雙精確度浮點數佔8位元組=64bit-1.797E+308 ~ 1.797E+3080.0
char 字元型佔2位元組=16bit‘a‘ , ‘B‘, ‘您‘\u0000
boolean 布爾類型佔1位元組=8bittrue/falsefalse

注:1.JAVA中所有的數字都是帶符號的
2.字元型和字串是不同的,字元型用單引號,字串用雙引號
char c = ‘您‘;
String s = "好好學習,天天向上!"
3.java中,你寫一個整數,預設是int類型的,寫一個小數,預設是double類型的.
float f = 3.4;//編譯錯誤,3.4預設是double類型的,不能賦值給float類型的變數

4.cmd命令列中查看中文字的unicode編碼的方法
a.開啟命令列
b.輸入native2ascii斷行符號
c.輸入想查詢的中文字斷行符號即可得到對應的unicode

ctrl + c 關閉當前轉換進程


2)物件類型
a. 內建物件類型(API)
Scanner,Math,Random,String...

b. 自訂物件類型
我們編程時寫過的所有類都是自訂物件類型
-------------------------------------------------------------------
特殊符號:
\t定位字元 表示隔開一個tab的距離
\n換行 到下一行的起始位置
\r斷行符號 到當前行的起始位置
\b 退格 相當於鍵盤上的BackSpace
\\ 反斜線
\"雙引號
\‘單引號
-------------------------------------------------------------------

變數

文法
資料類型 變數名 [= 給變數的初始值];

注:
變數名和類名一樣,都是由數字,字母,_,$組成並且不能是數字開頭
變數名可以是中文漢字,但是不推薦,因為可能出現亂碼問題
變數名盡量首字母小寫,以後每個單字首大寫(常量除外)
如: int num = 1;
int inputInt = sc.nextInt();

|.可以在聲明的時候直接初始化(第一次給變數賦值)
如:int i = 100;
double d = 3.14;
String str = "你好!";

||.先聲明變數,在使用前,初始化
如:int i;
.....
i = 100;

字面量:就是指代資料本身,它也屬於變數
"你好!",‘A‘,3.14,100

注意:所有程式都是由變數所組成的!


給變數賦值的方式:
a.字面量賦值
int i = 3;

b.方法賦值
public int add(int i,int j){
return i + j;
}

int i = add(3,4);

c.運算式賦值
運算式:由變數和運算子組成的合法的語句
int i = sc.nextInt();

int a = 1, b = 2;
int i = a + b;

----------------------------------------------------------
常量

在變數的基礎上加一個關鍵字 -- final

常量一定要初始化,它的值是不能改變的

如:
final int ROW_EACH_PAGE = 10;//定義了一個常量

常量的命名規則:使用大寫字母,並且中間用底線隔開

注意:常量比字面量攜帶更多的資訊,提高了代碼的可讀性
----------------------------------------------------------

資料類型轉換:
1.自動類型轉換(隱式類型轉換)
由精度小的資料類型可以自動轉換成精度大的資料類型

如:byte -> short -> int -> long
char -> int
boolean -> int //error

2.強制類型轉換
由精度大的資料類型往精度小的資料類型轉換時,可能損失精度,
編譯器會報錯,必須採用強制轉換
如:
1)在所需轉換的數值前面加(類型)
注:這裡的類型,可以是基本類型,也可以是物件類型
int i = 220900;
char c = (char)i;

float f = (float)3.14;

2)只有long,double,float可以這樣轉換
在所需轉換的數值後面加L/l,D/d,F/f
float f = 3.14F;

注意:
在JAVA中,兩種資料類型進行運算時,結果都是偏向資料類型
更大的那一方

----------------------------------------------------------

1byte = 8bit
1K = 1024byte
1MB = 1024K
1GB = 1024MB
1TB = 1024GB
1PB = 1024TB
1EB = 1024PB
1ZB = 1024EB
1YB = 1024ZB
1BB = 1024YB
1NB = 1024BB
1DB = 1024NB

注:手機流量是以1000為計算界限的
----------------------------------------------------------

進位
二進位:只有0和1所組成,每遇到2進1

二進位十進位
01011*2^2 + 0*2^1 + 1*2^0 = 5
10101*2^3 + 1*2^1 = 10;
111115

二進位轉十進位
先從右往左標記,從0開始,然後累加相應位置數字乘以進位數的標記次方

十進位轉二進位
連續除以2,然後倒取餘數

小練習:
39 --> 0010 0111

110010 --> 50
-------------------------------------------------------------

0011 1000 --->56
0001 1100 ---> 28
0000 1110 ---> 14
0000 0111 ---> 7

位移運算 -- 所有運算中效率最高的
二進位中,向右移動一位,相當於除以2,向左移動一位,相當於乘以2


八進位:由0~7組成,每逢8進1
0320*8^2 + 3*8^1 + 2*8^0 = 26

十六進位:由0~9和A~F組成,以0x開頭
int i = 0x0029;
2*16^1 + 9*16^0 = 41

小練習:
求出0x0419的二進位?
0x0419
求十進位:4*16^2 + 1*16^1 + 9*16^0 = 1049
求二進位:0100 0001 1001


系統內建的轉換方法(十進位轉換成相應字串):
toBinaryString(int i)轉換二進位字串表示

toHexString(int i)轉換十六進位字串表示

toOctalString(int i)轉換八進位字串表示
------------------------------------------------------------------

運算子

|.算術運算子
+1.數學運算2.字串的串連
-減法(負號)
*乘法
/除法100/3 = 33100/3.0 = 33.33333333
%取餘100%3 = 1

=表示賦值 int i = 3; 把3賦值給int類型的變數i
==表示等於 傳回型別:boolean

+=-=*=/=%=
如:
b = b + 1; --> b += 1;//後面這種寫法可以避免類型轉換問題

++自增
--自減
前++表示++寫在變數的前面,運算式和變數的值本身都加1(先自增,後賦值)
後++表示++寫在變數的後面,運算式的值不變,變數加1(先賦值,後自增)

位移運算:效能是最高的
<<帶符號左移位
>>帶符號右移位
>>>不帶符號右移位

注意:沒有不帶符號左移位(<<<)

<<=>>=>>>=

面試題:
請你用最快並且效能最高的方式得到4的3次方? 4<<3


算術運算子是一種二元運算子,需要兩個參數來參與
對算術運算子來說,運算元只能是數字類型(整型,浮點型)
特殊例外:字串可以用+運算(拼接)

低精度和高精度做運算時,結果是高精度
相同精度資料進行運算,結果是它本身的資料類型


||.比較子(返回布爾類型)
<小於
>大於
<=小於等於
>=大於等於
!=不等於

|||.邏輯運算子

&& 短路邏輯與同真為真,同假為假,只要有一個為假,結果為假

||邏輯或同真為真,同假為假,只要有一個為真,結果為真

!邏輯非表示取反

如:
boolean b1 = true;
boolean b2 = false;
boolean b = b1 && b2;//false
b = b1 || b2;//true
b = !b1;//false

注意:
& 1.非短路的邏輯與(一般不用)
2.按位與

| 1.非短路的邏輯或(一般不用)
2.按位或

短路型和非短路型邏輯運算子的區別:

短路型運算子,如果運算子左邊的結果可以決定整個式子的結果,
那麼右邊部分就不會執行了
所以,我們在編寫代碼的時候,需要考慮一下,把哪個條件放在運
算符前面
用邏輯與時,把兩個條件中可能為false幾率更大的一個放前面
用邏輯或時,把兩個條件中可能為true幾率更大的一個放前面
這樣可以提升整個軟體的效能.


||||.按位元運算符
&按位與(非短路邏輯與)同0為0,同1為1,不同為0
|按位或(非短路邏輯或)同0為0,同1為1,不同為1
^按位異或相同為0,不同為1
公式:
一個數連續異或同一個數兩次,結果是它本身
5 ^ 7 ^ 7 = 5

如:
5的二進位:0101
7的二進位:0111

0101
& 0111
------
0101 -- 5 & 7 = 5

0101
| 0111
------
0111-- 5 | 7 = 7

0101
^ 0111
------
0010 -- 5 ^ 7 = 2
^ 0111
------
0101

~按位取反
0變1,1變0

負數,在電腦中是以補碼的形式儲存的

補碼 = 原碼取反 + 1
~x = -(x + 1)

負數的二進位如何得到?
2的二進位00000000 00000000 00000000 00000010
按位取反11111111 11111111 11111111 11111101
再+111111111 11111111 11111111 11111110
-2的二進位11111111 11111111 11111111 11111110

-9的二進位:
00000000 00000000 00000000 00001001
11111111 11111111 11111111 11110110
11111111 11111111 11111111 11110111

~9 = -10
11111111 11111111 11111111 11110110

00000000 00000000 00000000 00001010
11111111 11111111 11111111 11110110

--------------------------------------------------------------

三目運算子 ? :
作用:條件判斷

condition ? expression_1 : expression_2;
條件?運算式1:運算式2;

當條件成立時,執行運算式1,當條件不成立是,執行運算式2

相當於
if(條件){
//運算式1;
}else{
//運算式2;
}

Java筆記(二)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.