Java Basics ? ? ? ? Java基礎(chǔ)

Topics in this section include:

本節(jié)主題包括:

What makes Java programs portable, secure, and robust

是什么使Java程序具有可移植性、安全性和健壯性

The structure of Java applets and applications

Java小程序和應(yīng)用程序的結(jié)構(gòu)

How Java applications are executed

Java應(yīng)用程序的執(zhí)行方式

How applets are invoked and executed

如何調(diào)用和執(zhí)行小程序

The Java Language, Part I

Java語(yǔ)言,第一部分

Portability

可移植性

Java programs are portable across operating systems and hardware environments. Portability is to your advantage because

Java程序可以跨操作系統(tǒng)和硬件環(huán)境移植??梢浦残允悄愕膬?yōu)勢(shì),因?yàn)?/p>

You need only one version of your software to serve a broad market.

你只需要一個(gè)版本的軟件就可以服務(wù)于廣闊的市場(chǎng)。

The Internet, in effect, becomes one giant, dynamic library.

實(shí)際上,互聯(lián)網(wǎng)已經(jīng)成為一個(gè)巨大的、動(dòng)態(tài)的圖書(shū)館。

You are no longer limited by your particular computer platform.

您不再受特定計(jì)算機(jī)平臺(tái)的限制。

Three features make Java String programs portable:

有三個(gè)特性使Java字符串程序可移植:

1. The language. The Java language is completely specified; all data-type sizes and formats are defined as part of the language. By contrast, C/C++ leaves these "details" up to the compiler implementor, and many C/C++ programs therefore are not portable.

1. 語(yǔ)言。Java語(yǔ)言是完全指定的;所有數(shù)據(jù)類(lèi)型大小和格式都被定義為該語(yǔ)言的一部分。相比之下,C/C++將這些“細(xì)節(jié)”留給編譯者實(shí)現(xiàn),因此許多C/C++程序是不可移植的。

2. The library. The Java class library is available on any machine with a Java runtime system, because a portable program is of no use if you cannot use the same class library on every platform. Window-manager function calls in a Mac application written in C/C++, for example, do not port well to a PC.(Byte accounts for 1 byte, short for 2 bytes, int for 4 bytes, long for 8 bytes, float for 4 bytes, double for 8 bytes, char for 2 bytes, Boolean for 4 bytes)

2. 庫(kù)。Java類(lèi)庫(kù)在任何帶有Java運(yùn)行時(shí)系統(tǒng)的機(jī)器上都是可用的,因?yàn)槿绻荒茉诿總€(gè)平臺(tái)上使用相同的類(lèi)庫(kù),那么可移植程序是沒(méi)有用的。窗口管理器函數(shù)調(diào)用在用C/C++編寫(xiě)的MAC應(yīng)用程序中,例如,不很好地向PC機(jī)端口傳送。(byte 占1個(gè)字節(jié),short 占2個(gè)字節(jié),int 占4個(gè)字節(jié),long 占8個(gè)字節(jié),float 占4個(gè)字節(jié),double 占8個(gè)字節(jié),char 占2個(gè)字節(jié),boolean 占4個(gè)字節(jié))

The byte code. The Java runtime system does not compile your source code directly into machine language, an inflexible and nonportable representation of your program. Instead, Java programs are translated into machine-independent byte code. The byte code is easily interpreted and therefore can be executed on any platform having a Java runtime system.

字節(jié)碼。Java運(yùn)行時(shí)系統(tǒng)不會(huì)將源代碼直接編譯成機(jī)器語(yǔ)言,這是程序的一種不靈活和不可移植的表示形式。相反,Java程序被翻譯成獨(dú)立于機(jī)器的字節(jié)碼。字節(jié)碼易于解釋?zhuān)虼丝梢栽诰哂蠮ava運(yùn)行時(shí)系統(tǒng)的任何平臺(tái)上執(zhí)行。

Security

安全性

The Java language is secure in that it is very difficult to write incorrect code or viruses that can corrupt/steal your data, or harm hardware such as hard disks. There are two main lines of defense:

Java語(yǔ)言是安全的,因?yàn)楹茈y編寫(xiě)錯(cuò)誤的代碼或病毒,這些代碼或病毒會(huì)損壞/竊取您的數(shù)據(jù),或損害硬盤(pán)等硬件。主要有兩條防線(xiàn):

? Interpreter level:

?口譯員級(jí)別:

? No pointer arithmetic

?無(wú)指針?biāo)惴?/p>

? Garbage collection

?垃圾收集

? Array bounds checking

?陣列邊界檢查

? No illegal data conversions

?無(wú)非法數(shù)據(jù)轉(zhuǎn)換

? Browser level (applies to applets only):

?瀏覽器級(jí)別(僅適用于小程序):

? Sockets back to host only

?插座僅回主機(jī)

? No calls to native methods

?不調(diào)用本機(jī)方法

Robustness

健壯性

The Java language is robust. It has several features designed to avoid crashes during program execution, including:

穩(wěn)健性

Java語(yǔ)言是健壯的。它有幾個(gè)旨在避免程序執(zhí)行期間崩潰的功能,包括:

? No pointer arithmetic

?無(wú)指針?biāo)惴?/p>

? Garbage collection--no bad addresses

?回收站--無(wú)錯(cuò)誤地址

? Array and string bounds checking

?數(shù)組和字符串邊界檢查

? No jumping to bad method addresses

?無(wú)跳轉(zhuǎn)到錯(cuò)誤方法地址

? Interfaces and exceptions

?接口和異常

Java Program Structure

Java程序結(jié)構(gòu)

A file containing Java source code is considered a compilation unit. Such a compilation unit contains a set of classes and, optionally, a package definition to group related classes together. Classes contain data and method members that specify the state and behavior of the objects in your program.

包含Java源代碼的文件被視為編譯單元。這樣的編譯單元包含一組類(lèi)和一個(gè)包定義(可選),可以將相關(guān)類(lèi)分組在一起。類(lèi)包含指定程序中對(duì)象的狀態(tài)和行為的數(shù)據(jù)和方法成員。

Java programs come in two flavors:

Java程序有兩種風(fēng)格:

? Standalone applications that have no initial context such as a pre-existing main window

?沒(méi)有初始上下文的獨(dú)立應(yīng)用程序,如預(yù)先存在的主窗口

? Applets for WWW programming

?用于WWW編程的小程序

The major differences between applications and applets are:

應(yīng)用程序和小程序之間的主要區(qū)別是:

? Applets are not allowed to use file I/O and sockets (other than to the host platform). Applications do not have these restrictions.

?小程序不允許使用文件I/O和套接字(主機(jī)平臺(tái)除外)。應(yīng)用程序沒(méi)有這些限制。

? An applet must be a subclass of the Java Applet class. Aplications do not need to subclass any particular class.

?小程序必須是Java小程序類(lèi)的子類(lèi)。應(yīng)用程序不需要對(duì)任何特定類(lèi)進(jìn)行子類(lèi)化。

? Unlike applets, applications can have menus.

?與小程序不同,應(yīng)用程序可以有菜單。

? Unlike applications, applets need to respond to predefined lifecycle messages from the WWW browser in which they're running.

?與應(yīng)用程序不同,小程序需要響應(yīng)運(yùn)行所在的WWW瀏覽器中預(yù)定義的生命周期消息

Java Program Execution

Java程序執(zhí)行

The Java byte-code compiler translates a Java source file into machine- independent byte code. The byte code for each publicly visible class is placed in a separate file, so that the Java runtime system can easily find it. If your program instantiates an object of class A, for example, the class loader searches the directories listed in your CLASSPATH environment variable for a file called A.class that contains the class definition and byte code for class A.

Java字節(jié)碼編譯器將Java源文件轉(zhuǎn)換為與機(jī)器無(wú)關(guān)的字節(jié)碼。每個(gè)公共可見(jiàn)類(lèi)的字節(jié)碼都放在一個(gè)單獨(dú)的文件中,這樣Java運(yùn)行時(shí)系統(tǒng)就可以很容易地找到它。例如,如果程序?qū)嵗祟?lèi)A的對(duì)象,則類(lèi)裝入器將在CLASSPATH環(huán)境變量中列出的目錄中搜索名為A.class的文件,該文件包含類(lèi)A的類(lèi)定義和字節(jié)碼。

There is no link phase for Java programs; all linking is done dynamically at runtime.

Java程序沒(méi)有鏈接階段;所有鏈接都是在運(yùn)行時(shí)動(dòng)態(tài)完成的。

The following diagram shows an example of the Java compilation and execution sequence for a source file named A.java containing public class A and non-public class B:

下圖顯示了包含公共類(lèi)a和非公共類(lèi)B的名為a.Java的源文件的Java編譯和執(zhí)行序列的示例:



Java programs are, in effect, distributed applications. You may think of them as a collection of DLLs (dynamically loadable libraries) that are linked on demand at runtime. When you write your own Java applications, you will often integrate your program with already-existing portions of code that reside on other machines.

實(shí)際上,Java程序是分布式應(yīng)用程序。您可能認(rèn)為它們是按需鏈接的DLL(動(dòng)態(tài)可加載庫(kù))的集合? 運(yùn)行時(shí)。當(dāng)您編寫(xiě)自己的Java應(yīng)用程序時(shí),通常會(huì)將程序與駐留在其他機(jī)器上的現(xiàn)有代碼部分集。

A Simple Application

一個(gè)簡(jiǎn)單的應(yīng)用程序

Consider the following trivial application that prints "hi there" to standard output:

考慮以下將“hi there”打印到標(biāo)準(zhǔn)輸出的普通應(yīng)用程序:

public class TrivialApplication {

? // args[0] is first argument

// args[1] the second

public static void main(String args[]) {

System.out.println("hi there");

}

}

public公共的,公開(kāi)的,first argument第一個(gè)參數(shù),the second第二個(gè),static靜的,靜態(tài)的,void無(wú)效,無(wú)返回值,空,main主要的,string args字符串參數(shù),System.out.println系統(tǒng)輸出打印

The command java TrivialApplication tells the Java runtime system to begin with the class file TrivialApplication.class and to look in that file for a method with the signature:

命令java TrivialApplication告訴java運(yùn)行時(shí)系統(tǒng)從類(lèi)文件開(kāi)始應(yīng)用程序類(lèi)在該文件中查找具有簽名的方法:

? public static void main(String args[]);

The main() method will always reside in one of your class files. The Java language does not allow methods outside of class definitions. The class, in effect, creates scoped symbol StartingClassName.main for your main() method.

main()方法將始終駐留在一個(gè)類(lèi)文件中。Java語(yǔ)言不允許類(lèi)定義之外的方法。實(shí)際上,類(lèi)創(chuàng)建了作用域符號(hào)StartingClassName.main對(duì)于main()方法。

Applet Execution

小程序執(zhí)行

An applet is a Java program that runs within a Java-compatible WWW browser or in an appletviewer. To execute your applet, the browser:

小程序是一種Java程序,它在與Java兼容的WWW瀏覽器或應(yīng)用程序查看器中運(yùn)行。要執(zhí)行小程序,瀏覽器:

? Creates an instance of your applet

?創(chuàng)建小程序的實(shí)例

? Sends messages to your applet to automatically invoke predefined lifecycle methods

?向小程序發(fā)送消息以自動(dòng)調(diào)用預(yù)定義的生命周期方法

The predefined methods automatically invoked by the runtime system are:

運(yùn)行時(shí)系統(tǒng)自動(dòng)調(diào)用的預(yù)定義方法包括:

init().ThismethodtakestheplaceoftheAppletconstructorandisonlycalled once during applet creation. Instance variables should be initialized in this method. GUI components such as buttons and scrollbars should be added to the GUI in this method.

?init()。此方法代替小程序構(gòu)造函數(shù),在創(chuàng)建小程序期間只調(diào)用一次。實(shí)例變量應(yīng)在此方法中初始化。在此方法中,應(yīng)該將按鈕和滾動(dòng)條等GUI組件添加到GUI中。

start(). This method is called once after init() and whenever your applet is revisited by your browser, or when you deiconify your browser. This method should be used to start animations and other threads.

?start()。此方法在init()之后以及瀏覽器重新訪(fǎng)問(wèn)小程序時(shí)或取消瀏覽器身份時(shí)調(diào)用一次。此方法應(yīng)用于啟動(dòng)動(dòng)畫(huà)和其他線(xiàn)程。

paint(Graphicsg).Thismethodiscalledwhentheappletdrawingareaneeds to be redrawn. Anything not drawn by contained components must be drawn in this method. Bitmaps, for example, are drawn here, but buttons are not because they handle their own painting.

paint(Graphicsg)。當(dāng)需要重新繪制小程序繪圖區(qū)域時(shí),將調(diào)用此方法。任何未由包含的組件繪制的內(nèi)容都必須在此方法中繪制。例如,位圖是在這里繪制的,但是按鈕不是,因?yàn)樗鼈兲幚碜约旱睦L制。

stop().Thismethodiscalledwhenyouleaveanappletorwhenyouiconify your browser. The method should be used to suspend animations and other threads so they do not burden system resources unnecessarily. It is guaranteed to be called before destroy().

stop()。離開(kāi)小程序或圖標(biāo)化瀏覽器時(shí),將調(diào)用此方法。該方法應(yīng)該用于掛起動(dòng)畫(huà)和其他線(xiàn)程,這樣它們就不會(huì)給系統(tǒng)資源帶來(lái)不必要的負(fù)擔(dān)。它保證在destroy()之前被調(diào)用。

destroy().Thismethodiscalledwhenanappletterminates,forexample,when quitting the browser. Final clean-up operations such as freeing up system resources with dispose() should be done here. The dispose() method of Frame removes the menu bar. Therefore, do not forget to call super.dispose() if you override the default behavior.

destroy()。當(dāng)小程序終止時(shí)(例如退出瀏覽器時(shí))調(diào)用此方法。最后的清理操作,比如用dispose()釋放系統(tǒng)資源,應(yīng)該在這里完成。Frame的dispose()方法刪除菜單欄。所以,別忘了打電話(huà) super.dispose()如果重寫(xiě)默認(rèn)行為。

Comments

注釋

Java comments are the same as C++ comments, i.e.,

java注釋與C++注釋相同,即

/* C-style block comments */

/*C樣式塊注釋*/

where all text between the opening /* and closing */ is ignored, and

忽略開(kāi)頭/*和結(jié)尾*/之間的所有文本,以及

// C++ style single-line comments

//C++風(fēng)格的單行注釋

where all text from the opening // to the end of the line is ignored.

從開(kāi)頭//到行尾的所有文本都被忽略。

Note that these two comments can make a very useful combination. C-style comments (/* ... */) cannot be nested, but can contain C++ style comments. This leads to the interesting observation that if you always use C++-style comments (// ...), you can easily comment out a section of code by surrounding it with C-style comments. So try to use C++ style comments for your "normal" code commentary, and reserve C-style comments for commenting out sections of code.

請(qǐng)注意,這兩個(gè)注釋可以構(gòu)成非常有用的組合。C樣式注釋?zhuān)?*。。。*/)不能嵌套,但可以包含C++風(fēng)格的注釋。這就引起了一個(gè)有趣的觀(guān)察,如果你總是使用C++風(fēng)格的注釋?zhuān)?/…),你可以通過(guò)用C風(fēng)格的注釋來(lái)包圍它來(lái)輕松地注釋一段代碼。因此,嘗試使用C++風(fēng)格的注釋來(lái)進(jìn)行“正常”代碼注釋?zhuān)⒈A鬋風(fēng)格的注釋來(lái)注釋代碼段。

The Java language also has a document comment:

Java語(yǔ)言還有一個(gè)文檔注釋?zhuān)?/p>

/** document comment */

/**文件注釋*/

These comments are processed by the javadoc program to generate documentation from your source code. For example,

這些注釋由javadoc程序處理以生成源代碼中的文檔。例如,

/** This class does blah blah blah */

/**這類(lèi)什么都沒(méi)有*/

class Blah {

? /** This method does nothing

這種方法不起任何作用

? ? /**

? * This is a multiple line comment.

? * The leading * is not placed in documentation.

? */

/**

這是多行注釋。

前導(dǎo)

不在文檔中。

*/

? public void nothing() {;}

}

Declarations

聲明

A Java variable may refer to an object, an array, or an item of primitive type. Variables are defined using the following simple syntax:

Java變量可以引用一個(gè)對(duì)象、一個(gè)數(shù)組或一個(gè)基元類(lèi)型的項(xiàng)。使用以下簡(jiǎn)單語(yǔ)法定義變量:

TypeName variableName;

類(lèi)型名,變量名;

For example,

例如

int a;? ? // defines an integer

定義一個(gè)整數(shù)

int[] b;? // defines a reference to array of ints

定義對(duì)整數(shù)數(shù)組的引用;

Vector v;? // reference to a Vector object

對(duì)向量對(duì)象的引用基本類(lèi)型

Primitive Types

基本類(lèi)型

The Java language has the following primitive types:

Java語(yǔ)言有以下基本類(lèi)型:

Primitive Types

基本類(lèi)型

boolean

true/false

byte

8 bit

char

16 bits (UNICODE)

short

16 bits

int

32 bits

long

64 bits

float

32 bits IEEE 754-1985

double

64 bits IEEE 754-1985

Java int types may not be used as boolean types and are always signed.

java int類(lèi)型不能用作布爾類(lèi)型,并且總是有符號(hào)

Objects

對(duì)象

A simple C++ object or C struct definition such as "Button b;" allocates memory on the stack for a Button object and makes b refer to it. By contrast, you must specifically instantiate Java objects with the new operator. For example,

一個(gè)簡(jiǎn)單的C++對(duì)象或C結(jié)構(gòu)定義,比如“按鈕B”,在按鈕對(duì)象的堆棧上分配內(nèi)存,并使B引用它。相反,您必須用新操作符具體地實(shí)例化Java對(duì)象。例如,


As the accompanying figure shows, this code places a reference b to the Button object on the stack and allocates memory for the new object on the heap.

如附圖所示,此代碼將引用b放置到堆棧上的Button對(duì)象,并為堆上的新對(duì)象分配內(nèi)存。

The equivalent C++ and C statements that would allocate memory on the heap would be:

將在堆上分配內(nèi)存的等效C++和C語(yǔ)句將是:

// C++ code

c++代碼

Button *b = NULL;

// declare a new Button pointer

聲明一個(gè)新按鈕指針

b = new Button("OK");

// point it to a new Button

指向一個(gè)新按鈕

/* C code */

c代碼

Button *b = NULL;

/* declare a new Button pointer */

聲明一個(gè)新的按鈕指針

b = calloc(1, sizeof(Button));

/* allocate space for a Button */

為按鈕分配空間

init(b, "OK");

/* something like this to init b */

類(lèi)似于這樣的內(nèi)容到init b

All Java objects reside on the heap; there are no objects stored on the stack. Storing objects on the heap does not cause potential memory leakage problems because of garbage collection.

所有Java對(duì)象都駐留在堆上;堆棧上沒(méi)有存儲(chǔ)任何對(duì)象。在堆上存儲(chǔ)對(duì)象不會(huì)因?yàn)槔占鴮?dǎo)致潛在的內(nèi)存泄漏問(wèn)題。

Each Java primitive type has an equivalent object type, e.g., Integer, Byte, Float, Double. These primitive types are provided in addition to object types purely for efficiency. An int is much more efficient than an Integer.

每個(gè)Java原語(yǔ)類(lèi)型都有一個(gè)等價(jià)的對(duì)象類(lèi)型,例如Integer、Byte、Float、Double。除了對(duì)象類(lèi)型之外,還提供這些基本類(lèi)型純粹是為了提高效率。整數(shù)比整數(shù)有效得多。

Strings

字符串

Java string literals look the same as those in C/C++, but Java strings are real objects, not pointers to memory. Java strings may or may not be null-terminated. Every string literal such as

java字符串文字看起來(lái)與C++中的文字相同,但是java字符串是真實(shí)對(duì)象,而不是指向內(nèi)存的指針。Java字符串可能以null結(jié)尾,也可能不以null結(jié)尾。每個(gè)字符串文本,例如

"a string literal"

字符串文字

is interpreted by the Java compiler as

由Java編譯器解釋為

new String("a string literal")

Java strings are constant in length and content. For variable-length strings, use StringBuffer objects.

Java字符串的長(zhǎng)度和內(nèi)容是恒定的。對(duì)于可變長(zhǎng)度字符串,請(qǐng)使用StringBuffer對(duì)象。

Strings may be concatenated by using the plus operator:

可以使用加號(hào)運(yùn)算符連接字符串:

String s = "one" + "two"; // s == "onetwo"

String s=“1”+“2”;//s==“1 2”

You may concatenate any object to a string. You use the toString() method to convert objects to a String, and primitive types are converted by the compiler. For example,

可以將任何對(duì)象連接到字符串。使用toString()方法將對(duì)象轉(zhuǎn)換為字符串,編譯器將轉(zhuǎn)換基元類(lèi)型。例如,

String s = "1+1=" + 2; // s == "1+1=2"

The length of a string may be obtained with String method length(); e.g."abc".length() has the value 3. To convert an int to a String, use:

字符串的長(zhǎng)度可以通過(guò)string方法length()獲得;例如,“abc”.length()的值為3。

String s = String.valueOf(4); To convert a String to an int, use:

要將int轉(zhuǎn)換為字符串,請(qǐng)使用:

int a = Integer.parseInt("4");

Garbage Collection

垃圾收集

An automatic garbage collector deallocates memory for objects that are no longer needed by your program, thereby relieving you from the tedious and error-pronetask of deallocating your own memory.

自動(dòng)垃圾收集器為程序不再需要的對(duì)象釋放內(nèi)存,從而將您從釋放自己內(nèi)存的繁瑣且容易出錯(cuò)的任務(wù)中解脫出來(lái)。

As a consequence of automatic garbage collection and lack of pointers, a Java object is either null or valid--there is no way to refer to an invalid or stale object (one that has been deallocated).

由于自動(dòng)垃圾收集和缺少指針,Java對(duì)象要么為null,要么為有效對(duì)象——無(wú)法引用無(wú)效或過(guò)時(shí)的對(duì)象(已釋放的對(duì)象)。

To illustrate the effect of a garbage collector, consider the following C++ function that allocates 1000 objects on the heap via the new operator (a similar C function would allocate memory using calloc/malloc):

為了說(shuō)明垃圾回收器的效果,考慮下面的C++函數(shù),通過(guò)新的操作符在堆上分配1000個(gè)對(duì)象(類(lèi)似的C函數(shù)將使用CALLC/MALLC分配內(nèi)存):

// C++ code

void f() {

? T *t;

? for (int i = 1; i <= 1000; i++) {

? ? t = new T; // ack!!!!!

? }

}

Every time the loop body is executed, a new instance of class T is instantiated, and t is pointed to it. But what happens to the instance that t used to point to? It's still allocated, but nothing points to it and therefore it's inaccessible. Memory in this state is referred to as "leaked" memory.

每次執(zhí)行循環(huán)體時(shí),都會(huì)實(shí)例化一個(gè)類(lèi)T的新實(shí)例,并將T指向它。但是t過(guò)去所指的那個(gè)例子會(huì)發(fā)生什么呢?它仍然是分配的,但沒(méi)有指向它,因此無(wú)法訪(fǎng)問(wèn)。這種狀態(tài)的內(nèi)存稱(chēng)為“泄漏”內(nèi)存。

In the Java language, memory leaks are not an issue. The following Java method causes no ill effects:

在Java語(yǔ)言中,內(nèi)存泄漏不是問(wèn)題。以下Java方法不會(huì)產(chǎn)生不良影響

// Java code

void f() { T t;

? for (int i = 1; i <= 1000; i++) {

t = new T(); }

}

In Java, each time t is assigned a new reference, the old reference is now available for garbage collection. Note that it isn't immediately freed; it remains allocated until the garbage collector thread is next executed and notices that it can be freed.

在Java中,每當(dāng)t被分配一個(gè)新的引用時(shí),舊的引用現(xiàn)在就可以用于垃圾收集。請(qǐng)注意,它不會(huì)立即被釋放;它將保持分配狀態(tài),直到垃圾收集器線(xiàn)程下一次執(zhí)行并注意到它可以被釋放。

Put simply, automatic garbage collection reduces programming effort, programming errors, and program complexity.

簡(jiǎn)單地說(shuō),自動(dòng)垃圾收集減少了編程工作、編程錯(cuò)誤和程序復(fù)雜性。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、 Python介紹 1.1、Python現(xiàn)狀 python的創(chuàng)始人為吉多·范羅蘇姆(Guido van Ros...
    Horne閱讀 954評(píng)論 0 51
  • 本節(jié)內(nèi)容 Python介紹 發(fā)展史 Python 2 or 3? 安裝 Hello World程序 變量 用戶(hù)輸入...
    小小不懂11閱讀 3,545評(píng)論 2 30
  • 久違的晴天,家長(zhǎng)會(huì)。 家長(zhǎng)大會(huì)開(kāi)好到教室時(shí),離放學(xué)已經(jīng)沒(méi)多少時(shí)間了。班主任說(shuō)已經(jīng)安排了三個(gè)家長(zhǎng)分享經(jīng)驗(yàn)。 放學(xué)鈴聲...
    飄雪兒5閱讀 7,861評(píng)論 16 22
  • 今天感恩節(jié)哎,感謝一直在我身邊的親朋好友。感恩相遇!感恩不離不棄。 中午開(kāi)了第一次的黨會(huì),身份的轉(zhuǎn)變要...
    余生動(dòng)聽(tīng)閱讀 10,907評(píng)論 0 11
  • 可愛(ài)進(jìn)取,孤獨(dú)成精。努力飛翔,天堂翱翔。戰(zhàn)爭(zhēng)美好,孤獨(dú)進(jìn)取。膽大飛翔,成就輝煌。努力進(jìn)取,遙望,和諧家園。可愛(ài)游走...
    趙原野閱讀 3,525評(píng)論 1 1

友情鏈接更多精彩內(nèi)容