我java里的枚举不懂...

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我java里的枚举不懂...相关的知识,希望对你有一定的参考价值。

我不会枚举怎么办啊.不知道怎么用.谁能把我教会了.我一定给高分他.是高分啊.高分...还会加的.

http://www.verycd.com/topics/398371/
有详细讲解JDK5.0的新特性

1.泛型(Generic)
C++通过模板技术可以指定集合的元素类型,而Java在1.5之前一直没有相对应的功能。一个集合可以放任何类型的对象,相应地从集合里面拿对象的时候我们也不得不对他们进行强制得类型转换。猛虎引入了泛型,它允许指定集合里元素的类型,这样你可以得到强类型在编译时刻进行类型检查的好处。

2.For-Each循环
For-Each循环得加入简化了集合的遍历。

3.自动装包/拆包(Autoboxing/unboxing)
自动装包/拆包大大方便了基本类型数据和它们包装类地使用。
自动装包:基本类型自动转为包装类.(int >> Integer)
自动拆包:包装类自动转为基本类型.(Integer >> int)

4.枚举(Enums)
JDK1.5加入了一个全新类型的“类”-枚举类型。为此JDK1.5引入了一个新关键字enmu. 我们可以这样来定义一个枚举类型。
public enum Color

Red,
White,
Blue


然后可以这样来使用Color myColor = Color.Red.
枚举类型还提供了两个有用的静态方法values()和valueOf(). 我们可以很方便地使用它们,例如
for (Color c : Color.values())
System.out.println©;

5.可变参数(Varargs)
可变参数使程序员可以声明一个接受可变数目参数的方法。注意,可变参数必须是函数声明中的最后一个参数。假设我们要写一个简单的方法打印一些对象,
util.write(obj1);
util.write(obj1,obj2);
util.write(obj1,obj2,obj3);

在JDK1.5之前,我们可以用重载来实现,但是这样就需要写很多的重载函数,显得不是很有效。如果使用可变参数的话我们只需要一个函数就行了
public void write(Object... objs)
for (Object obj: objs)
System.out.println(obj);

在引入可变参数以后,Java的反射包也更加方便使用了。对于c.getMethod("test", new Object[0]).invoke(c.newInstance(), new Object[0])),现在我们可以这样写了c.getMethod("test").invoke(c.newInstance()),这样的代码比原来清楚了很多。

6.静态导入(Static Imports)
要使用用静态成员(方法和变量)我们必须给出提供这个方法的类。使用静态导入可以使被导入类的所有静态变量和静态方法在当前类直接可见,使用这些静态成员无需再给出他们的类名。
import static java.lang.Math.*;
参考技术A 是那个enumeration吗,他就两个方法hasMoreElements()和nextElements(),看看API帮助文档就可以了,比你在这问人强多了。然后还有一个iterator()反正,我感觉这两个差不多,合起来学好点,我也是一知半解,会用就行了,目前,我见过的,用这的还不多。前几天,做swt用过一个enumeration和hashtable。
建议:学学数据结构。
参考技术B 枚举不就是限定一个使用范围吗?比如说 你家的房门钥匙就只有你和你老婆用,不能让别人用,你开始就把它范围限定了。。。此后再来别人都不得使用一样,so easy! 参考技术C 还没见过Java的枚举呢,看来我水平不行呀,我只知道。net有枚举 参考技术D JAVA枚举是JDK1.5新增的,和.NET差不多用法

Python 里的 String format问题, 我搞不懂这个东西到底是怎么用的。

比如
>>> '%-*s%*s' % (1,'hello',20,9.3)
>>>hello 9.3

我现在只知道%s就像一个String的切入口,
我现在理解的是
>>>x = raw_input('x= ')
>>>print 'hello, %s!' % x

运行时就是
x = hello
hello, Louis!

========
我不懂得几点和我动的几点
我懂得
1.%s(说过了)
2.%- (代表向左对齐)
以及
”% “(%后面有个空格)

%+
4. 还有些基本的我都懂。
---------------------
我不懂得
1. * (这是干嘛?)
2. %-*s%*s(这个到底是怎么回事, 我从左往右理解,
<1>%-,向左对齐*s?*s也是从外面调进来数字?
<2>%*s????星星在这里是干嘛用的呀?)
说实话主要就是不理解星星

举个例子好了:
'%-*s%*s' % (x, s1, y, s2)
s1左对齐打印,总共要占用x长度,不够的用空格补充,若字符串超出以字符串实际长度为准;
s2没有'-'即按照右对齐,同样方式打印。这里'*'你可以理解为对应x个数的空格占位符吧。

另外,format是保留字,对应header_format建议变量用content_format做变量命名;
打印水果价钱可以用字典,比较简洁:
d = 'Apple':0.4, 'Pears':0.5, 'Cantalopes':1.92, 'Dried Apricots(16)':8,'Prues':12
for k in d.keys():
print content_format % (item_width, k, price_width, d[k])追问

我还有几个问题要问你:问完了我会给你50分。
1.Python怎么生成执行文件?
2.Python的程序怎么加上UI?(User Interface用户界面)
3.Python 3 和 python 2 的变化剧烈吗?我是应该学那一个?
===========================
4*.Python 到底怎么做出一个程序? 比如:游戏?有强大的功能性的(假设做一个PDF转Doc)
===========================
*我需要一个系统的步骤解释 如:1.写程序,和界面连起来,变成可执行文件。

追答

你的问题每一个细说都很大,这里我都点一下吧。
1/python程序转exe常用的有py2exe,具体用法网上有很多,三言两语说的也不全,找一下;
2/python写UI的库,简单的有Tkiner,常用的有PyQt或者wxPython;
3/python 2到3变化很大,主要是取消很多向后兼容的特性,导致好多外部的库无法再使用。我一直在使用python27,具体3的语法没太关注,印象里对初学者来说相差不大。单纯学习可以看3,目前的书上一般会写明不同版本的用法区别;
4/python写程序一样要学习语法,自己写出或者直接运用不同的库(比如前面所说的UI库,游戏的有pygame)来完成过功能;如何和界面连起来:“导入库 ->生成所需的控件对象->将控件与所需的函数映射->主程序循环”不同库的实现方式不同,目前没有像MFC开发所用的VC那样的IDE,所以也无法给出个固定的步骤解释;你随便找个Tkinter/PyQt/wxPython的入门教程看一下就明白。
另外,初学还是一步一步来,python毕竟是一门正式的语言,还没搞明白Python怎么回事就想写综合性的程序,太急于求成。学习方法一般是先弄清语言特性,再针对你的需求学习库的用法。

参考技术A 5.6.2. String Formatting Operations
String and Unicode objects have one unique built-in operation: the % operator (modulo). This is also known as the string formatting or interpolation operator. Given format % values (where format is a string or Unicode object), % conversion specifications in format are replaced with zero or more elements of values. The effect is similar to the using sprintf() in the C language. If format is a Unicode object, or if any of the objects being converted using the %s conversion are Unicode objects, the result will also be a Unicode object.

If format requires a single argument, values may be a single non-tuple object. [4] Otherwise, values must be a tuple with exactly the number of items specified by the format string, or a single mapping object (for example, a dictionary).

A conversion specifier contains two or more characters and has the following components, which must occur in this order:

The '%' character, which marks the start of the specifier.
Mapping key (optional), consisting of a parenthesised sequence of characters (for example, (somename)).
Conversion flags (optional), which affect the result of some conversion types.
Minimum field width (optional). If specified as an '*' (asterisk), the actual width is read from the next element of the tuple in values, and the object to convert comes after the minimum field width and optional precision.
Precision (optional), given as a '.' (dot) followed by the precision. If specified as '*' (an asterisk), the actual width is read from the next element of the tuple in values, and the value to convert comes after the precision.
Length modifier (optional).
Conversion type.

>>> '|%-*s|%*s|' % (10,'hello',20,9.3)
'|hello | 9.3|'
>>>

参考资料:http://docs.python.org/library/stdtypes.html#string-formatting-operations

参考技术B 声明在字符串参数前面需要一个长度参数
例如:
'[%*s]' % (10,'a')
==> '[ a]'

以上是关于我java里的枚举不懂...的主要内容,如果未能解决你的问题,请参考以下文章

Python 里的 String format问题, 我搞不懂这个东西到底是怎么用的。

毒瘤header(代码里的宏和函数看不懂可以来这里找)

java枚举在android项目应用

java基础 枚举类型

java枚举

看不懂的 build.gradle 代码