摘要:事實(shí)上,的作用是在寫(xiě)程序的時(shí)候,不用把類(lèi)或者變量的長(zhǎng)長(zhǎng)的全名打出來(lái)。為了避免與其他下的類(lèi)混淆,它有一個(gè)全名是。這就是的作用了。同樣,每個(gè)文件的第一句是告訴編譯器,我這個(gè)類(lèi)是在這個(gè)下面的。
C語(yǔ)言中的#include
學(xué)習(xí)C語(yǔ)言的時(shí)候,大家都寫(xiě)過(guò)這么一個(gè)hello world
#includeint main() { printf("hello, world"); return 0; }
但如果沒(méi)有第一句#include
因?yàn)閜rintf這個(gè)函數(shù)沒(méi)有被聲明,因?yàn)镃語(yǔ)言要求,函數(shù)必須先聲明再調(diào)用
事實(shí)上,#include
stdio.h包括的是對(duì)C語(yǔ)言標(biāo)準(zhǔn)庫(kù)中一系列函數(shù)的聲明(當(dāng)然也有printf的),通常它在你的編譯器安裝位置的include目錄下。編譯器是會(huì)默認(rèn)的去這個(gè)目錄尋找你include的文件的。
所以,#include
知道了原理,我們有另一種方式去成功的調(diào)用printf函數(shù),那就是自己聲明它。
int printf(const char *format, ...); int main() { printf("hello, world"); return 0; }
相信我,這個(gè)程序也是能編譯成功而且輸出正確結(jié)果的,因?yàn)榈谝痪湓捄?b>#include
如果你以為import跟#include一樣是把整個(gè)文件包含進(jìn)來(lái),那就錯(cuò)了。事實(shí)上,import的作用是在寫(xiě)程序的時(shí)候,不用把類(lèi)或者變量的長(zhǎng)長(zhǎng)的全名打出來(lái)。
說(shuō)到這里,不得不說(shuō)一下Java組織源代碼的方式。
Java的每個(gè)public的類(lèi)都是一個(gè)文件,它位于某個(gè)package之中,而package則是許多文件夾構(gòu)成的一個(gè)路徑。
如下圖,假設(shè)我的Java工程的源代碼都在src文件夾下,cc.chenjr.mypackage就是一個(gè)package(注意它實(shí)際上就是文件夾),MyClass是這個(gè)package下的一個(gè)類(lèi)。
src └── cc └── chenjr └── mypackage └── MyClass.java
為了避免與其他package下的MyClass類(lèi)混淆,它有一個(gè)全名是cc.chenjr.mypackage.MyClass。比如System的全名是java.lang.System。我們不用去import java.lang.System是因?yàn)榫幾g器幫我們做了這件事。
那在別的文件中要用cc.chenjr.mypackage.MyClass的時(shí)候,打全名實(shí)在太麻煩,所以我們就告訴編譯器,我這個(gè)文件里的MyClass就是cc.chenjr.mypackage.MyClass而不是其他的MyClass。這就是import的作用了。
同樣,每個(gè).java文件的第一句package cc.chenjr.mypackage;是告訴編譯器,我這個(gè)類(lèi)是在這個(gè)package下面的。如果這個(gè)類(lèi)的文件被移動(dòng)到別的文件夾下,是編譯不了的。
當(dāng)然,如果我們非要用到兩個(gè)MyClass,其中有一個(gè)就不得不打全名了,比如這樣,假設(shè)我自己有和Java庫(kù)中名字沖突的類(lèi)并import了它們,我想用Java的標(biāo)準(zhǔn)庫(kù)的類(lèi)就只能打全名了。
package cc.chenjr.mypackage; import cc.chenjr.mypackage.List; import cc.chenjr.mypackage.ArrayList; public class Test { public static void main(String[] args) { java.util.List list = new java.util.ArrayList(); } }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/64197.html
摘要:結(jié)果在安裝完之后,安裝也要安裝之后,運(yùn)行常規(guī)的測(cè)試函數(shù)返回的數(shù)字是,排除問(wèn)題的方法就是把已知可以的子模塊都先運(yùn)行掉。說(shuō)了這么多,它到底了哪些子模塊我把官網(wǎng)上面的里介紹的所有帶有的子模塊都運(yùn)行了一遍。 環(huán)境Python3.6.8pygame1.9.4 貼上報(bào)錯(cuò)源碼: import pygame my_font = pygame.font.SysFont(arial, 16) my_fon...
摘要:小安分析的數(shù)據(jù)主要是用戶(hù)使用代理訪問(wèn)日志記錄信息,要分析的原始數(shù)據(jù)以的形式存儲(chǔ)。下面小安帶小伙伴們一起來(lái)管窺管窺這些數(shù)據(jù)。在此小安一定一定要告訴你,小安每次做數(shù)據(jù)分析時(shí)必定使用的方法方法。 隨著網(wǎng)絡(luò)安全信息數(shù)據(jù)大規(guī)模的增長(zhǎng),應(yīng)用數(shù)據(jù)分析技術(shù)進(jìn)行網(wǎng)絡(luò)安全分析成為業(yè)界研究熱點(diǎn),小安在這次小講堂中帶大家用Python工具對(duì)風(fēng)險(xiǎn)數(shù)據(jù)作簡(jiǎn)單分析,主要是分析蜜罐日志數(shù)據(jù),來(lái)看看一般大家都使用代理i...
摘要:原文如果按面向?qū)ο蟮乃悸啡ブv的,還是很難去理解,我們可以從另一個(gè)方向去理解一下它。 原文:https://legacy.ofcrab.com/press/javascript-new.html 如果按面向?qū)ο蟮乃悸啡ブv JavaScript 的 new,還是很難去理解,我們可以從另一個(gè)方向去理解一下它。 你這些人類(lèi) 我是一名程序員,也是一個(gè)人,我可能: 有一個(gè)響亮亮的名稱(chēng) 在某一天出...
摘要:最近看了一下這個(gè)框架,寫(xiě)點(diǎn)東西當(dāng)個(gè)筆記。函數(shù)會(huì)迭代屬性為的,逐一將其注冊(cè),的方法繼承自父類(lèi),關(guān)鍵的就是在這個(gè)里注冊(cè)的。 最近看了一下 laravel 這個(gè)框架,寫(xiě)點(diǎn)東西當(dāng)個(gè)筆記。跟著官網(wǎng)上的說(shuō)明 install 好一個(gè)項(xiàng)目后,在項(xiàng)目根目錄執(zhí)行命令php artisan serve就可以開(kāi)啟一個(gè)簡(jiǎn)易的服務(wù)器進(jìn)行開(kāi)發(fā),這個(gè)命令到底做了什么,看了一下代碼,在這里簡(jiǎn)要描述一下自己的看法。 先說(shuō)...
閱讀 671·2023-04-25 18:59
閱讀 1211·2021-09-22 16:00
閱讀 1889·2021-09-22 15:42
閱讀 3594·2021-09-22 15:27
閱讀 1246·2019-08-30 15:54
閱讀 1104·2019-08-30 11:16
閱讀 2445·2019-08-29 16:24
閱讀 820·2019-08-29 12:14