前言
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ù)管理概念就是 變量 。
不知道婴削,大家是否還記得在《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ù)。
通俗的來講:變量就是一個(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)的畦娄,這么理解起來,簡直太容易了。所以查老師建議你熙卡,以后想到變量就多想想開房杖刷。
查老師有話說: 所以,變量的組成是由:變量名驳癌、變量類型滑燃、變量值三個(gè)部分組成。
變量值就沒必要看了颓鲜,它就是你要存儲(chǔ)的數(shù)據(jù)表窘,愛存啥就存啥,但是其他的兩個(gè)部分我們需要詳細(xì)研究研究甜滨。
變量名
變量名也就是標(biāo)識(shí)符乐严,其實(shí)就是為了方便區(qū)分不同的變量。但這個(gè)名也不是隨便起的衣摩,在長久的演化中昂验,我們有了約定俗成的規(guī)范。
可以使用數(shù)字艾扮、字母既琴,下劃線和
$
符號(hào)組成,但數(shù)字不能開頭泡嘴。不能使用關(guān)鍵字(
public
甫恩、void
等)和保留字(goto
、def
等)磕诊!關(guān)鍵字:被系統(tǒng)定義了特殊含義的單詞填物。保留字:現(xiàn)在還不是關(guān)鍵字,未來可能有特殊含義霎终。起名要見名知意滞磺。 例如:
name
一看就知道是名字,password
是密碼等莱褒。-
采用小駝峰式命名法(Lower Camel Case)击困。(所謂小駝峰命名法,即首字母小寫广凸,如果有多個(gè)單詞那么后面的每個(gè)單詞首字母大寫阅茶。
e.g. userPassword
) ;另外因?yàn)橹С窒聞澗€谅海,所以有些時(shí)候會(huì)有下劃線連接法命名的變量脸哀。e.g. user_password
。 要么名稱全為拼音扭吁,要么全為英文單詞撞蜂。
e.g.(X)myMingZi
盲镶。
數(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ù)類型的取值范圍表:
查老師有話說: 在 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ū)別惫企,所以它也有一些小要求)
常量名所有字母都要大寫。
如果有多個(gè)單詞陵叽,多個(gè)單詞之間使用下劃線分隔狞尔。例如:
MY_NAME
只能被賦值一次(被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)int
和double
型數(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)行解析恨搓。