今天,就來探討一下基本的數據類型,以及,數據類型之間的轉換;
一、基本的數據類型
整型 浮點型 字符型 布爾型
1.整型
整型的運算過程中
爲了大家更加方便了解,咋們舉一個栗子
public class Test01{
public static void main(String[] args){
byte a1=1;
byte a2=2;
byte a3=a1+a2;
System.ot.println(a3);
}
}
試着運行這個代碼,你會發現,它出現的內容是不兼容的類型,從int轉換到Byte可能有損失;爲什麼會出現這種情況呢 ,1和2默認的都是Int類型,而a1,a2,a3都是byte類型,所以會報錯,要怎麼解決這種問題呢,咋們可以強制轉換,在a1+a3前面加上Byte,我們來看看修改後的代碼。
public class Test01{
public static void main(String[] args){
byte a1=100;
byte a2=100;
byte a3=(byte)(a1+a2);
System.ot.println(a3);
}
}
在運行一遍這個代碼就可以運行結果了;
運行的結果是
-56
咋們分析分析,爲啥會這樣,爲啥不是200,Byte的取值範圍是在-128-127,200已經超過了它的範圍,但它還是輸出了,這就是強制轉換的結果;
200=1100 1000 然後-1=1100 0111 然後進行取反 = 0011 1000得到的就是-56
同理Short和long也是這樣的,在詳細說明一下
public class Test02{
public static void main(String[] args){
Short a1=1;
short a2=2;
short a3=a1+a2;
System.ot.println(a3);
}
}
運行之後,它依舊是報錯的,報錯的原因依舊是:不兼容;要將其改爲正確的代碼,道理同byte一樣,在a1+a3整體前面加上short進行強制轉換;
public class Test02{
public static void main(String[] args){
Short a1=1;
short a2=2;
short a3=(short)(a1+a2);
System.ot.println(a3);
}
}
所以,我們可以總結出一下道理來,整型的默認是Int型,其他型想要輸出的時候,必須要進行強制轉換;
2.浮點型
float型4個字節
double8個字節
浮點型的默認是Double型,輸出的時候,若不是Double需要進行強制轉換
class test3{
public static void main(String[] args){
float f=3.14;
System.out.println(f)
}
}
這個代碼,顯而易見,他是不能輸出的;錯誤原因呢,也是不兼容,想要輸出,在float類型的常量後面+F;
class test3{
public static void main(String[] args){
float f=3.14F;
System.out.println(f)
}
}
這樣就可以輸出了;
3.字符型
char 2字節 0-65536 它爲啥沒有負數,因爲字符沒有負的
計算機是怎麼存字符的呢?字母、數字、標點;
public class Test4{
public static void main(String[] args){
char c1='a';
System.out.println(c1+1);//98 c1後的一個字符編碼
System.out.println(c1-1);//96 c1前的一個字符編碼
System.out.println((char)('我'+1));//字典中,我後面的那個字 戒
}
}
4.布爾型
它的運行結果只有true、false
二、i++ 和 ++i
對於i++和++i,相信咋們都知道是i++是先運行後+1,++i是先+1,在運行
咋們就來細細說一下i++,可以這樣理解,i++是披着羊皮的狼,他在遇到羊之前,都是一匹狼,在遇到羊之後,他就顯示出了它的本來的面目,好比說,在運行一個程序,i++本來已經是2,但他外面還披着1的外皮,在進行運算(賦值,調用,輸出)中任意一個之後,他的那層外皮就掉了,2顯示出來,2去參與運算。
在學術一點就是:
1.先開闢一個臨時存儲區
2.將I的值複製到存儲區
3.i自身+1
4.臨時存儲區的值等待被調用(賦值,輸出,調用);
來,舉個例子
public class Test5{
public static void main(String[] args){
int i=3;
i++;
System.out.println(i);//4
System.out.println(i++);//4
int j=i++;
System.out.println(j);//5
System.out.println(i);//6
i=i++;
System.out.println(i);//6
i=i++;
System.out.println(i);//6
}
}
第一個輸出想必大家都懂,第二個輸出爲4,此時i進行輸出,i變成了5,在 j=i++的時候,將5賦予J,所以,第三個輸出爲5,i此時也參與了運算,所以i的值在第四個輸出的時候變成了6;i=i++,就是將6賦給了i,所以第五個和第六個的輸出都爲6;
三、實戰演練
3.1(將攝氏溫度轉換爲華氏溫度)編寫程序,從控制檯讀入double型的攝氏溫度,然後將其轉換成爲華氏溫度,並且顯示結果。轉換公式: 華氏溫度 = (9/5) * 攝氏溫度 + 32;
步驟:
1.輸入攝氏溫度
2.根據題目給的公式進行轉換
import java.util.Scanner;
public class Test1{
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("請輸入攝氏溫度:");
double z = input.nextDouble();
double z1 = (9.0/5)*z+32;
System.out.println("攝氏溫度爲:"+z+"轉換爲華氏溫度爲:"+z1);
}
}
3.2(計算圓柱體的體積)編寫程序,讀入圓柱體的半徑和高,並使用下列公式計算圓柱的體積:
- 面積=半徑* 半徑 * p
- 體積= 面積*高
- 步驟:
- 1.輸入圓柱體的半徑,高
- 2.算出底面積,根據r*r*h
- 3.算體積,根據算出來的底面積
-
import java.util.Scanner; public class Test2{ public Static void main(String[] args){ Double pi = 3.1415926; Scanner input = new Scanner(System.in); System.out.println("請輸入圓柱體的半徑:"); Double r = input.nextDouble(); Scanner input1 = new Scanner(System.in); System.out.println("請輸入圓柱體的高:"); Double h = input1.nextDouble(); Double area = r*r*pi; Double V = area * h; System.out.println("圓柱體的面積是:"+area); System.out.println("圓柱體的體積是:"+v); } }
- 步驟:
- 1.輸入一個整數
- 2.整數%10得到個位數
- 3.整數/10%10得到十位數
- 4.整數/10/10得到百位數
- 5.將個位數,十位數,百位數相加
import java.util.Scanner;
public class Test3{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
System.out.println("請輸入一個0-1000之間的整數");
int N = in.nextInt();
int N1 = N % 10;
int N2 = N /10 %10;
int N3 = N2%10;
int sum = N1+N2+N3;
System.out.println("這個數的各個數字之和是:"+sum);
}
}
3.4(當前時間)程序清單2-7給出了顯示當前格林威治時間的程序。修改這個程序,提示用戶輸入相 對於 GMT 的時區偏移量,然後顯示在這個特定時區的時間。
步驟:1.先獲取1970年1月1日到現在的總的毫秒數
2.總毫秒數/1000得到總秒數 總秒數%60得到當前的秒數
3.總秒數/60得到總分鐘數 總分鐘數%60得到當前得分鐘數
4.總分鐘數/60得到總小時數 (總小時候數+其他區域)%24得到當地的時間
import java.util.Scanner;
public class Test4{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
System.out.println("請輸入時區的偏移量:");
int timePianyi = in.nextInt();
Long totalMilliseconds = System.currentTimeMillis();/*獲取1970年到
現在的毫秒數;*/
long totalseconds = totalMilliseconds / 1000;/*得到總秒數*/
long currenSeconds = totalseconds % 60;/*得到當前的秒數*/
long totalMinutes = totalseconds / 60;/*得到總分鐘*/
long currentMinutes = totalMinutes % 60;/*得到當前的分鐘數*/
long totalHours = totalMinutes /60;/*得到當前的小時總數*/
long currentHour = (totalHours + timePianyi) % 24;
System.out.println("當前的時間是:"+currentHour+":"+currentMinutes
+":"+currenSeconds);
}
}
3.5
(財務應用程序:複利值)假設你每月向銀行賬戶存100美元,年利率爲5%,那麼每月利率是 0.05/12=0.004 17。
第一個月之後,賬戶上的值就變成:
100 * (1 + 0.00417) = 100.417
第二個月之後,賬戶上的值就變成:
(100 + 100.417) * (1 + 0.00417) = 201.252
第三個月之後,賬戶上的值就變成:
(100 + 201.252) * (1 + 0.00417) = 302.507
依此類推。編寫程序顯示六個月後賬戶上的錢數。(在編程練習題 5.30中,你將使用循環來簡化這裏的代碼,並能顯示任何一個月之後的賬戶值。)
數據:月利率0.00417.每月的存款金額100, 要求輸出每個月存款100的總金額
步驟:1.算出第一個總金額
2.其餘的每個月,皆是 (本月的金額+上月的總金額)*月利息
import java.util.Scanner;
public class Test5 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("請輸入你的每月存款金額:");
double Z = in.nextDouble();
double rLiXi= 1 + 0.00417;
double Month1 = Z * rLiXi;
double Month2 = (Z + Month1) * rLiXi;
double Month3 = (Z + Month2) * rLiXi;
double Month4 = (Z + Month3) * rLiXi;
double Month5 = (Z + Month4) * rLiXi;
double Month6 = (Z + Month5) * rLiXi;
System.out.println("6個月後賬上餘額爲:" + Month6);
}
}
3.6(幾何:兩點間距離)編寫程序,提示用戶輸人兩個點(x1,y1)和(x2,y2),然後顯示兩點間的距離。計算兩點間距離的公式:(x2-x1)^2 + (y2-y1)^2 結果的平方根,注意:可以使用Math.pow(a,0.5) 來計算。
數據:兩個點的座標,求解兩點之間的距離
步驟:1.輸入兩個點的座標
2.兩點之間的距離公式(x-x1)^2+(y-y1)^2
3.開平方,這裏用到 Math.pow( ,0.5)這是開根號 平方就是Math.pow( ,2)
import java.util.Scanner;
public class Test6{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.print("Enter x1 and y1: ");
System.out.print("Enter x2 and y2: ");
double b=input.nextDouble();
double d=input.nextDouble();
double a=input.nextDouble();
double c=input.nextDouble();
double y= (b-a)*(b-a)+(d-c)*(d-c);
double distance = Math.pow(y, 0.5);//power 求開平方(0.5)
System.out.print("The distance the two points is " + distance);
}
}
3.7(幾何:三角形的面積)編寫程序,提示用戶輸人三角形的三個點(x1,y1)、(x2,y2) 和 (x3,y3), 然後顯示它的面積。計算三角形面積的公式是:
s=(邊1+邊2+邊3)/2
面積: (s * (s - 邊1)(s - 邊2)(s - 邊3))^0.5
數據:三個點的座標 求三角形的體積
步驟:1.輸入三個點的點座標
2.求出兩兩點之間的距離,得到的是三條邊的長度
3.算出三角形的邊長
4.根據邊長與面積之間的公式求出三角形的面積
import java.util.Scanner;
public class Test7{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.print("Enter x1 and y1: ");
System.out.print("Enter x2 and y2: ");
System.out.print("Enter x3 and y3: ");
double b=input.nextDouble();
double d=input.nextDouble();
double a=input.nextDouble();
double c=input.nextDouble();
double e=input.nextDouble();
double f=input.nextDouble();
double y= (b-a)*(b-a)+(d-c)*(d-c);
double y1= (b-e)*(b-e)+(d-f)*(d-f);
double y2= (a-e)*(a-e)+(c-f)*(c-f);
double dis1 = Math.pow(y, 0.5);
double dis2 = Math.pow(y1, 0.5);
double dis3 = Math.pow(y2, 0.5);
double S = (dis1+dis2+dis3)/2;
double are = S*(s-dis1)*(S-dis2)*(S-dis3);
double area = Math.pow(are,0.5);
System.out.println("三角形的面積爲:"+area);
}
}
啊,用一張圖表示現在自己的心情