變量
程序的都是運行在內(nèi)存中的,程序中數(shù)據(jù)在內(nèi)存中都擁有獨立的內(nèi)存地址。
因為內(nèi)存地址不好記憶?所以就使用變量
變量就是數(shù)據(jù)在內(nèi)存中的內(nèi)存地址的表示。
如何使用變量
java是強類型語言,在java中的嚴格區(qū)分數(shù)據(jù)類型
1、聲明變量(在內(nèi)存中申請一塊地址)
語法格式: 數(shù)據(jù)類型 變量名;
int a;
2、給變量賦值(將數(shù)據(jù)放入申請的內(nèi)存中) 注意:值要與數(shù)據(jù)類型匹配
語法格式: 變量名 = 值 ;
a = 10;
3、使用變量
a = a + 10;
System.out.println(a);
代碼演示
public class Demo1{
public static void main(String[] args){
//1、聲明變量
int a;
//2、變量賦值
a = 102;
//3、使用變量
a = a + 10;
System.out.println(a);
//變量的定義的簡寫方式
int b = 10;
b = b + 10;
System.out.println(b);
}
}
變量名(標(biāo)識符)的命名規(guī)則
- 標(biāo)識符只能由數(shù)字、字母、下劃線、美元$符號四個部分組成(可以用中文不要用)
- 標(biāo)識符不能用數(shù)字開頭
- 標(biāo)識符不能使用java的關(guān)鍵字和保留字
- 標(biāo)識符要見名知意
- 使用駝峰命名法(兩個以上單詞組成) 小駝峰(方法名、變量名) bigData 大駝峰 BigData(類名)
數(shù)據(jù)類型
引用數(shù)據(jù)類型
- 類
- 數(shù)組
- 接口
基本數(shù)據(jù)類型(8種)
-
整數(shù)型
byte short int long
類型 | 字節(jié)數(shù) | 取值范圍 |
---|---|---|
byte | 1字節(jié) | -2^7 ~ 2^7-1 |
short | 2字節(jié) | -2^15 ~ 2^15-1 |
int | 4字節(jié) | -2^31 ~ 2^31-1 |
long | 8字節(jié) | -2^63 ~ 2^63-1 |
- 浮點型
類型 | 字節(jié)數(shù) | 取值范圍 | 小數(shù)點位數(shù) |
---|---|---|---|
float | 4字節(jié) | ±3.4E+38 | 7位 |
double | 8字節(jié) | ±1.7E+308 | 16位 |
- 字符型
類型 | 字節(jié)數(shù) | 取值范圍 |
---|---|---|
char | 2字節(jié) | 0~65535 |
- 布爾型
類型 | 字節(jié)數(shù) | 取值范圍 |
---|---|---|
boolean | 1字節(jié) | true、false |
注意:
- 在java中定義任意一個整數(shù)默認都會被當(dāng)做是int類型(所以在定義long類型數(shù)據(jù)的時候加上L作為標(biāo)記)
- 在java中定義任意一個小數(shù)默認都會被當(dāng)做是double類型(所以在定義float類型數(shù)據(jù)的時候加上F作為標(biāo)記)
- 數(shù)據(jù)類型所占字節(jié)數(shù)與取值范圍無關(guān)
- char、byte、short類型在參加計算之前,會將自己的類型提升為int類型
數(shù)據(jù)類型的轉(zhuǎn)換
- 自動(隱式)類型轉(zhuǎn)換
- 強制(顯式)類型轉(zhuǎn)換
代碼演示
public class Demo3{
public static void main(String[] args){
//自動類型轉(zhuǎn)換
/*
long i = 1000;
System.out.println(i);
//強制類型轉(zhuǎn)換 (類型)
float f = (float)1.2;
System.out.println(f);
*/
/*
總結(jié):
如果等號右邊的類型比左邊的類型要范圍小就會發(fā)生自動類型轉(zhuǎn)換
小轉(zhuǎn)大
如果等號右邊的類型比左邊的類型要范圍大就要發(fā)生強制類型轉(zhuǎn)換(否則會報錯)
大轉(zhuǎn)小
byte short int long float double
char
boolean類型在java中不參與任何的數(shù)據(jù)類型轉(zhuǎn)換
強制類型轉(zhuǎn)換會發(fā)生數(shù)據(jù)的丟失
如果是浮點型轉(zhuǎn)換成整數(shù)型, 小數(shù)點以后的數(shù)據(jù)都會丟失
大類型強轉(zhuǎn)成小的類型,見圖
*/
/*
整數(shù)與字符型互轉(zhuǎn)
int i = 98;
char c = (char)i;
System.out.println(c);// 結(jié)果 b
char c = 'a';
int i = c;
System.out.println(i); // 結(jié)果97
*/
//整數(shù)與浮點型互轉(zhuǎn)
/*
int i = 98;
double d = i;
System.out.println(d);//結(jié)果98.0
//直接砍小數(shù)點以后的數(shù)據(jù)
double d = 1.9;
int i = (int)d;
System.out.println(i);//結(jié)果 1
*/
byte b1 = 100;
byte b2 = 100;
byte b5 = (byte)(b1+b2);
System.out.println(b3); //結(jié)果-56
}
}
總結(jié):如果等號右邊的類型比左邊的類型要范圍小就會發(fā)生自動類型轉(zhuǎn)換 小轉(zhuǎn)大 如果等號右邊的類型比左邊的類型要范圍大就要發(fā)生強制類型轉(zhuǎn)換(否則會報錯) 大轉(zhuǎn)小
基本數(shù)據(jù)類型大小范圍byte ---> short ---> int ---> long ---> float ---> double char
boolean類型在java中不參與任何的數(shù)據(jù)類型轉(zhuǎn)換
強制類型轉(zhuǎn)換會發(fā)生數(shù)據(jù)的丟失
? 如果是浮點型轉(zhuǎn)換成整數(shù)型, 小數(shù)點以后的數(shù)據(jù)都會丟失
? 如果是大類型強轉(zhuǎn)成小的類型,見圖
運算符
算術(shù)運算符 + - * / % ++ --
關(guān)系運算符 > < >= <= == !=
賦值運算符 = += -= *= /= %=
邏輯運算符 && || !
位運算符(了解) & | ~ << >>
三目運算符
代碼演示
public class Demo4{
public static void main(String[] args){
/*
int a = 10;
int b = 20;
System.out.println(a+b);
System.out.println(a*b);
System.out.println(a-b);
System.out.println(a/b);
System.out.println(a%b);
//String 類型 字符串要用雙引號擴起來
String name = "cxk";
System.out.println(name);
int a =10;
int b =20;
System.out.println(a+b+"a+b的結(jié)果為");//30a+b的結(jié)果為
System.out.println("a+b的結(jié)果為"+a+b);//a+b的結(jié)果為1020
System.out.println(3+5+"哈哈"+1+2);//8哈哈12
int a =10;
int b =20;
String c = "a+b的結(jié)果為"+(a+b);
int a = 10;
//a++;// a = a + 1;
System.out.println(a++);//結(jié)果 10 a=11
System.out.println(++a);//結(jié)果 12
int x = 10; int y = 12;
x=9 y =13 x=10 y=12
int z = --x + y++ + x++ - --y; z? x? y?
9 + 12 + 9 - 12
*/
/*
總結(jié)
整數(shù)與整數(shù)計算結(jié)果為整數(shù)
整數(shù)與浮點數(shù)計算結(jié)果為浮點數(shù)
+號可以當(dāng)數(shù)據(jù)計算,也可以作為字符串的連接
任何類型與字符串拼接之后的結(jié)果都是字符串類型
++ 表示自身加1
++在前,先加1再使用 ++ 在后,先使用再加1
-- 表示自身減1
*/
}
}
代碼演示
public class Demo5{
public static void main(String[] args){
/*
int a = 10;
int b = 20;
System.out.println(a>b);
System.out.println(a<b);
System.out.println(a==b);
總結(jié):
關(guān)系運算符的結(jié)果為boolean類型
等值判斷要使用==
int a = 10;
a += 10;// a = a + 10;
System.out.println(a); //20
a%=20; // a = a % 20;
System.out.println(a); //0
short s1 = 10;
short s2 = 20;
s1 = s1 + s2; ? 錯誤,因為s1和s2在參加計算之前會提升為int類型,
s1 += s2; ? 正確,+=將s1+s2的結(jié)果內(nèi)部做強轉(zhuǎn),強轉(zhuǎn)成short再賦給s1
short s1 = 10;
short s2 = 20;
//s1 = s1 + s2;
s1 += s2; //s1 = s1 + s2;
System.out.println(s1);
邏輯運算符的符號兩都應(yīng)該是boolean類型或者boolean類型表達式
邏輯運算符的結(jié)果也是boolean類型的
|| 只要有一個結(jié)果為true,最終的結(jié)果就為true
&& 只要有一個結(jié)果為false,最終的結(jié)果就為false
! 取反,如果是true,取反就為false.如果是false,取反就為true
&& & || | 都可以被用作邏輯運算,且結(jié)果一樣的。
&& || 短路與(如果表達式中,有一個為false就不會往下再執(zhí)行了)
短路或(如果表達式中,有一個為true就不會往下再執(zhí)行了)
& | 無論結(jié)果如何都會執(zhí)行完整個表達式
int a = 10;
int b = 20;
//boolean boo = a > 10 || b < 30;
//boolean boo = a > 10 && b < 30;
boolean boo = !(a > 10 && b < 30);
System.out.println(boo);
int a = 10;
int b = 20;
//boolean boo = ++a > 10 || b-- < 30;
boolean boo = a++ > 10 & b-- < 30;
//boolean boo = !(a > 10 && b < 30);
//System.out.println(boo);
System.out.println(a);
System.out.println(b);
*/
/*
& 按位與 按位計算,同為1結(jié)果為1,否則為0
10 & 20 = ?
0 1 0 1 0
1 0 1 0 0
-----------------------
0 0 0 0 0
| 按位或 按位計算,同為0結(jié)果為0,否則為1
12 | 19 = ?
0 1 1 0 0
1 0 0 1 1
-----------------------
1 1 1 1 1
^ 按位亦或 按位計算,相同為0,不同為1
19^21 = ?
1 0 0 1 1
1 0 1 0 1
-----------------------
0 0 1 1 0
~ 按位取反 相反值-1
~12
<< 左移
12 << 2
00001100
00110000
>> 右移
12 >> 2
00001100
00000011
System.out.println(10&20);//結(jié)果 0
System.out.println(12|19);//結(jié)果 31
System.out.println(19^21);//結(jié)果 6
System.out.println(~12);//結(jié)果 -13
System.out.println(12 << 2);//結(jié)果 48
System.out.println(12 >> 2);//結(jié)果 3
如何求得2的三次方?
00000010
00001000
System.out.println(2<<2);
System.out.println(2*2*2);
三目運算符
語法: boolean類型表達式 ? 結(jié)果1 : 結(jié)果2;
如果表達式的結(jié)果為true,那么就是結(jié)果1,否則就是結(jié)果2
int age = 12;
String s = age > 18 ? "能上網(wǎng)":"回家呆著";
System.out.println(s);
*/
}
}
簡單的人機交互
代碼實現(xiàn)
import java.util.Scanner;
public class Demo6{
public static void main(String[] args){
/*
1、創(chuàng)建一個Scanner對象
2、引入Scanner類
3、使用的Scanner對象的方法
*/
Scanner sc = new Scanner(System.in);
System.out.println("請輸入一個姓名");
String name = sc.next();
System.out.println("姓名為:"+name);
System.out.println("請輸入一個年齡");
int age = sc.nextInt();
System.out.println("年齡為:"+age);
System.out.println("請輸入一個成績");
double score = sc.nextDouble();
System.out.println("分數(shù)為:"+score);
//sc.nextChar()//沒有這樣的方法
}
}