我的编程空间,编程开发者的网络收藏夹
学习永远不晚

在Java中如何使用枚举

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

在Java中如何使用枚举

这篇文章给大家分享的是有关在Java中如何使用枚举的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。


枚举类型(Enumerated Types)

让我们先看下面这一段小程序:

enum Day {SUNDAY, MONDAY, TUESDAY,
WEDNESDAY, THURSDAY, FRIDAY, SATURDAY};



这种申明提供了一种用户友好的变量定义的方法,它枚举了这种数据类型所有可能的值,即星期一到星期天。抛开具体编程语言来看,枚举所具有的核心功能应该是:


类型安全(Type Safety)


紧凑有效的枚举数值定义 (Compact, Efficient Declaration of Enumerated Values)


无缝的和程序其它部分的交互操作(Seamless integration with other language features)


运行的高效率(Runtime efficiency)

现在我们就这几个特点逐一讨论一下。

1. 类型安全

枚举的申明创建了一个新的类型。它不同于其他的已有类型,包括原始类型(整数,浮点数等等)和当前作用域(Scope)内的其它的枚举类型。当你对函数的参数进行赋值操作的时候,整数类型和枚举类型是不能互换的(除非是你进行显式的类型转换),编译器将强制这一点。比如说,用上面申明的枚举定义这样一个函数:

public void foo(Day);



如果你用整数来调用这个函数,编译器会给出错误的。

foo(4); // compilation error



如果按照这个标准,那么Pascal, Ada, 和C++是严格意义上的支持枚举,而C语言都不是。

2. 紧凑有效的枚举数值定义

定义枚巨的程序应该很简单。比如说,在Java中我们有这样一种"准枚举"的定义方法:

public static final int SUNDAY = 0;
public static final int MONDAY = 1;
public static final int TUESDAY = 2;
public static final int WEDNESDAY = 3;
public static final int THURSDAY = 4;
public static final int FRIDAY = 5;
public static final int SATURDAY = 6;



这种定义就似乎不够简洁。如果有大量的数据要定义,这一点就尤为重要,你也就会感受更深。虽然这一点不如其他另外3点重要,但我们总是希望申明能尽可能的简洁。

3. 无缝的和程序其它部分的交互操作

语言的运算符,如赋值,相等/大于/小于判断都应该支持枚举。枚举还应该支持数组下标以及switch/case语句中用来控制流程的操作。比如:

for (Day d = SUNDAY; d <= SATURDAY; ++d) {
switch(d) {
case MONDAY: ...;
break;
case TUESDAY: ...;
break;
case WEDNESDAY: ...;
break;
case THURSDAY: ...;
break;
case FRIDAY: ...;
break;
case SATURDAY:
case SUNDAY: ...;
}
}



要想让这段程序工作,那么枚举必须是整数常数,而不能是对象(objects)。Java中你可以用equals() 或是 compareTo() 函数来进行对象的比较操作,但是它们都不支持数组下标和switch语句。

4. 运行的高效率

枚举的运行效率应该和原始类型的整数一样高。在运行时不应该由于使用了枚举而导致性能比使用整数有下降。

如果一种语言满足这四点要求,那么我们可以说这种语言是真正的支持枚举。比如前面所说的Pascal, Ada, 和C++。很明显,Java不是。

Java的创始人James Gosling是个资深的C++程序员,他很清楚什么是枚举。但似乎他有意的删除了Java的枚举能力。其原因我们不得而知。可能是他想强调和鼓励使用多态性(polymorphism),不鼓励使用多重分支。而多重分支往往是和枚举联合使用的。不管他的初衷如何,我们在Java中仍然需要枚举。

Java中的几种"准枚举"类型

虽然Java 不直接支持用户定义的枚举。但是在实践中人们还是总结出一些枚举的替代品。

第一种替代品可以解释为"整数常数枚举"。如下所示:

public static final int SUNDAY = 0;
public static final int MONDAY = 1;
public static final int TUESDAY = 2;
public static final int WEDNESDAY = 3;
public static final int THURSDAY = 4;
public static final int FRIDAY = 5;
public static final int SATURDAY = 6;



这种方法可以让我们使用更有意义的变量名而不是直接赤裸裸的整数值。这样使得源程序的可读性和可维护性更好一些。这些定义可以放在任何类中。可以和其它的变量和方法混在一起。也可以单独放在一个类中。如果你选择将其单独放在一个类中,那么引用的时候要注意语法。比如"Day.MONDAY."。如果你想在引用的时候省一点事,那么你可以将其放在一个接口中(interface),其它类只要申明实现(implement)它就可以比较方便的引用。比如直接使用MONDAY。就Java接口的使用目的而言,这种用法有些偏,不用也罢!

这种方法显然满足了条件3和4,即语言的集成和执行效率(枚举就是整数,没有效率损失)。但是他却不能满足条件1和2。它的定义有些啰嗦,更重要的是它不是类型安全的。这种方法虽然普遍被Java程序员采用,但它不是一种枚举的良好替代品。

第二种方法是被一些有名的专家经常提及的。我们可以称它为"对象枚举"。即为枚举创建一个类,然后用公用的该类的对象来表达每一个枚举的值。如下所示:

import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.io.Serializable;
import java.io.InvalidObjectException;
public final class Day implements Comparable, Serializable {
private static int size = 0;
private static int nextOrd = 0;
private static Map nameMap = new HashMap(10);
private static Day first = null;
private static Day last = null;
private final int ord;
private final String label;
private Day prev;
private Day next;
public static final Day SUNDAY = new Day("SUNDAY");
public static final Day MONDAY = new Day("MONDAY");
public static final Day TUESDAY = new Day("TUESDAY");
public static final Day WEDNESDAY = new Day("WEDNESDAY");
public static final Day THURSDAY = new Day("THURSDAY");
public static final Day FRIDAY = new Day("FRIDAY");
public static final Day SATURDAY = new Day("SATURDAY");

private Day(String label) {
this(label, nextOrd);
}

private Day(String label, int ord) {
this.label = label;
this.ord = ord;
++size;
nextOrd = ord + 1;
nameMap.put(label, this);
if (first == null)
first = this;
if (last != null) {
this.prev = last;
last.next = this;
}
last = this;
}

public int compareTo(Object obj) {
return ord - ((Day)obj).ord;
}

public boolean equals(Object obj) {
return super.equals(obj);
}

public int hashCode() {
return super.hashCode();
}

private Object readResolve() throws InvalidObjectException {
Day d = get(label);
if (d != null)
return d;
else {
String msg = "invalid deserialized object: label = ";
throw new InvalidObjectException(msg + label);
}
}

public static Day get(String label) {
return (Day) nameMap.get(label);
}

public String toString() {
return label;
}

protected Object clone() throws CloneNotSupportedException {
throw new CloneNotSupportedException();
}

public static Iterator iterator() {
// anonymous inner class
return new Iterator()
{
private Day current = first;
public boolean hasNext() {
return current != null;
}
public Object next() {
Day d = current;
current = current.next();
return d;
}
public void remove() {
throw new UnsupportedOperationException();
}
};
}

public int ord() {
return this.ord;
}

public static int size() {
return size;
}

public static Day first() {
return first;
}

public static Day last() {
return last;
}

public Day prev() {
return this.prev;
}

public Day next() {
return this.next;
}
}



枚举值被定义为公用静态对象(public static object)。此外该类含有私有构造函数;一个循环器(Iterator)用以遍历所有的值;一些Java中常用的函数,如toString(),equals()和compareTo(),以及一些方便客户程序调用的函数,如ord(),prev(),next(),first()和 last()。

这种实现方法有很好的类型安全和运行效率(条件1和4)。但是去不满足条件2和3。首先它的定义比较繁琐,大多数程序员也许因为这个而不去使用它;同时他还不可以被用作数组下标或是用在switch/case语句。这在一定程度上降低了他的使用的广泛性。

看起来,没有一种替代品是理想的。我们虽然没有权利修改Java语言,但是我们也许可以想一些办法来克服"对象枚举"的缺点,使它成为合格的枚举替代品。
一个实现枚举的微型语言(AMini-Language for Enums)

假如我发明一种枚举专用的微型语言(且叫它jEnum),它专门用来申明枚举。然后我再用一个特殊的"翻译"程序将我用这种语言定义的枚举转化为对应的"对象枚举"定义,那不是就解决了"对象枚举"定义复杂的问题了吗。当然我们很容易让这个"翻译"程序多做一些工作。比如加入Package申明,加入程序注释,说明整数值和该对象的字符串标签名称等等。让我们看下面这样一个例子:

package com.softmoore.util;

enum Coin { PENNY("penny") = 1, NICKEL("nickel") = 5, DIME("dime") = 10,
QUARTER("quarter") = 25, HALF_DOLLAR("half dollar") = 50 };



虽然"整数常数枚举"在有些情况下优点比较显著。但是总体上讲"对象枚举"提供的类型安全还是更为重要的,相比之下哪些缺点还是比较次要的。下面我们大概讲一下jEnum,使用它我们又可以得到紧凑和有效的枚举申明这一特点,也就是我们前面提到的条件2。

熟悉编译器的朋友可能更容易理解下面这一段jEnum微型语言。

compilationUnit = ( packageDecl )? ( docComment )? enumTypeDecl .
packageDecl = "package" packagePath ";" .
packagePath = packageName ( "." packageName )* .
docComment = "" .
enumTypeDecl = "enum" enumTypeName "{" enumList "}" ";" .
enumList = enumDecl ( "," enumDecl )* .
enumDecl = enumLiteral ( "(" stringLiteral ")" )? ( "=" intLiteral )? .
packageName = identifier .
enumTypeName = identifier .
enumLiteral = identifier .
commentChars = any-char-sequence-except-"*/"



这种语法允许在开始申明package,看起来和Java语言还挺像。你可以增加一些javadoc的注解,当然这不是必须的。枚举类型的申明以关键字"enum"开头,枚举的值放在花括号中{},多个值之间用逗号分开。每一个值的申明包括一个标准的Java变量名,一个可选的字符串标签,可选的等号(=)和一个整数值。

如果你省略了字符串标签,那么枚举的变量名就会被使用;如果你省略了等号和后面的整数值,那么它将会自动按顺序给你的枚举赋值,如果没有使用任何数值,那么它从零开始逐步增加(步长为1)。字符串标签作为toString()方法返回值的一部分,而整数值则作为ord()方法的返回值。如下面这段申明:

enum Color { RED("Red") = 2, WHITE("White") = 4, BLUE };




RED 的标签是 "Red",值为 2 ;


WHITE的标签是"White",值为4;


BLUE的标签是"BLUE" ,值为5 。

要注意的是在Java中的保留字在jEnum也是保留的。比如你不可以使用this作为package名,不可以用for为枚举的变量名等等。枚举的变量名和字符串标签必须是不同的,其整数值也必须是严格向上增加的,象下面这段申明就是不对的,因为它的字符串标签不是唯一的。

enum Color { RED("Red"), WHITE("BLUE"), BLUE };



下面这段申明也是不对的,因为WHITE会被自动赋值2 ,和BLUE有冲突。

enum Color { RED = 1, WHITE, BLUE = 2 };



下面这是一个具体的实例。它将会被"翻译"程序使用,用以转换成我们枚举申明为可编译的Java源程序。

package com.softmoore.jEnum;

enum Symbol {
identifier,
enumRW("Reserved Word: enum"),
abstractRW("Reserved Word: abstract"),
assertRW("Reserved Word: assert"),
booleanRW("Reserved Word: boolean"),
breakRW("Reserved Word: break"),
byteRW("Reserved Word: byte"),
caseRW("Reserved Word: case"),
catchRW("Reserved Word: catch"),
charRW("Reserved Word: char"),
classRW("Reserved Word: class"),
constRW("Reserved Word: const"),
continueRW("Reserved Word: continue"),
defaultRW("Reserved Word: default"),
doRW("Reserved Word: do"),
doubleRW("Reserved Word: double"),
elseRW("Reserved Word: else"),
extendsRW("Reserved Word: extends"),
finalRW("Reserved Word: final"),
finallyRW("Reserved Word: finally"),
floatRW("Reserved Word: float"),
forRW("Reserved Word: for"),
gotoRW("Reserved Word: goto"),
ifRW("Reserved Word: if"),
implementsRW("Reserved Word: implements"),
importRW("Reserved Word: import"),
instanceOfRW("Reserved Word: instanceOf"),
intRW("Reserved Word: int"),
interfaceRW("Reserved Word: interface"),
longRW("Reserved Word: long"),
nativeRW("Reserved Word: native"),
newRW("Reserved Word: new"),
nullRW("Reserved Word: null"),
packageRW("Reserved Word: package"),
privateRW("Reserved Word: private"),
protectedRW("Reserved Word: protected"),
publicRW("Reserved Word: public"),
returnRW("Reserved Word: return"),
shortRW("Reserved Word: short"),
staticRW("Reserved Word: static"),
strictfpRW("Reserved Word: strictfp"),
superRW("Reserved Word: super"),
switchRW("Reserved Word: switch"),
synchronizedRW("Reserved Word: synchronized"),
thisRW("Reserved Word: this"),
throwRW("Reserved Word: throw"),
throwsRW("Reserved Word: throws"),
transientRW("Reserved Word: transient"),
tryRW("Reserved Word: try"),
voidRW("Reserved Word: void"),
volatileRW("Reserved Word: volatile"),
whileRW("Reserved Word: while"),
equals("="),
leftParen("("),
rightParen(")"),
leftBrace("{"),
rightBrace("}"),
comma(","),
semicolon(";"),
period("."),
intLiteral,
stringLiteral,
docComment,
EOF,
unknown
};



如果对Day的枚举申明存放在Day.enum文件中,那么我们可以将这个文件翻译成Java源程序。

$ java -jar jEnum.jar Day.enum



翻译的结果就是Day.javaJava源程序,内容和我们前面讲的一样,还包括程序注释等内容。如果想省一点事,你可以将上面比较长的命令写成一个批处理文件或是Unix,Linux上的shell script,那么以后使用的时候就可以简单一些,比如:

$ jec Day.enum



关于jEnum有四点注意事项要说明一下。

1. 申明文件名不一定后缀为".enum.",其它合法文件后缀都可以。

2. 如果文件后缀不是".enum.",那么翻译程序将首先按给出的文件名去搜索,如果没有,就假定给出的文件名是省略了".enum."后缀的。像这种命令是可以的:

$ java -jar jEnum.jar Day



3. 生成的Java源程序文件名是按照申明文件内的定义得出的,而不是依据申明文件的名称。

4. 翻译程序还接受以下几个开关

-o 生成"对象枚举"类枚举,是缺省值

-c 生成"整数常数枚举"类枚举,用类来实现

-i 生成"整数常数枚举"类枚举,用接口来实现

要注意的是,-C开关虽然生成"整数常数枚举",但它同时还提供了一些"对象枚举"中所具有的方法,如first(), last(),toString(int n),prev(int n), 和next(int n)。

感谢各位的阅读!关于“在Java中如何使用枚举”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

在Java中如何使用枚举

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

在Java中如何使用枚举

这篇文章给大家分享的是有关在Java中如何使用枚举的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。枚举类型(Enumerated Types) 让我们先看下面这一段小程序: enum Day {SUNDAY, MO
2023-06-03

枚举如何在java项目中使用

今天就跟大家聊聊有关枚举如何在java项目中使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、枚举类型作为常量package myenum; /** * @author zzl
2023-05-31

枚举如何在MyBatis中使用

这篇文章给大家介绍枚举如何在MyBatis中使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。具体方法如下:public enum ComputerState { OPEN(10), //开启 CLOSE(11),
2023-05-31

枚举中的values()方法如何在java 中使用

本篇文章给大家分享的是有关枚举中的values()方法如何在java 中使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。首先是我们自己的枚举类。public enum Enu
2023-05-31

枚举怎么在Java中使用

本篇文章给大家分享的是有关枚举怎么在Java中使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。使用方法如下:package com.ljq.test;/** * 枚举用法详解
2023-05-31

再谈在Java中使用枚举(转)

再谈在Java中使用枚举(转)[@more@]从C++转到Java上的程序员一开始总是对Java有不少抱怨,其中没有枚举就是一个比较突出的问题。那么为什么Java不支持枚举呢?从程序语言的角度讲,支持枚举意味着什么呢?我们能不能找到一种方法
2023-06-03

如何在 Java 枚举中优雅地添加方法?(如何在java枚举中添加方法)

在Java编程中,枚举(Enumeration)是一种特殊的数据类型,它用于定义一组常量。枚举类型在很多场景下都非常有用,比如表示星期几、月份、颜色等。通常情况下,枚举类型只包含常量,但在某些情况下,我们可能需要在枚举中添加一些方法,以实现更复杂的逻辑。那么,如何在Java枚举中添加方
如何在 Java 枚举中优雅地添加方法?(如何在java枚举中添加方法)
Java2024-12-20

在 Java 枚举中怎样定义常量?(java枚举中如何定义常量)

在Java编程中,枚举(Enumeration)是一种特殊的数据类型,它允许定义一组具名的常量。枚举类型提供了一种更安全、更易于维护的方式来管理一组相关的常量。本文将详细介绍在Java枚举中如何定义常量。一、枚举的基本概念
在 Java 枚举中怎样定义常量?(java枚举中如何定义常量)
Java2024-12-22

java枚举如何定义与使用

在Java中,枚举是一种特殊的数据类型,用于定义一组常量。枚举常量在声明时就被确定,并且不能被修改。下面是定义和使用Java枚举的步骤:1. 定义一个枚举类型:```javaenum Day {MONDAY, TUESDAY, WEDNES
2023-08-21

python如何使用枚举

小编给大家分享一下python如何使用枚举,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!使用枚举我们常用 For 循环来遍历某个列表,同样我们也能枚举列表的索引与
2023-06-27

C++中enum枚举如何使用

这篇文章将为大家详细讲解有关C++中enum枚举如何使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。C++ enum枚举格式:enum < 枚举类型名> {< 枚举表>}; (见例1)en
2023-06-17

C++中的枚举如何使用

这篇文章主要介绍了C++中的枚举如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++中的枚举如何使用文章都会有所收获,下面我们一起来看看吧。一、枚举是什么枚举(enumeration)类型用于存放用户指
2023-07-05

如何在 Java 中实现枚举的回调?(java枚举怎么实现回调)

在Java编程中,枚举(Enumeration)是一种特殊的数据类型,它限定了变量的取值范围为一组预定义的常量。而回调(Callback)是一种设计模式,允许一个对象在某个事件发生时通知另一个对象。那么,如何在Java中实现枚举的回调呢?一、理解枚举和回
如何在 Java 中实现枚举的回调?(java枚举怎么实现回调)
Java2024-12-14

如何使用VB.NET枚举

这篇文章主要介绍了如何使用VB.NET枚举,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在程序运行的过程中始终固定不变的量称为常量。由于在程序设计和开发时经常会反复地运用一些
2023-06-17

C# 枚举如何使用

这篇文章主要介绍“C# 枚举如何使用”,在日常操作中,相信很多人在C# 枚举如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C# 枚举如何使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!为什么使用
2023-06-14

java枚举enum和Enum类如何使用

这篇文章主要介绍“java枚举enum和Enum类如何使用”,在日常操作中,相信很多人在java枚举enum和Enum类如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java枚举enum和Enum类如
2023-07-05

在 Java 中,如何抉择是使用枚举的 switch 还是 if-else 语句?(如何选择Java中的枚举switch或if-else)

在Java编程中,当需要根据不同的条件执行不同的代码块时,我们常常会遇到选择使用枚举的switch语句还是if-else语句的情况。这两种结构都可以实现条件判断和代码分支的功能,但在不同的场景下,它们的性能、可读性和代码结构等方面可能会有所差异。一、
在 Java 中,如何抉择是使用枚举的 switch 还是 if-else 语句?(如何选择Java中的枚举switch或if-else)
Java2024-12-21

在 Java 中怎样利用 switch 语句对枚举进行扩展?(如何在Java中使用switch语句对枚举进行扩展)

在Java编程中,枚举(Enumeration)是一种特殊的数据类型,它允许你定义一组命名的常量。而switch语句则是用于根据不同的条件执行不同的代码块。将这两者结合起来,可以更方便地对枚举进行扩展和处理。一、枚举的基本概念
在 Java 中怎样利用 switch 语句对枚举进行扩展?(如何在Java中使用switch语句对枚举进行扩展)
Java2024-12-20

Java中的枚举怎么使用

本篇内容主要讲解“Java中的枚举怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java中的枚举怎么使用”吧!枚举(enum)枚举是一个被命名的整型常数的集合,用于声明一组带标识符的常数
2023-07-05

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录