天天看點

黑馬程式員——Java基礎--常量變量運算符

-----------android教育訓練、java教育訓練、java學習型技術部落格、期待與您交流!------------

一、常量

(一)常量概述:在程式執行的過程中其值不可以發生改變

(二)Java中常量分類:

1.字面值常量

2.自定義常量

(1)字面值常量的分類:

字元串常量:用雙引号括起來的内容。例:"hello"

整數常量:所有整數。例:12,23

小數常量:所有小數。例:12.34,56.78

字元常量:用單引号括起來的内容。例:'a','A'

布爾常量:較為特有,隻有true和false

空常量:null

(2)字面值常量輸出的簡單實作代碼:

class ConstantDemo{

public static void main(String[] args){

//字元串

System.out.println("常量");

System.out.println("constant");

//整數

System.out.println("123");

//小數

System.out.println("1.23");

//字元

System.out.println(" ");

System.out.println("a");

System.out.println("B");

//布爾

System.out.println("true");

System.out.println("false");

}

}

運作結果如下:

黑馬程式員——Java基礎--常量變量運算符

(三)Java針對整數常量提供了4種表現形式:

1.二進制

2.八進制

3.十進制

4.十六進制

(1)進制概述

進制:就是進位制,是人們規定的一種進位方法。 對于任何一種進制--X進制,就表示某一位置上的數運算時是逢X進一位。二進制就是逢二進一,八進制是逢八進一,十進制是逢十進一,十六進制是逢十六進一。

(2)不同進制的資料組成

①二進制:由0,1組成。以0b開頭

②八進制:由0,1,…7組成。以0開頭

③十進制:由0,1,…9組成。整數預設是十進制的

④十六進制:由0,1,…9,a,b,c,d,e,f(大小寫均可)。以0x開頭

(3)進制的轉換

①x進制轉到10進制:結果=系數*基數^權值 之和

系數:數位上的那個值

基數:進制就是那個基數 

權值:就是那個基數上次幂,從右向左,從0開始數.

舉例:

二進制 0b100

基數為2

結果 =  1*2^2 + 0*2^1 + 0*2^0 

 =  4     +  0   +  0

 =  4

    八進制 0100

基數8 

結果  = 1*8^2 + 0 + 0 = 64

    十六進制 0x100

基數16

結果  = 1*16^2 + 0 + 0 = 256

②10進制轉到x進制:除基數(x),直到商為0,餘數自下而上反轉

③十進制和二進制的快速轉換:

8421碼:每一位二值代碼的1都是代表一個固定數值,把每一位的1代表的十進制數加起來,得到的結果就是它所代表的十進制數位。

舉例:

1.1010100轉成十進制

二進制:1 0 1 0 1 0 0

64 32 16 8 4 2 1

十進制:結果=64*1+32*0+16*1+0*8+4*1+2*0+1*0=84

2.100轉成二進制

十進制: 128 64 32 16 8 4 2 1

二進制:  0  1  1  0 0 1 0 0

是以結果為:0110 0100

④二進制和八進制,十六進制如何轉換

方式1:以十進制做為橋梁

方式二:通過八進制、十六進制的由來的方式--分組轉換

二進制到八進制--3位組合(位數不夠,左邊補0)

舉例:

二進制:001 011 001

八進制:1   3  1 

二進制到十六進制--4位組合(位數不夠,左邊補0)

二進制:  0101 1001

十六進制:  5   9

(4)不同進制的簡單代碼實作

class ConstantDemo1{

public static void main(String[] args){

//二進制

System.out.println(0b100);

//八進制

System.out.println(0100);

//十進制

System.out.println(100);

//十六進制

System.out.println(0x100);

}

}

運作結果:

黑馬程式員——Java基礎--常量變量運算符

(四)有符号資料表示法

在計算機内,有符号數有3種表示法:原碼、反碼和補碼。所有資料的運算都是采用補碼進行的。

原碼:就是二進制定點表示法,即最高位為符号位,“0”表示正,“1”表示負,其餘位表示數值的大小。

反碼:正數的反碼與其原碼相同;負數的反碼是對其原碼逐位取反,但符号位除外。

補碼:正數的補碼與其原碼相同;負數的補碼是在其反碼的末位加1

舉例:已知某數X的原碼為1100 1110B,試求X的補碼和反碼

符号位 數值位

原碼:1 1 0 0  1 1 1 0

反碼:1 0 1 1  0 0 0 1

補碼:1 0 1 1  0 0 1 0

二、變量

(一)變量概述:在程式執行的過程中,在某個範圍内其值可以發生改變的量。

(二)變量定義格式:資料類型 變量名=初始化值;

(三)資料類型分類

1.基本資料類型

2.引用資料類型

(1)基本資料類型--四類八種 

①整數類型(byte, short, int, long)

整數類型 占用存儲空間 表數範圍
byte 1位元組 -128~127
short 2位元組 -2^15~2^15-1
int 4位元組 -2^31~2^31-1
long 8位元組 -2^63~2^63-1
②浮點類型(float, double)
浮點類型 占用存儲空間 表數範圍
float 4位元組 -3.403E38~3.403E38
double 8位元組 -1.798E308~1.798E308

③字元型(char):占用2個位元組的空間,範圍為:0~65535

④布爾型(boolean):隻用true和false

(2)使用變量注意事項:

①作用域:變量定義在哪一級大括号中,哪個大括号的範圍就是這個變量的作用域。相同的作用域中不能定義兩個同名變量。

②初始化值:沒有初始化值不能直接使用。

③在一行上建議隻定義一個變量,可以定義多個,但是不建議。

④在定義變量的時候,虛拟機預設接收的整數是int類型,如果你想指派long類型的數,需要在數值後面加 l 或者 L。

⑤在定義變量的時候,虛拟機預設接收的浮點數是double類型,如果你想指派float類型的數,需要在數值後面加 f 或者 F。

⑥boolean類型不能轉換為其他的資料類型。

⑦預設轉換:

byte,short,char—int—long—float—double

byte,short,char互相之間不轉換,他們參與運算首先轉換為int類型

⑧強制轉換:資料類型 變量名=(目标類型)(被轉換的資料);

(四)不同資料類型的變量定義的代碼示範

class VarDemo1{

public static void main(String[] args){

//整數

//byte

byte b=100;

//short

short s=1000;

//int

int i=10000;

long l=1000000L;//記得加L或l

System.out.println(b);

System.out.println(s);

System.out.println(i);

System.out.println(l);

//浮點型

//float

float f=123.45f;//記得加F或f

//double

double d=123.45;

System.out.println(f);

System.out.println(d);

//char

char c='a';

char c1='珍';

//注意:字元的個數隻能為一個,不能寫成'aa'或者'珍珍'

System.out.println(c);

System.out.println(c1);

//boolean

boolean bl=true;

boolean bl1=false;

System.out.println(bl);

System.out.println(bl1);

}

}

運作結果:

黑馬程式員——Java基礎--常量變量運算符

(五)關于強制轉換的代碼示範

class VarSumDemo{

public static void main(String[] args){

//定義變量

int a=3;

byte b=4;

int c=a+b;

byte sum=(byte)(a+b);//可行,隐含了可能損失精度

//byte c=a+b;// 錯誤: 可能損失精度,a與b在運算時,b自動提升為byte

System.out.println("c="+c);

System.out.println("sum="+sum);

}

}

運作結果:

黑馬程式員——Java基礎--常量變量運算符

三、運算符

(一)算術運算符

1.常見的算術運算符:+,-,*,/,%,++,--

(1)+的作用:

加法

正數

字元串連接配接符

(2)++和--的使用規則:

++和--在前面時,先自增,再運算。

++和--在後面時,先運算,後自增。

注意:整數做運算,結果還是整數

(3)基本的算術運算符的代碼示範

class OperatorDemo{

public static void main(String[] args){

//基本算術運算符

System.out.println(4+3);

System.out.println(4-3);

System.out.println(4*3);

System.out.println(4/3);

System.out.println(4/3.0);

System.out.println(5%3);   //取的是餘數 

}

}

運作結果:

黑馬程式員——Java基礎--常量變量運算符

(4)自增與自減的代碼實作

class OperatorDemo2{

public static void main(String[] args){

int x =3;

int y =4;

int c = x++;

int d = y--;

System.out.println("c="+c);

System.out.println("d="+d);

System.out.println("x="+x);

System.out.println("y="+y);

System.out.println("----------------------");

int i =3;

int j =4;

int m = ++i;

int n = --j;

System.out.println("m="+m);

System.out.println("n="+n);

System.out.println("i="+i);

System.out.println("j="+j);

}

}

運算結果:

黑馬程式員——Java基礎--常量變量運算符

(二)指派運算符

1.常見的指派運算符:=,+=,-=,/=,*=,%=

基本的指派運算符:=

作用:把右邊指派給左邊

擴充的指派運算符:+=,-=,/=,*=,%=

作用:左邊跟右邊做運算,再指派給左邊

注意:擴充的指派運算符隐含了強制轉換。

(三)關系運算符

1.常見的關系運算符:>,<,==,!=,<=,>=,instanceof(檢查是否是類的對象)

注意1:關系運算符的結果都是boolean型,也就是要麼是true,要麼是false。

注意2:比較運算符“==”不能誤寫成“=”

(四)邏輯運算符

概述:邏輯運算符用于連接配接布爾型表達式,在Java中不可以寫成3<x<6,應該寫成x>3 & x<6。

1. 常見的邏輯運算符:&(與),|(或),^(異或),! (非),&&(短路),||(短路)

2. &與&&差別:

單&時,左邊無論真假,右邊都進行運算

雙&時,如果左邊為真,右邊參與運算,如果左邊為假,那麼右邊不參與運算

3. |和||的差別:

單|時,左邊無論真假,右邊都進行運算

雙|時,如果左邊為假,右邊參與運算,如果左邊為真,那麼右邊不參與運算

4. 異或( ^ )與或( | )的不同之處是:當左右都為true時,結果為false。

(五)位運算符

1. 概述:位運算是直接對二進制進行運算。

運算符 運算 範例
<< 左移 3 << 2 = 12 --> 3*2*2=12
>> 右移 3 >> 1 = 1  --> 3/2=1
>>> 無符号右移 3 >>> 1 = 1 --> 3/2=1
& 與運算 6 & 3 = 2
| 或運算 6 | 3 = 7
^ 異或運算 6 ^ 3 = 5
~ 反碼 ~6 = -7
2. 位運算的細節:
<< 空位補0,被移除的高位丢棄;
>>

被移位的二進制最高位是0,右移後,空缺位補0;

最高位是1,最高位補1。

>>> 被移位二進制最高位無論是0或者是1,空缺位都用0補。
&

任何二進制位和0進行&運算,結果是0;

和1進行&運算結果是原值。

|

任何二進制位和0進行 | 運算,結果是原值;

和1進行 | 運算結果是1。

^

任何相同二進制位進行 ^ 運算,結果是0;

不相同二進制位 ^ 運算結果是1。

舉例:

0000 0011

& 0000 0100

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

0000 0000

0000 0011

| 0000 0100

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

0000 0111

0000 0011

^   0000 0100

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

0000 0111

記得:

&:有0則0

|:有1則1

^:相同為0,不同為1

3. 位運算的簡單代碼實作:

class OperatorDemoPlace{

public static void main(String[] args){

int x=3;

int y=4;

System.out.println(x&y);

System.out.println(x|y);

System.out.println(x^y);

System.out.println(~x);

}

}

運作結果:

黑馬程式員——Java基礎--常量變量運算符

4. 用^實作兩個整數變量的交換

class OperatorDemoPlace1{

public static void main(String[] args){

int a=5;

int b=6;

a=a^b;

b=a^b;

a=a^b;

System.out.println("a="+a);

System.out.println("b="+b);

}

}

運作結果:

黑馬程式員——Java基礎--常量變量運算符

(六)三目運算符

格式:(關系表達式)?表達式1:表達式2;

如果條件為true,運算後的結果是表達式1;

如果條件為false,運算後的結果是表達式2;

用三目運算符獲得兩個數中的大數的代碼:

class ComepareDemo{

public static void main(String[] args){

int x=30;

int y=20;

int z=(x>y)?x:y;

System.out.println(z);

}

}

運作結果:

黑馬程式員——Java基礎--常量變量運算符

用三目運算符比較兩個數是否相等,并輸出結果的代碼:

class JudgeDemo{

public static void main(String[] args){

int x=30;

int y=20;

//boolean z=(x==y)?true:false;

String s=(x==y)?"相等":"不相等";

System.out.println(x+"與"+y+s);

}

}

運作結果:

黑馬程式員——Java基礎--常量變量運算符
-----------android教育訓練、java教育訓練、java學習型技術部落格、期待與您交流!------------