Java語法 | 變量和常量

前言

C: 上一篇贷盲,查老師給你加了點(diǎn)“料”,捋了捋一個(gè) QQ 程序從安裝到運(yùn)行起來究竟做了哪些事兒。在上一篇的最后檀头,我們還分析到了一個(gè)結(jié)果就是當(dāng)程序運(yùn)行在內(nèi)存中后,程序產(chǎn)生的數(shù)據(jù)也要在內(nèi)存中妥善的管理起來岖沛,以方便使用和復(fù)用暑始,這種基礎(chǔ)的數(shù)據(jù)管理概念就是 變量

到站了請(qǐng)下車

不知道婴削,大家是否還記得在《Java語法 | 開發(fā)環(huán)境搭建》中我們介紹過一個(gè)環(huán)境變量的概念廊镜,環(huán)境變量就是操作系統(tǒng)里存儲(chǔ)的一些環(huán)境參數(shù)或關(guān)鍵值,每個(gè)在操作系統(tǒng)里運(yùn)行的程序都可以獲取到這些存儲(chǔ)的內(nèi)容 唉俗。因?yàn)樗鎯?chǔ)的是環(huán)境信息嗤朴,又因?yàn)檫@些信息是可變的值,所以它叫環(huán)境變量虫溜。

而本篇我們也要正式學(xué)習(xí)下 Java 程序中的變量雹姊,它是我們學(xué)習(xí)的第一個(gè)基礎(chǔ)知識(shí)點(diǎn),先來感受下它的用處吧衡楞,例如下方代碼吱雏,在進(jìn)行輸出個(gè)人介紹時(shí),如果想修改姓名的話,需要單個(gè)依次修改歧杏。

此時(shí)我們就可以將個(gè)人介紹中的姓名存儲(chǔ)成變量镰惦,然后就可以很方便的修改或重復(fù)使用了。

<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="java" cid="n8" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">// 未使用變量
System.out.println("我是時(shí)間管理大師:小羅");
System.out.println("我是時(shí)間管理大師:小羅");
System.out.println("我是時(shí)間管理大師:小羅");
System.out.println("我是時(shí)間管理大師:小羅");</pre>

<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="java" cid="n9" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">// 使用變量
String name = "小羅";
System.out.println("我是時(shí)間管理大師:" + name);
System.out.println("我是時(shí)間管理大師:" + name);
System.out.println("我是時(shí)間管理大師:" + name);
System.out.println("我是時(shí)間管理大師:" + name);</pre>

系列閱讀

變量概述

變量來源于數(shù)學(xué)得滤,是計(jì)算機(jī)語言中能 儲(chǔ)存計(jì)算結(jié)果或能表示值 的抽象概念陨献。在一些語言中,變量可能被明確為是能表示可變狀態(tài)懂更、具有存儲(chǔ)空間的抽象(如在 Java 和 Visual Basic 中)眨业。[1~2]

如下圖,當(dāng) Java 程序運(yùn)行過程中沮协,我們需要存儲(chǔ)一些數(shù)據(jù)龄捡,此時(shí)就可以在內(nèi)存開辟一個(gè)個(gè)變量空間來存儲(chǔ)這些可變的數(shù)據(jù)。

image-20210115205243887

通俗的來講:變量就是一個(gè)數(shù)據(jù)存儲(chǔ)空間的表示慷暂,不同數(shù)據(jù)存入具有不同內(nèi)存地址的空間聘殖,彼此相互獨(dú)立。

變量的組成

將數(shù)據(jù)以 變量 形式存入內(nèi)存之后行瑞,我們?cè)趺凑业胶褪褂盟兀?/p>

  • 第1種方式:可以通過內(nèi)存地址值去尋找奸腺。但是這地址值是類似于:0x12345….這種無關(guān)聯(lián)的組成,每次記憶極其繁瑣血久。

  • 第2種方式:使用變量名來快速簡便的找到存入的變量突照,找到變量自然也就找到數(shù)據(jù)了。

其實(shí)變量這個(gè)概念氧吐,可以去類比生活中去酒店入住的場景讹蘑。

酒店就是 JVM 內(nèi)存,房間就是一個(gè)個(gè)的 變量筑舅,房間的名字就是 變量名(畢竟你想想酒店前臺(tái)告訴你房間位置時(shí)座慰,應(yīng)該都是告訴你房間號(hào),而不是給你指路:上3樓直走5個(gè)房間翠拣,右轉(zhuǎn)后第3個(gè)房間對(duì)面)版仔;

酒店還會(huì)為不同客人提供不同類型的房間,滿足特別的需求误墓。JVM 內(nèi)存中邦尊,也是這么來安排數(shù)據(jù)的,我們稱之為變量類型 优烧;房間里入住的客人就是 變量里存儲(chǔ)的值

而且變量即可以變化的量链峭,酒店房間的客人也是變動(dòng)的畦娄,這么理解起來,簡直太容易了。所以查老師建議你熙卡,以后想到變量就多想想開房杖刷。

image-20210105104514611

查老師有話說: 所以,變量的組成是由:變量名驳癌、變量類型滑燃、變量值三個(gè)部分組成。

變量值就沒必要看了颓鲜,它就是你要存儲(chǔ)的數(shù)據(jù)表窘,愛存啥就存啥,但是其他的兩個(gè)部分我們需要詳細(xì)研究研究甜滨。

變量名

變量名也就是標(biāo)識(shí)符乐严,其實(shí)就是為了方便區(qū)分不同的變量。但這個(gè)名也不是隨便起的衣摩,在長久的演化中昂验,我們有了約定俗成的規(guī)范。

  1. 可以使用數(shù)字艾扮、字母既琴,下劃線和 $ 符號(hào)組成,但數(shù)字不能開頭泡嘴。

  2. 不能使用關(guān)鍵字(public甫恩、void等)和保留字(gotodef等)磕诊!關(guān)鍵字:被系統(tǒng)定義了特殊含義的單詞填物。保留字:現(xiàn)在還不是關(guān)鍵字,未來可能有特殊含義霎终。

  3. 起名要見名知意滞磺。 例如:name 一看就知道是名字,password是密碼等莱褒。

  4. 采用小駝峰式命名法(Lower Camel Case)击困。(所謂小駝峰命名法,即首字母小寫广凸,如果有多個(gè)單詞那么后面的每個(gè)單詞首字母大寫阅茶。e.g. userPassword) ;另外因?yàn)橹С窒聞澗€谅海,所以有些時(shí)候會(huì)有下劃線連接法命名的變量脸哀。e.g. user_password

    day02_2_5
  5. 要么名稱全為拼音扭吁,要么全為英文單詞撞蜂。e.g.(X)myMingZi盲镶。

day02_2_x1

數(shù)據(jù)類型

不同類型的值要以不同的形式存儲(chǔ),那么在 Java 中蝌诡,它將不同的值劃分了多少類型呢溉贿?

  • 數(shù)值型有:

    • 整型:

      • byte、short浦旱、int宇色、long
    • 浮點(diǎn)型:

      • float、double
  • 非數(shù)值型: char(字符型) 颁湖、boolean(布爾型) 宣蠕、String(字符串型,一個(gè)比較特別的類型爷狈,先記住它不是基本數(shù)據(jù)類型植影,是引用數(shù)據(jù)類型即可)

下方是數(shù)值型數(shù)據(jù)類型的取值范圍表:

day02_2_7

查老師有話說: 在 Java 中,如果定義一個(gè)變量涎永,整數(shù)數(shù)據(jù)默認(rèn)為 int 類型思币,小數(shù)數(shù)據(jù)默認(rèn)為 double 類型。

因?yàn)?int 和 double 的取值范圍已經(jīng)滿足了我們大多數(shù)時(shí)的使用要求了羡微。

變量的使用步驟

聊完了概念后谷饿,我們接下來一起用一下吧!

第一步:聲明變量妈倔,根據(jù)數(shù)據(jù)類型在內(nèi)存申請(qǐng)空間博投。

<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="java" cid="n82" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">// 數(shù)據(jù)類型 變量名;
int money;</pre>

第二步:賦值,即“將數(shù)據(jù)存儲(chǔ)至對(duì)應(yīng)的內(nèi)存空間”盯蝴。

<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="java" cid="n84" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">// 變量名 = 數(shù)值;
money = 1000;</pre>

tips:第一步和第二步可以合并毅哗。

<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="java" cid="n86" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">// 數(shù)據(jù)類型 變量名 = 數(shù)值;
int money = 1000;</pre>

第三步:使用變量,即“取出數(shù)據(jù)使用”捧挺。(也就是拿著變量名去使用)

<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="java" cid="n88" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">public class Demo1{
public static void main(String[] args){
// 在方法中聲明的變量 被稱為局部變量 局部變量如果沒賦值前是無法使用的
// 第1種使用方式 先聲明再賦值
// 聲明變量(聯(lián)想記憶:在內(nèi)存中開好201雙人房間)
// 此變量將用來存儲(chǔ)銀行卡存款
int money;
// 賦值 =號(hào)不再是數(shù)學(xué)里的相等虑绵,而是表示將右邊的內(nèi)容賦值給左邊的
money = 1000;

// 第2種使用方式 聲明的同時(shí)并賦值
int money1 = 1000;
// 使用變量
System.out.println("我的銀行存款為:" + money1 + "元");
}
}</pre>

再來個(gè)小練習(xí),吸收一下吧闽烙,案例需求如下:

  • 要求使用變量來完成如下操作:

    • 輸出Java課考試最高分:98.5

    • 輸出最高分學(xué)員姓名:張三

    • 輸出最高分學(xué)員性別:男

<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="java" cid="n100" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">// 聲明一個(gè)變量用來存儲(chǔ)最高分
double score = 98.5;
// 如果是float類型來存儲(chǔ)數(shù)據(jù)翅睛,那么必須在值后添加 f/F
// 其實(shí)double類型的后面也應(yīng)該加d/D,但Java中出現(xiàn)的浮點(diǎn)類型默認(rèn)為double黑竞,所以不需要加
// float score1 = 98.5F;
?
// 聲明一個(gè)變量用來存儲(chǔ)學(xué)員姓名
// 雙引號(hào)包裹的內(nèi)容是一個(gè)字符串
String name = "張三";
// 聲明一個(gè)變量用來存儲(chǔ)學(xué)員性別
// 單引號(hào)包裹的事一個(gè)字符
char gender = '男';
?
// 使用變量:使用+號(hào)來拼接使用變量
// 只要是與字符串用+號(hào)拼接的都成為了字符串
System.out.println("最高分為:" + score);
System.out.println("姓名為:" + name);
System.out.println("性別為:" + gender);
// 等價(jià)于下方
System.out.println("最高分為:" + score + "\n姓名為:" + name + "\n性別為:" + gender);</pre>

常量概述

在程序運(yùn)行中捕发,我們需要使用一些數(shù)據(jù),但是這些數(shù)據(jù)在存儲(chǔ)好后不應(yīng)該再次發(fā)生變化(例如:π)很魂。這時(shí)候扎酷,單純使用變量存儲(chǔ),畢竟叫變量遏匆,難保未來可能被不小心重新賦值霞玄。

此時(shí)我們可以使用常量來解決此問題骤铃。

在Java中,其值不能改變的變量被稱為常量坷剧。常量被final修飾,被final修飾則無法二次修改值喊暖。

常量的命名規(guī)范:(為了和變量做出區(qū)別惫企,所以它也有一些小要求)

  1. 常量名所有字母都要大寫。

  2. 如果有多個(gè)單詞陵叽,多個(gè)單詞之間使用下劃線分隔狞尔。例如:MY_NAME

  3. 只能被賦值一次(被final修飾),通常定義時(shí)即對(duì)其初始化巩掺。

<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="java" cid="n114" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">public class Demo2{
public static void main(String[] args){
// 聲明一個(gè)變量 用來表示π
// 被final修飾的變量偏序,無法再進(jìn)行第二次改值 必須進(jìn)行初始賦值,不能分開聲明和賦值
final double PI = 3.14;
// 聲明一個(gè)變量用來表示半徑
int radius = 7;

// 計(jì)算圓的面積 π * r * r
double area = PI * radius * radius;
System.out.println("圓的面積為:" + area);
}
}</pre>

程序交互

在上述的練習(xí)使用中胖替,查老師定義的變量全是自己直接定義好值的研儒。如果現(xiàn)在想要讓變量值變成一個(gè)靈活動(dòng)態(tài)的內(nèi)容,通過鍵盤來靈活輸入独令,這時(shí)候我們就需要使用 Java 給我們準(zhǔn)備好的 Scanner 工具來解決端朵。

Scanner的使用需要一個(gè)固定的步驟!前期牢記即可燃箭!后期學(xué)習(xí)之后就懂了冲呢。

第一步:導(dǎo)入Scanner類。

<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="java" cid="n119" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">import java.util.Scanner;</pre>

第二步:創(chuàng)建Scanner對(duì)象招狸。

<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="java" cid="n121" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">Scanner input = new Scanner(System.in);</pre>

第三步:獲得鍵盤輸入的數(shù)據(jù)敬拓,并自動(dòng)將其轉(zhuǎn)換存儲(chǔ)為int類型的變量now

<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="java" cid="n123" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">int now = input.nextInt();</pre>

<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="java" cid="n124" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">// 1.在類聲明上方 添加導(dǎo)入語句
import java.util.Scanner;
?
public class Demo3{
public static void main(String[] args){
// Scanner 可以用來進(jìn)行鍵盤錄入的API
// 2.創(chuàng)建Scanner對(duì)象 input就是個(gè)變量名
Scanner input = new Scanner(System.in);

// 3.使用Scanner的方法 對(duì)象名.xxx()來調(diào)用方法
System.out.print("請(qǐng)輸入您的年齡:");
int age = input.nextInt();

System.out.println("輸入的年齡為:" + age);
}
}</pre>

類型轉(zhuǎn)換

上述就是變量的基本玩法裙戏,簡單嗎乘凸?接下來我們?cè)倭私庖恍┨貏e的小知識(shí),加深你對(duì)數(shù)據(jù)類型的理解挽懦。

自動(dòng)類型轉(zhuǎn)換

看一下下方的代碼翰意,double類型的變量竟然在存儲(chǔ)整數(shù)類型?而且它不會(huì)出現(xiàn)任何語法錯(cuò)誤信柿?

<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="java" cid="n129" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">// 自動(dòng)類型轉(zhuǎn)換
double num1 = 10;
System.out.println(num1); // 10.0
// 兩個(gè)操作數(shù)只要其中一個(gè)是double類型的冀偶,那么計(jì)算結(jié)果就會(huì)提升為double類型
// 取值范圍小的 自動(dòng)類型轉(zhuǎn)換為 取值范圍大的
double num2 = 10 + 10.1;
System.out.println(num2); // 20.1</pre>

這是因?yàn)樵?Java 中,如果兩種類型相互兼容(例如整型和浮點(diǎn)型同屬數(shù)值類型)渔嚷,那么取值范圍小的類型(精度低)进鸠,可以自動(dòng)類型轉(zhuǎn)換為取值范圍大的類型(精度高)。

強(qiáng)制類型轉(zhuǎn)換

有自動(dòng)類型轉(zhuǎn)換形病,那應(yīng)該也有非自動(dòng)的客年,我們稱之為強(qiáng)制類型轉(zhuǎn)換霞幅。

看個(gè)小例子:去年Apple筆記本所占市場份額是20,今年增長市場份額是9.8量瓜,求今年所占份額司恳?

<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="java" cid="n134" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">// apple 筆記本市場份額
int before = 20;
// 增長的份額
double rise = 9.8;
// 現(xiàn)在的份額
int now = (int)before + rise; // 29 不是四舍五入,是直接取整了</pre>

我們發(fā)現(xiàn)绍傲,上面的代碼最后結(jié)果使用了int來存儲(chǔ)扔傅,但是卻需要用(int)來標(biāo)注一下,否則會(huì)提示語法錯(cuò)誤烫饼。這是因?yàn)楫?dāng)intdouble型數(shù)據(jù)計(jì)算后猎塞,它們的結(jié)果值已經(jīng)自動(dòng)類型轉(zhuǎn)換為了double型,而最后又要將其轉(zhuǎn)換為int型杠纵,也就是將一個(gè)取值范圍大(精度高)的數(shù)據(jù)荠耽,存儲(chǔ)到取值范圍小的(精度低)類型里,那自然會(huì)損失精度(小數(shù)點(diǎn)位的值全丟了)比藻,所以需要自己手動(dòng)標(biāo)注一下铝量,表明我們自己認(rèn)可這件事。

理解類型轉(zhuǎn)換的故事舉例: 假設(shè)現(xiàn)在有一個(gè)100斤的小麥口袋韩容,還有一個(gè)40斤的大米口袋款违,如果我想把兩個(gè)口袋換著裝東西,40斤大米口袋內(nèi)的大米自然可以放到100斤小麥口袋里(自動(dòng)類型轉(zhuǎn)換)群凶,但是反之則不行插爹,如果非要這么做,多余的小麥肯定會(huì)灑出來(強(qiáng)制類型轉(zhuǎn)換)请梢。

<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="java" cid="n138" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 0px; margin-top: 15px; width: inherit;">// 口袋:100斤小麥
double mian = 100;
// 口袋:40斤大米
int mi = 40;
?
mi = (int)mian;</pre>

查老師出題環(huán)節(jié)

變量練習(xí)

需求:使用變量分別存儲(chǔ)個(gè)人基本信息赠尾,然后逐行輸出個(gè)人基本信息。

提示:個(gè)人基本信息可包括:姓名毅弧、年齡气嫁、性別、身高够坐、體重寸宵、婚否等

Scanner練習(xí)

需求:使用 Scanner 分別錄入個(gè)人基本信息、并逐行輸出元咙。

提示:個(gè)人基本信息可包括:姓名梯影、年齡、性別庶香、身高甲棍、體重、婚否等

參考文獻(xiàn)

[1]譚浩強(qiáng). C程序設(shè)計(jì)(第4版):清華大學(xué)出版社赶掖,2010.6

[2]明日科技. Visual Basic從入門到精通:清華大學(xué)出版社 感猛,2017.6

后記

好了七扰,變量和常量的介紹也就到這兒結(jié)束了,本篇的作業(yè)請(qǐng)微信搜索關(guān)注: 查老師的講義 陪白,然后回復(fù) 變量和常量作業(yè) 即可颈走。

無論是學(xué)習(xí)任何編程語言,變量都是必不可少的一個(gè)基礎(chǔ)內(nèi)容咱士,所以疫鹊,結(jié)合上一篇 《Java語法 | 程序的那點(diǎn)事兒》 好好在腦海中構(gòu)想一下變量在內(nèi)存中的使用吧。

你們聽懂了嗎

查老師有話說: 對(duì)于技術(shù)的學(xué)習(xí)司致,查老師一貫遵循的步驟是:先用最最簡單的 demo 讓它跑起來,然后學(xué)學(xué)它的最最常用 API 和 配置讓自己能用起來聋迎,最后熟練使用的基礎(chǔ)上脂矫,在空閑時(shí)嘗試閱讀它的源碼讓自己能夠洞徹它的運(yùn)行機(jī)制,部分問題出現(xiàn)的原因霉晕,同時(shí)借鑒這些技術(shù)實(shí)現(xiàn)來提升自己的代碼高度庭再。

所以在查老師的文章中,前期基本都是小白文牺堰,僅僅穿插很少量的源碼研究拄轻。當(dāng)然等小白文更新多了,你們還依然喜歡伟葫,后期會(huì)不定時(shí)專門對(duì)部分技術(shù)的源碼進(jìn)行解析恨搓。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市筏养,隨后出現(xiàn)的幾起案子斧抱,更是在濱河造成了極大的恐慌,老刑警劉巖渐溶,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件辉浦,死亡現(xiàn)場離奇詭異,居然都是意外死亡茎辐,警方通過查閱死者的電腦和手機(jī)宪郊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拖陆,“玉大人弛槐,你說我怎么就攤上這事∧轿担” “怎么了丐黄?”我有些...
    開封第一講書人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長孔飒。 經(jīng)常有香客問我灌闺,道長艰争,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任桂对,我火速辦了婚禮甩卓,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蕉斜。我一直安慰自己逾柿,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開白布宅此。 她就那樣靜靜地躺著机错,像睡著了一般。 火紅的嫁衣襯著肌膚如雪父腕。 梳的紋絲不亂的頭發(fā)上弱匪,一...
    開封第一講書人閱讀 49,829評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音璧亮,去河邊找鬼萧诫。 笑死,一個(gè)胖子當(dāng)著我的面吹牛枝嘶,可吹牛的內(nèi)容都是我干的帘饶。 我是一名探鬼主播,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼群扶,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼及刻!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起穷当,我...
    開封第一講書人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤提茁,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后馁菜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體茴扁,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年汪疮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了峭火。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡智嚷,死狀恐怖卖丸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情盏道,我是刑警寧澤稍浆,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響衅枫,放射性物質(zhì)發(fā)生泄漏嫁艇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一弦撩、第九天 我趴在偏房一處隱蔽的房頂上張望步咪。 院中可真熱鬧,春花似錦益楼、人聲如沸猾漫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽悯周。三九已至,卻和暖如春陪竿,著一層夾襖步出監(jiān)牢的瞬間队橙,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來泰國打工萨惑, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人仇矾。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓庸蔼,卻偏偏與公主長得像,于是被迫代替她去往敵國和親贮匕。 傳聞我的和親對(duì)象是個(gè)殘疾皇子姐仅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容