Java小白的成長(基礎篇)2

  今天,就來探討一下基本的數據類型,以及,數據類型之間的轉換;

一、基本的數據類型

整型 浮點型 字符型 布爾型

1.整型

byte -1字節  -2^7-2^7-1 -128-127 負數----1取反
1Byte=8bit 按理說,它的範圍應該是256,但因爲存在負數的問題,所以會按一半一半劃分範圍,負數範圍爲-128~-1之間,正數應該爲1~128之間,但是這裏要注意缺少0,所以正數的正確範圍爲0~127之間。所以byte的範圍爲-128~127。
同理
short-2字節   -2^15-2^15-1
int    -4字節   -2^31-2^31-1
long-8字節    -2^63~2^63-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);
        }
    }
    3.3  (求一個整數的各個數的和)編寫程序,讀取一個在 0 和 1000 之間的整數,並將該整數的各位數字相加。例如:整數是 932 , 各位數字之和爲 14。
  •   步驟:
  •    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);
         }
         }

啊,用一張圖表示現在自己的心情

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章