-----------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針對整數常量提供了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);
}
}
運作結果:
(四)有符号資料表示法
在計算機内,有符号數有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)
②浮點類型(float, double)
整數類型 占用存儲空間 表數範圍 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 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);
}
}
運作結果:
(五)關于強制轉換的代碼示範
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);
}
}
運作結果:
三、運算符
(一)算術運算符
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); //取的是餘數
}
}
運作結果:
(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);
}
}
運算結果:
(二)指派運算符
1.常見的指派運算符:=,+=,-=,/=,*=,%=
基本的指派運算符:=
作用:把右邊指派給左邊
擴充的指派運算符:+=,-=,/=,*=,%=
作用:左邊跟右邊做運算,再指派給左邊
注意:擴充的指派運算符隐含了強制轉換。
(三)關系運算符
1.常見的關系運算符:>,<,==,!=,<=,>=,instanceof(檢查是否是類的對象)
注意1:關系運算符的結果都是boolean型,也就是要麼是true,要麼是false。
注意2:比較運算符“==”不能誤寫成“=”
(四)邏輯運算符
概述:邏輯運算符用于連接配接布爾型表達式,在Java中不可以寫成3<x<6,應該寫成x>3 & x<6。
1. 常見的邏輯運算符:&(與),|(或),^(異或),! (非),&&(短路),||(短路)
2. &與&&差別:
單&時,左邊無論真假,右邊都進行運算
雙&時,如果左邊為真,右邊參與運算,如果左邊為假,那麼右邊不參與運算
3. |和||的差別:
單|時,左邊無論真假,右邊都進行運算
雙|時,如果左邊為假,右邊參與運算,如果左邊為真,那麼右邊不參與運算
4. 異或( ^ )與或( | )的不同之處是:當左右都為true時,結果為false。
(五)位運算符
1. 概述:位運算是直接對二進制進行運算。
2. 位運算的細節:
運算符 運算 範例 << 左移 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
<< 空位補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);
}
}
運作結果:
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);
}
}
運作結果:
(六)三目運算符
格式:(關系表達式)?表達式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);
}
}
運作結果:
用三目運算符比較兩個數是否相等,并輸出結果的代碼:
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);
}
}
運作結果:
-----------android教育訓練、java教育訓練、java學習型技術部落格、期待與您交流!------------