Java基礎 - 第一章 計算

#1.1 第一個Java程序java

package my.hava.javabasis.lesson;

/**
 * Created by zhanpeng on 2016/10/10.
 */
public class Lesson1_1 {

    public static void main(String [] args)
    {
        System.out.println("Hello World");
    }
}

程序輸出編程

Hello World

Process finished with exit code 0

#1.2 用變量作計算 ##1.2.1 讀輸入 ###如何去讀架構

package my.hava.javabasis.lesson;

import java.util.Scanner;

/**
 * Created by zhanpeng on 2016/10/10.
 */
public class Lesson1_2 {
    public static void main(String [] args)
    {
        System.out.println("中文");
        //讀取用戶輸入
        Scanner in = new Scanner(System.in);
        System.out.println(in.nextLine());
    }
}

###課堂題目 每次輸入的內容只有在按下回車(Enter)鍵以後纔會被程序讀到。
A.√
B.×
正確答案: Aapp

package my.hava.javabasis.lesson;

import java.util.Scanner;

/**
 * Created by zhanpeng on 2016/10/10.
 */
public class Lesson1_2 {
    public static void main(String [] args)
    {
        System.out.println("中文");
        //讀取用戶輸入
        Scanner in = new Scanner(System.in);
        System.out.println("echo:" + in.nextLine());
        System.out.println(2+3+"=2+3=" + (2+3));
    }
}

程序輸出less

中文
hello world
echo:hello world
5=2+3=5

Process finished with exit code 0

##1.2.2 變量測試

package my.hava.javabasis.lesson1;

import java.util.Scanner;

/**
 * Created by zhanpeng on 2016/10/10.
 */
public class Lesson1_2 {
    public static void main(String [] args)
    {
        System.out.println("中文");
        //讀取用戶輸入
        Scanner in = new Scanner(System.in);
//        System.out.println("echo:" + in.nextLine());
        int price = in.nextInt();
        System.out.println("100-" + price + "=" + (100 - price));
    }
}

輸出ui

中文
33
100-33=67

Process finished with exit code 0

###題目 int price;
這句定義了一個變量
A.√
B.×
正確答案: A 你選對了code

###變量定義對象

  • 變量定義的通常形式就是:
    • <類型名稱> <變量名稱>;

以下爲例子圖片

int price;
int amount;
int price,amount;

###變量的名稱

  • 變量須要一個名字,變量的名字是一種「標識符」,意識是它是用來識別這個和那個的不一樣名字。
  • 標識符有標識符的構造規則。基本的原則是:標識符只能由字母、數字和下劃線組成,數字不能夠出如今第一個位置上,Java的關鍵字(有的地方叫它們保留字)不能夠用作標識符。

###Java保留字 輸入圖片說明

###變量類型

  • int price = 0;
  • 這一行,定義了一個變量。變量的名字是price,類型是int,初始值是0。
  • Java是一種強類型語言,全部的變量在使用以前必須定義或者生命,全部的變量必須具備肯定搞得數據類型。數據類型表示在變量中能夠存放什麼樣的數據,變量中只能存放指定類型的數據,程序運行過程當中也不能改變變量的類型。

##1.2.3 賦值

###異常

package my.hava.javabasis.lesson1;

import java.util.Scanner;

/**
 * Created by zhanpeng on 2016/10/10.
 */
public class Lesson1_2 {
    public static void main(String [] args)
    {
        System.out.println("中文");
        //讀取用戶輸入
        Scanner in = new Scanner(System.in);
//        System.out.println("echo:" + in.nextLine());
        //變量初始化
        int price = 0, amount = 0;
        System.out.println(price);
        price = in.nextInt();
        System.out.println("100-" + price + "=" + (100 - price));
    }
}

輸出異常

中文
0
price
Exception in thread "main" java.util.InputMismatchException
	at java.util.Scanner.throwFor(Scanner.java:909)
	at java.util.Scanner.next(Scanner.java:1530)
	at java.util.Scanner.nextInt(Scanner.java:2160)
	at java.util.Scanner.nextInt(Scanner.java:2119)
	at my.hava.javabasis.lesson1.Lesson1_2.main(Lesson1_2.java:18)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)

Process finished with exit code 1

###代碼

package my.hava.javabasis.lesson1;

import java.util.Scanner;

/**
 * Created by zhanpeng on 2016/10/10.
 */
public class Lesson1_2 {
    public static void main(String [] args)
    {
        System.out.println("你好");
        //讀取用戶輸入
        Scanner in = new Scanner(System.in);
//        System.out.println("echo:" + in.nextLine());
        //變量初始化
        int amount = 100;
        int price = 0;
        System.out.println("[amount]:" + amount);
        System.out.println("[price]:" + price);
        price = in.nextInt();
        System.out.println(amount + "-" + price + "=" + (amount - price));
    }
}

###題目 當amount的值爲100,price的值爲20,如下哪種寫法能輸出:100-20=80

A.System.out.println("amount-price="+amount-price);

B.System.out.println(amount+"-"+price+"="+(amount-price));

C.System.out.println("amount-"+price+"="+amount-price);

D.System.out.println(amount-price=(amount-price)); 正確答案: B

###程序

package my.hava.javabasis.lesson1;

import java.util.Scanner;

/**
 * Created by zhanpeng on 2016/10/10.
 */
public class Lesson1_2 {
    public static void main(String [] args)
    {
        System.out.println("你好");
        //讀取用戶輸入
        Scanner in = new Scanner(System.in);
//        System.out.println("echo:" + in.nextLine());
        //變量初始化
//        final int amount = 100;
        int amount = 100;
        int price = 0;
        System.out.println("[amount]:" + amount);
        System.out.println("[price]:" + price);
        System.out.println("請輸入票面:");
        amount = in.nextInt();
        System.out.println("請輸入金額:");
        price = in.nextInt();
        System.out.println(amount + "-" + price + "=" + (amount - price));
    }
}

輸出結果

你好
[amount]:100
[price]:0
請輸入票面:
100
請輸入金額:
50
100-50=50

Process finished with exit code 0

##變量課件 ###讀輸入

Scanner in = new Scanner(System.in);
System.out.println(in.nextLine());
  • 將第一行抄在筆記本上,任何須要讀用戶輸入的程序都須要這行
  • 輸入Scan以後,按下鍵盤上的Alt+/,讓Eclipse自動爲你補全必要的代碼

###運行

  • 輸入也在終端窗口中
  • 紅色的方塊表示程序正在運行
  • 輸入時以行爲單位進行的,行的結束標誌就是你按下了回車鍵。在你按下回車以前,你的程序不會讀到任何東西

###讀入一行文字

  • System.out.println(in.nextLine());
  • 讓in對象作讀入下一行的動做,結果交給System.out這個對象進行打印

###字符串的+

  • 用來鏈接兩個字符串造成更長的字符串
System.out.println("Hello" + " world.");//Hello world.
System.out.println("Hello" + 2);//Hello2
System.out.println("Hello" + 2 + 3);//Hello5
System.out.println(2 + 3 + "Hello");//5Hello

###try

  • 在輸出的時候加上文字代表是否回答而非單純的重複

###找零計算

  • 輸入一個表示應該付多少元的數字,好比12,它告訴你88,意思是若是你付100
Scanner in = new Scanner(System.in);
int price = 0;
price = in.nextInt();
int change = 100 - price;
System.out.println(change);

###變量

  • int price = 0;
  • 這一行,定義了一個變量。變量的名字是price,類型是int,初始值是0。
  • 變量是一個保存數據的地方,當咱們須要在程序裏保存數據時,好比上面的例子中藥記錄用戶輸入的架構,就須要一個變量來保存它。用一個變量保存了數據,它才能參加到後面的計算中,好比計算找零。

###變量定義

  • 變量定義的通常形式就是:
    • <類型名稱> <變量名稱>;

以下爲例子

int price;
int amount;
int price,amount;

###變量的名字

  • 變量須要一個名字,變量的名字是一種「標識符」,意識是它用來識別這個和那個的不一樣的名字。
  • 標識符有標識符的構造規則。基本的原則是:標識符只能由字母、數字和下劃線組成,數字不能夠出如今第一個位置上,Java的關鍵字(有的地方叫它們保留字)不能夠用作標識符。

###Java保留字

###quiz

  • 如下哪些標識符是符合規則的?
    • currency √
    • lastName √
    • fireplace √
    • _last_name√
    • xingming√
    • class×
    • goto×
    • 4ever×
    • time-machine×
    • Int√
    • $12×
    • 我是變量×

###賦值和初始化

  • int price = 0;
  • 這一行,定義了一個變量。變量的名字是price,類型是int,初始值是0。
  • price=0是一個式子,這裏的=是一個賦值運算符,表示將=右邊的值賦給左邊的變量。

###賦值 和數學不一樣,a=b在數學中表示關係,即a和b的值同樣;而在Java中,a=b表示要求計算機作一個動做:將b的值賦給a。關係是靜態的,而動做是動態的。在數學中,a=b與b=a是等價的,而在Java中,二者的意思徹底相反

###初始化 當賦值發生在定義變量的時候,就像程序中的第7行那樣,就是變量的初始化。雖然Java語言並無強制要求全部的變量都在定義的地方作初始化,可是要求全部的變量在第一次被使用(出如今賦值運算符的右邊)以前被賦值

###變量初始化

  • <類型名稱> <變量名稱> = <初始值>;
  • int price = 0;
  • int amount = 100;
  • 組合變量定義的時候,也能夠在這個定義中單獨給單個變量賦值,如
  • int price = 0,amount = 100;

###插入

  • 寫出如下變量的初始值:
    • int price,amount =100,age;

回答 price == 0,amount == 100,age == 0

###讀整數

  • price = in.nextInt();
  • 要求in這個對象作讀入下一個整數的動做,讀到結果賦值給變量price
  • 若是用戶輸入的不是整數會怎樣?
    會報以下異常
Exception in thread "main" java.util.InputMismatchException
	at java.util.Scanner.throwFor(Scanner.java:864)
	at java.util.Scanner.next(Scanner.java:1485)
	at java.util.Scanner.nextInt(Scanner.java:2117)
	at java.util.Scanner.nextInt(Scanner.java:2076)
	at my.hava.javabasis.lesson1.Lesson1_2.main(Lesson1_2.java:22)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)

###表達式

  • "="是賦值運算符,有運算符的式子叫作表達式。
  • price=0;
  • change = 100 - price;

###try

  • 給程序增長一個int類型變量:bill,初始化爲100。在計算change時,用變量bill代替100。
  • 這個變量在哪裏定義合適?
    **回答:**環境變量並不充分,若是bill不在發生變動,則應該在class聲明爲類的static final變量。這樣在JVM載入時默認會把100值載入。提升效率。

###變量類型

  • 這一行,定義了一個變量。變量的名字是price,類型是int,初始值是0.
  • Java是一種強類型語言,全部的變量在使用以前必須定義或聲明,全部的變量必須具備肯定的數據類型。數據類型表示在變量中能夠存放什麼樣的數據,變量中只能存放指定類型的數據,程序運行過程當中也

###常量

  • int change = 100 - price;
  • 固定不變的數,是常數。直接寫在程序裏,咱們稱做直接量(literal)。
  • 更好的方式,是定義一個常量:
    • final int AMOUNT = 100;

###final

  • final是一個修飾符,加在int的前面,用來給這個變量加上一個final(最終的)的屬性。這個final的屬性表示這個變量的值一旦初始化,就不能再修改了。
    • int change = AMOUNT - price;
  • 若是你試圖對常量作修改,把它放在賦值運算符的左邊,就會被Java發現,指出爲

###try

  • 讓用戶輸入變量bill的值,而不是使用固定的初始值

###tips

  • 程序要求讀入多個數字時,能夠在一行輸入,中間用空格分開,也能夠在多行輸入
  • 每次召喚in.nextInt(),它就等待用戶輸入一個整數

#1.3 表達式(浮點數、優先級和類型轉換) ##浮點數 ###身高5尺7寸?

  • 美國人執拗地使用英制計量單位,他們習慣用幾尺幾寸(英尺英寸)來報本身的身高。若是遇到一個美國人告訴你他是5英尺7,他的身高應該是一米幾呢?
  • (5 + 7/12) * 0.3048 = 1.7018米

###計算身高的程序 - 問題代碼

package my.hava.javabasis.lesson1;

import java.util.Scanner;

/**
 * Created by yanfa on 2016/10/10.
 */
public class Lesson1_3 {

    public static void main(String [] args){
        int foot; //英尺
        int inch; //英寸

        Scanner in = new Scanner(System.in);
        System.out.println("請輸入身高:");
        System.out.print("英尺:");
        foot = in.nextInt();
        System.out.print("英寸:");
        inch = in.nextInt();

        double result = (foot + inch/12) * 0.3048;
        System.out.println("身高:" + result);
    }
}

錯誤輸出

請輸入身高:
英尺:5
英寸:7
身高:1.524

###爲何是1.524

  • 由於兩個整數的運算的結果只能是整數
    • 10/3 * 3= 9
  • 10和10.0在Java中是徹底不一樣的數
  • 10.0是浮點數

###課堂測試 在Java中10/3的結果是?

正確答案:3

###計算身高的程序 - 正確代碼 **注意:**在作除法的時候先進行強制類型轉換

package my.hava.javabasis.lesson1;

import java.util.Scanner;

/**
 * Created by yanfa on 2016/10/10.
 */
public class Lesson1_3 {

    public static void main(String [] args){
        int foot; //英尺
        int inch; //英寸

        Scanner in = new Scanner(System.in);
        System.out.println("請輸入身高:");
        System.out.print("英尺:");
        foot = in.nextInt();
        System.out.print("英寸:");
        inch = in.nextInt();

        double result = (foot + (double)inch/12) * 0.3048;
        System.out.println("身高:" + result);
    }
}

輸出結果

請輸入身高:
英尺:5
英寸:7
身高:1.7018

###浮點數

  • 帶小數點的數值。浮點這個詞的本意就是小數點是浮動的,是計算機內部表達非整數(包含分數和無理數)的一種方式。另外一種方式叫作定點數,不過在Java中不會遇到定點數。人們借用浮點數這個詞來表達全部的帶小數點的數。

###程序改進

  • (foot +inch/12) * 0.3048;
  • (foot +inch/12.0) * 0.3048;
  • 當浮點數和整數放到一塊兒運算時,Java會將整數轉換成浮點數,而後進行浮點數的運算。

###double

  • inch是定義爲int類型的變量,把int換成double,咱們就把它改成double類型的浮點數變量。
  • double的意思是雙,原本是雙精度浮點數的第一個單詞,人們用來表示浮點數類型

###浮點運算的精度

  • 浮點計算是有偏差的:
    • System.out.println(1.2 - 1.1);
      輸出結果
0.09999999999999987

###整數

  • 整數類型不能表達有小數部分的數,整數和整數的運算結果仍是整數。計算機裏會有純粹的整數這種奇怪的東西,是由於整數的運算比較快 ,並且佔地方也小。其實人們平常生活中大量作的仍是純粹整數的計算,因此整數的用處仍是很大的。

###討論

  • 若是把程序裏的inch變量換成double類型,那句語句後面的in.nextInt()還正確嗎?

**回答:**正確,Java程序會自動從低精度轉換成高精度。

###隨堂

  • 用一個變量meter來記錄身高換算的結果,最後在System.out.println()裏面輸出這個meter變量的值。 ##運算符優先級 輸入圖片說明

###單目運算符

  • 只有一個算子的運算符: +,-
int a = 10;
int b = -20;
System.out.println(a * -b);

###結合關係

  • 通常自左向右
  • 單目+ - 和賦值=是自右向左
result = a = b = 3 + c;
result = 2;
result = (result = result * 2) * 6 * (result = 3 + result);
//上面的式子先計算了左邊的result=,獲得result=4,而後在計算右邊的result=,獲得result=7。則最終結果是168

###插入

  • 6 + 5/4 -2=5
  • 2 + 2 * (2 * 2 - 2)%2/3 = 2
  • 10 + 9 * ((8 + 7) % 6) + 5 * 3 % 3 * 2 + 3 = 40
  • 1 + 2 + (3 + 4) * ((5 * 6 % 7 / 8) - 9) * 10 = -627

###強制類型轉換

  • 身高是1.524米
  • System.out.println((foot + inch /12) * 0.3048 * 100);

###隨堂測試 如下哪句能把浮點數轉換成整數?

A. (int)12.4

B. int(12.4)

C. int 12.4

D. 12.4=int 正確答案: A 你選對了

###強制類型轉換

  • 若是想把一個浮點數的小數部分去掉,編程整數
int i = 32 / 3.0;
int i = (int)(32 / 3.0);
  • (類型)值

###身高?

  • System.out.println( (int)((foot
  • inch / 12) * 0.3048 * 100));

###強制類型轉換

double b = 10.3;
int a = (int)b;
  • 只是從那個變量計算出了一個新的類型的值,它並不改變那個變量,不管是值仍是類型都不改變

###強制類型轉換

double a = 1.0;
double b = 2.0;
int i = (int)a /b;//int i = (int)(a/b);
  • 強制類型轉換的優先級高於四則運算
double a = 1.0;
double b = 2.0;
double d = (double) (a /b );
相關文章
相關標籤/搜索