1. 程式人生 > >Java資料型別和變數

Java資料型別和變數

  1. Java中資料型別有哪些?

    1. 基本資料型別(1位元組等於8位)
      1. 數值型
        1. 整數型
          • byte(1位元組)
          • short(2位元組)
          • int(4位元組)
          • long(8位元組)
        2. 浮點型
          • float(4位元組)
          • double(8位元組)
      2. 字元型
        • char(2位元組)
      3. 布林型
        • boolean
    2. 引用資料型別
      1. 類(class)
      2. 介面(interface)
      3. 陣列(String[] ss = new String[3]?
  2. Java中資料型別的轉換?

    1. 低階到高階:(byte,short,char)–int–long–float—double

    2. 低階轉高階:自動轉換為高階的資料型別

      如:char轉換為int時,會轉換成對應的ascll碼,int型的1轉換成float型就直接加上小數部分為1.0f,因為(byte,short,char)是平級的,所以相互轉換的時候要強制型別轉換

    3. 高階轉低階:強制型別轉換,但是會喪失精度

      如:double型的3.14159轉換成int型就會變成3,小數部分就直接喪失。

    4. 基礎資料型別的包裝類進行轉換

      1. java共有六個包裝類
        • 分別是Integer,Double,Long,Float ,Boolean,Character
        • 分別對應的基本資料型別是int,double,long,float,Boolean,char
  3. 成員變數和區域性變數的區別?

    1. 共同點:都有生命週期
    2. 區別:
      1. 成員變數:宣告在類裡面的變數,生命週期一直到這個類被垃圾回收器回收。
        • 成員變數在宣告的時候會有預設值,byte:0;short:0;int:0;long:0;float:0.0f;double:0.0;boolean:false;char:’’;String:null;
      2. 區域性變數:宣告在方法或程式碼塊或形參裡面的變數,宣告週期到這個方法被呼叫完。
        • 區域性變數使用前必須先初始化才能使用(形參除外),沒有預設值。
  4. 思維特訓

    1. 一列時速15英里的火車從洛杉磯出發,駛向紐約。另外一列時速 20英里的火車從紐約出發,駛向洛杉磯。如果一隻鳥以每小時25 英里的速度飛行,在同一時間從洛杉磯出發,在兩列火車之間往 返飛行,到火車相遇時為止,鳥飛了多遠?

      分析:鳥的速度不變,所以鳥飛行的距離為火車開始到相遇的時間乘以鳥飛行的速度;而時間為洛杉磯到紐約的距離除以兩火車的速度之和,所以鳥飛行的距離為鳥飛行的速度乘以洛杉磯到紐約的距離除以兩火車的速度之和。

      設洛杉磯到紐約的距離為L,鳥飛行的距離為x,兩火車開始到相遇用時為t;
            		t=L/(15+20)=L/35;
            		x=t*25=25*(L/35)=(5*L)/7;
      即,鳥飛行的距離為七分之五個洛杉磯到紐約的距離。	
      
    2. 有三筐水果,一筐裝的全是蘋果,第二筐裝的全是橘子,第三筐 是橘子與蘋果混在一起。筐上的標籤都是騙人的,(比如,如果 標籤寫的是橘子,那麼可以肯定筐裡不會只有橘子,可能還有蘋果)你的任務是拿出其中一筐,從裡面只拿一隻水果,然後正確 寫出三筐水果的標籤。

      分析圖:三框水果分析圖

      程式碼實現:

      import java.util.Scanner;
      
      public class fruits {
      
          public static void main(String[] args){
          	Scanner sc = new Scanner(System.in);
          	System.out.println("請輸入要從哪個框中抓水果,可為1,2,3");
          	int number = sc.nextInt();
          	System.out.println("請輸入抓出了什麼水果,可為蘋果或橘子");
          	String name = sc.next();		
          
          	choose(name,number);	
          	
          }
          
          public static void choose(String name,int number){
          	String[] str1 = new String[]{"蘋果","橘子","蘋果和橘子"};
          	System.out.println("一開始的標籤為:"+str1[0]+","+str1[1]+","+str1[2]);
          	System.out.println("當從第"+number+"框中拿出"+name+"時,");
          	if((name.equals(str1[0])&&number==1)||(name.equals(str1[0])&&number==2)||(number==3&&name.equals(str1[1]))){
          		System.out.println("正確的標籤是"+str1[2]+","+str1[0]+","+str1[1]);
          	}else if((name.equals(str1[1])&&number==1)||(name.equals(str1[1])&&number==2)||(number==3&&name.equals(str1[0]))){
          		System.out.println("正確的標籤是"+str1[1]+","+str1[2]+","+str1[0]);
          	}
          	
          }
      
      }
      
      

      執行截圖:執行截圖