《JAVA串讲基本语法.ppt》由会员分享,可在线阅读,更多相关《JAVA串讲基本语法.ppt(44页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、JAVA基本语法JAVA标识符标识符1 1、标识符:、标识符:编程语言中用来标识变量、函数、常量等的名字,就是标识符。编程语言中用来标识变量、函数、常量等的名字,就是标识符。1-1 1-1:标识符的命名规则:标识符的命名规则:a a、标识符由字母、下划线、美元符号、标识符由字母、下划线、美元符号($)($)和数字构成。和数字构成。b b、标识符由字母、下划线、美元符号、标识符由字母、下划线、美元符号($)($)开头开头 c c、大小写敏感、大小写敏感 1-2 1-2:关键字:关键字:编程语言中预留的标识符,通常在编程语言中代表某种特定的编程语言中预留的标识符,通常在编程语言中代表某种特定的用途
2、如:用途如:public,class,privatepublic,class,private 注:关键字不能被程序员占用的。2 2、数据类型:、数据类型:2-1:2-1:基本数据类型:基本数据类型:数值类型数值类型:整型:整型:bytebyte、shortshort、intint、longlong 浮点型:浮点型:float 、double 其它类型:其它类型:字符型:字符型:char 布尔型:布尔型:boolean 2-2 引用类型引用类型 java中所有的类都是属于引用类型。如:String,Date JAVA标识符标识符1、变量:、变量:是内存中一块区域,其大小由变量数据类型决定,程序员
3、是内存中一块区域,其大小由变量数据类型决定,程序员通过变量名来引用这块区域,并向其中读或写数据。通过变量名来引用这块区域,并向其中读或写数据。1-1:定义变量的语法:定义变量的语法:类型类型 变量名变量名=初始化值初始化值;注:变量未初始化是不能使用的。注:变量未初始化是不能使用的。2、常量、常量:是值不可变的变量。是值不可变的变量。2-1:定义常量:定义常量:final final 变量名变量名=初始化值初始化值;常用的地方是,在一个类中定义一个类常量(即定义一个常用的地方是,在一个类中定义一个类常量(即定义一个类的成员为常量)类的成员为常量)变量、常量变量、常量变量、常量变量、常量publ
4、ic class VarTest public static void main(String args)/TODO Auto-generated method stubint radiu=10;String info=圆的半径为:圆的半径为:;System.out.println(info+radiu);String info2=圆的面积为圆的面积为;double area=radiu*radiu*PI;/double area1=radiu*radiu*Math.PI;/Math定义了一个定义了一个PI常常量量System.out.println(info2+area);static fi
5、nal double PI=3.1415926;/类常量,通常为类常量,通常为static数学运算符:+,-,*,/,%(取模),+,-关系运算:,=,!=condition?Expression1:expression2(三元运算符)逻辑运算符:|,&,!位运算符:&,|,(异或),(非)(右移运算符),(右移运算符)注:按位与&及按位或|除了位运算外还可以用于一般的逻辑运算其效果与&和|大致一致。区别在于:&和|具备短路运算的特性而&和|没有。Eg:当x=0 比较 x!=0&1/xx+y 和 x!=0&1/xx+y 两个表达式的执行状态运算符运算符运算符运算符示例示例public clas
6、s javademo1public static void main()System.out.println(这是一个最简单这是一个最简单java程序程序);3、书写规范:、书写规范:3-1:前面带空格前面带空格.;3-2:要与对应的要与对应的所在行首对齐;所在行首对齐;3-3:内的语句要相对于内的语句要相对于有一个缩进有一个缩进(tab或或shift+tab);3-4:子模块相对于父模块要有一个缩进;:子模块相对于父模块要有一个缩进;3-5:一般来说每条语句占一行,一行写多条语句则语句间要有空格。一般来说每条语句占一行,一行写多条语句则语句间要有空格。3-6:一条语句过长时,可以占多行(尽量
7、避免一行的长度超过:一条语句过长时,可以占多行(尽量避免一行的长度超过80个字符,因个字符,因为很多终端和工具不能很好处理之)。可以依据如下一般规则断开之:为很多终端和工具不能很好处理之)。可以依据如下一般规则断开之:-在一个逗号后面断开在一个逗号后面断开-在一个操作符前面断开在一个操作符前面断开如果以上规则导致你的代码混乱或者使你的代码都堆挤在右边,那就代之以如果以上规则导致你的代码混乱或者使你的代码都堆挤在右边,那就代之以缩进缩进8个空格。个空格。标识符命名要符合业务意义;标识符命名要符合业务意义;以下是断开的一些例子:以下是断开的一些例子:someMethod(longExpressio
8、n1,longExpression2,longExpression3,longExpression4,longExpression5);longName1=longName2*(longName3+longName4-longName5)+4*longname6;/PREFFER示例示例1、数值类型之间的隐式转换、数值类型之间的隐式转换:(按由左至右或箭头方向按由左至右或箭头方向)(由宽度由窄到宽,由整数到小数由宽度由窄到宽,由整数到小数)char byte-short-int-long float-double判断如下表达式的最终数据类型:判断如下表达式的最终数据类型:12+22+23.2f
9、 a+12隐式类型转换隐式类型转换引用类型的隐式转换引用类型的隐式转换:子类类型可自动隐式转换为父类类型:子类类型可自动隐式转换为父类类型:eg:public class TypeTest public static void main(String args)/TODO Auto-generated method stubShape shape;Circle circle=new TypeTest().new Circle(red,12);shape=circle;/子类自动隐式转换为父类System.out.println(shapecolor is+shape.getColor();Sy
10、stem.out.println(circlecolor is+circle.getColor();隐式类型转换隐式类型转换class Shape String color;public Shape(String color)this.color=color;public String getColor()return color;public void setColor(String color)this.color=color;class Circle extends Shapeint radius;public Circle(String color,int radius)super(c
11、olor);this.radius=radius;public int getRadius()return radius;public void setRadius(int radius)this.radius=radius;隐式类型转换隐式类型转换 语法语法:(类型类型)表达式表达式1、数值类型的强制转换:、数值类型的强制转换:一般来说,由小数到整数,或取值范围宽的类型到取值范围窄的类型都一般来说,由小数到整数,或取值范围宽的类型到取值范围窄的类型都须要强制转换须要强制转换 float a=23.2;/不能由不能由double型数据直接赋给浮点型型数据直接赋给浮点型 float a=(flo
12、at)23.2;判断下面的赋值表达式哪些可行判断下面的赋值表达式哪些可行 int a=12.3;-float b=23.2/2+11;-int c=10 byte d=c;显式(强制)类型转换显式(强制)类型转换2、引用类型的强制转换:、引用类型的强制转换:子类类型子类类型 对象对象=(子类类型子类类型)父类对象父类对象(前提:(前提:某父类型的引用变量值由子类引用变量类型转换而来,那么该某父类型的引用变量值由子类引用变量类型转换而来,那么该父类型的引用变量可以被强转为子类型父类型的引用变量可以被强转为子类型)如:接前例:父类:如:接前例:父类:Shape 子类:子类:Circle例例1:Sh
13、ape shape;.Circle cir=new Circle();shape=cir /将子类引用变量的值类型转换后赋给父类引用变量将子类引用变量的值类型转换后赋给父类引用变量 Circle circle2=shape;/错误,父类不能隐式转换为子类错误,父类不能隐式转换为子类 Circle circle2=(Circle)shape;/正确正确 java.sql.Date date=(java.sql.Date)new java.util.Date();/不正确不正确显式(强制)类型转换显式(强制)类型转换注:没有继承关系的类型之间不能类型转换注:没有继承关系的类型之间不能类型转换如:如
14、:String date=(String)new Date();-class Rectangle extends Shape则则:Rectangel rec=(Rectangle)circle;流程控制语句流程控制语句分支语句分支语句:if(condition1).else if(condition2).else多分支语句:多分支语句:switch(choice)/注注:choice只能是枚举值或整型只能是枚举值或整型,而而short,byte,char会自动转型会自动转型为为int case value1:break;case value2:语句语句;break;语句语句;default:.
15、break;循环控制语句循环控制语句:while(condition)语句语句;.流程控制语句流程控制语句do 语句;while(condition)for(初始化语句,;condition;自增语句,)语句;for循环例子循环例子:while循环例子循环例子:根据输入的固定利率和每年存入的金额及退休后所须存储根据输入的固定利率和每年存入的金额及退休后所须存储目标余额,计算要多少年后退休?目标余额,计算要多少年后退休?数组:数组:常见的一种数据结构,用来顺序存储同类型的值的集合。常见的一种数据结构,用来顺序存储同类型的值的集合。在内存占用一段连续的内存区域。在内存占用一段连续的内存区域。(ja
16、va中数组也是一个对象)中数组也是一个对象)1、数组的声明:、数组的声明:数据类型数据类型 数组名数组名;或或 数据类型数据类型 数组名数组名=new 数据类型数据类型数组大小数组大小 ;/初始化初始化或或数据类型数据类型 数组名数组名=new 值值1,值值2,值值n;/初始化初始化 数组数组在在JDK5.0中提供了一种新的循环结构用来遍历集合中的元素中提供了一种新的循环结构用来遍历集合中的元素非常有效,当然数组也是一种集合,故也可应用。非常有效,当然数组也是一种集合,故也可应用。for(数据类型数据类型 item:collection)语句语句;数组数组面向过程:面向过程:程序设计者必须指定
17、计算机执行的具体步骤程序设计者必须指定计算机执行的具体步骤,程序设计者不仅要考虑程序设计者不仅要考虑程序要程序要“做什么还要解决做什么还要解决怎么做怎么做的问题的问题,根据程序要根据程序要做什么做什么的要的要求求,写出一个个语句写出一个个语句,安排好它们的执行顺序安排好它们的执行顺序.怎样设计这些步骤怎样设计这些步骤,怎样怎样保证它的正确性和具有较高的效率保证它的正确性和具有较高的效率,这就是算法需要解决的问题这就是算法需要解决的问题.面向对象:面向对象:首选抽象出问题领域内的相关的对象和它们的属性和行为,并找出对首选抽象出问题领域内的相关的对象和它们的属性和行为,并找出对象之间的关系。这样当
18、解决问题时,只须调用相关对象去完成即可。象之间的关系。这样当解决问题时,只须调用相关对象去完成即可。面向对象设计实现了对象级别的封装和复用(面向过程只能实现方法面向对象设计实现了对象级别的封装和复用(面向过程只能实现方法级别的复用),更贴近人解决问题的思考方式,同时更易于管理,复级别的复用),更贴近人解决问题的思考方式,同时更易于管理,复用的程度也更高。用的程度也更高。对象与类对象与类对象与类对象与类1、对象的三个主要特性:、对象的三个主要特性:对象的行为、对象的状态、对象的标识对象的行为、对象的状态、对象的标识2、类:、类:是对具有相同特征和行为的对象集合的抽象。可以还可以将是对具有相同特征
19、和行为的对象集合的抽象。可以还可以将之看成是生成对象的代码模块。之看成是生成对象的代码模块。2-1:类的三大特征类的三大特征 封装:封装:隐藏对象内部的细节,向外部提供接口,让调用者访问隐藏对象内部的细节,向外部提供接口,让调用者访问 继承:继承:从已有的类扩展出一个新类,新类具备原类的所有特性,并扩展出自己新的特从已有的类扩展出一个新类,新类具备原类的所有特性,并扩展出自己新的特性性 多态:多态:对同一个消息,多种不同的响应方式对同一个消息,多种不同的响应方式2-2:类与类之间的关系:类与类之间的关系:is-a:继承继承 has-a:又分为聚合和组合又分为聚合和组合 另外还有一种依赖关系另外
20、还有一种依赖关系对象与类对象与类2-2-1:a、聚合、聚合:一个类包含其它类,但没有必须的依存关系。一个类包含其它类,但没有必须的依存关系。公司公司-员工员工 足球队足球队-队员队员 b、组合:一个类包含其它类、组合:一个类包含其它类,存在必须的依存关系存在必须的依存关系 人人-人脑人脑 2-2-2:关联关联(依赖依赖):最弱的关系:最弱的关系,一个类在某种情况下要向其它的类发送一个类在某种情况下要向其它的类发送消息。消息。公司的经理公司的经理-考核员工考核员工 公司的经理公司的经理对象与类对象与类3、类的构造、类的构造:3-1:默认构造方法:默认构造方法:不带参数的构造方法。若未定义构造方法
21、,则编译默认不带参数的构造方法。若未定义构造方法,则编译默认建立一个空的构造方法。建立一个空的构造方法。3-2:构造方法重载:构造方法重载:3-3:子类构造方法中必须在第一行调用父类的构造方法,子类构造方法中必须在第一行调用父类的构造方法,若父类有默认构造方法,则可省略调用代码,由编译隐式若父类有默认构造方法,则可省略调用代码,由编译隐式在子类构造方法中调用父类的默认构造方法。在子类构造方法中调用父类的默认构造方法。注:一个注:一个.java文件夹中只能一个文件夹中只能一个 4、变量分类:、变量分类:4-1:基本类型变量和引用类变量:基本类型变量和引用类变量 基本类型变量:存放基本类型数据的值
22、。基本类型变量:存放基本类型数据的值。引用类型变量引用类型变量:存放类实例的引用。存放类实例的引用。4-2:局部变量和全局变量局部变量和全局变量:局部变量:在方法内部定义的变量称为局部变量。局部变量:在方法内部定义的变量称为局部变量。全局变量:类的成员称为全局变量。全局变量:类的成员称为全局变量。注:全局变量若没有在定义时初始化则会有一个默认初始化值。注:全局变量若没有在定义时初始化则会有一个默认初始化值。引用类型变量初始化值为引用类型变量初始化值为null。基本类型变量中数值型一律初始化为基本类型变量中数值型一律初始化为0,char型初始化为型初始化为,boolean为为false对象与类对
23、象与类请判断输出结果:class Number public int i;public Number(int i)this.i=i;对象与类对象与类String aa=aa;String bb=bb;aa=bb;bb.substring(0);int m=1;int n=10;m=n;+n;Number num1=new Number(10);Number num2=new Number(12);num2=num1;num1.i=22;System.out.println(aa=+aa+,bb=+bb);System.out.println(m=+m+,n=+n);System.out.pri
24、ntln(num1.i=+num1.i+,num2.i+num2.i);对象与类对象与类5、访问控制:、访问控制:访问控制符访问控制符在类的内部在类的内部同一包内同一包内子类子类 任意位置任意位置 private yes default yes yes protected yes yes yes public yes yes yes yes在在java中类、类的成员变量、类的成员方法都用上述的访问控制符进行访问权限中类、类的成员变量、类的成员方法都用上述的访问控制符进行访问权限的控制,若省略访问控制符则为的控制,若省略访问控制符则为default对象与类对象与类对象与类对象与类请找出错误请找出
25、错误请找出错误请找出错误:在在在在first.javafirst.java中中中中class Parent class Parent private int a;private int a;int b;int b;protected int c;protected int c;public int d;public int d;class Parent2class Parent2 public static void main(public static void main(Strings args)Strings args)Parent p=new Parent();Parent p=new
26、 Parent();p.a=10;p.b=10;p.a=10;p.b=10;p.c=10;p.d=10;p.c=10;p.d=10;在在在在scecond.javascecond.java中中中中package m;package m;class Child extends Parentclass Child extends Parent public static void main(public static void main(Strings args)Strings args)Parent p=new Parent();Parent p=new Parent();p.a=1;p.a=1
27、;p.b=1;p.b=1;p.c=1;p.c=1;p.d=1;p.d=1;6、多态:、多态:6-1:方法重载:方法重载:同一个类中对定义多个同名方法,它们的参数类型或参数的个数不一同一个类中对定义多个同名方法,它们的参数类型或参数的个数不一致。致。6-2:方法重写:方法重写:子类中重新定义父类的一个方法子类中重新定义父类的一个方法(即方法签名相同的方法。即方法签名相同的方法。)。限制:限制:不能更改被重写方法的返回类型。不能更改被重写方法的返回类型。不能有比被重写方法的更严格的访问控制。不能有比被重写方法的更严格的访问控制。对象与类对象与类7、抽象类:、抽象类:多用来描述一个抽象的通用的概念,
28、该概念泛指一类事物,但不指向特多用来描述一个抽象的通用的概念,该概念泛指一类事物,但不指向特定的对象。如:动物、人。定的对象。如:动物、人。另外,另外,JAVA中还常用用抽象类来给定某个接口的默认实现,这样用只须中还常用用抽象类来给定某个接口的默认实现,这样用只须从抽象类继承,重写想要重写的方法,而不必实现所有的方法。从抽象类继承,重写想要重写的方法,而不必实现所有的方法。7-1:抽象类是用:抽象类是用absract修饰的类。它不能被实例化,但可声明引用变量。修饰的类。它不能被实例化,但可声明引用变量。7-2:抽象类中可以有两种类型的成员方法:抽象类中可以有两种类型的成员方法:抽象方法:用抽象
29、方法:用abstract修饰的方法,只有声明没有实现(只在抽象类修饰的方法,只有声明没有实现(只在抽象类中声明)。中声明)。普通方法:有声明有实现。普通方法:有声明有实现。7-3:可以有成员变量(属性),请注意:可以有成员变量(属性),请注意abstract不能修饰成员属性不能修饰成员属性 7-4:若子类若不是抽象类则必须实现所有的抽象方法。若子类若不是抽象类则必须实现所有的抽象方法。类与对象类与对象找出错误并改正找出错误并改正public abstract class Animal public abstract String color;public abstract void eat()
30、;public abstract void bid();class Aa extends Animalpublic static void main(String args)Aa aa=new Aa();类与对象类与对象关键字:关键字:super,this,staticsuper:父类的引用父类的引用this:当前类的引用当前类的引用static:定义静态资源定义静态资源 包括:静态内部类、静态成员变量、静态成员方法包括:静态内部类、静态成员变量、静态成员方法.-静态资源是依附类的,在类加载的同时被加载,为该类静态资源是依附类的,在类加载的同时被加载,为该类所有实例所共用。可通过类名来调用,当
31、然也可通过实例所有实例所共用。可通过类名来调用,当然也可通过实例来调用。来调用。-静态成员方法只能直接访问类中的静态资源静态成员方法只能直接访问类中的静态资源对象与类对象与类8、接口:、接口:用于定制一组操作契约,也可说是制定一个操作标准。用于定制一组操作契约,也可说是制定一个操作标准。8-1:按接口编程思想:按接口编程思想 编写代码时尽量使用接口,不要过多涉及具体实现,这样的代码更易维编写代码时尽量使用接口,不要过多涉及具体实现,这样的代码更易维护。护。8-2:可将接口看成是一个特殊的抽象类:可将接口看成是一个特殊的抽象类:-接口内可以声明成员变量,且都为接口内可以声明成员变量,且都为:pu
32、blic static final -接口内只能声明方法,不能实现任何方法。接口内只能声明方法,不能实现任何方法。-一个类可以同时实现多个接口一个类可以同时实现多个接口,只能继承一个抽象类。只能继承一个抽象类。-接口的实现类必须实现接口中声明的所有方法接口的实现类必须实现接口中声明的所有方法 对象与类对象与类看以下几段代码,选择正确的。看以下几段代码,选择正确的。对象与类对象与类A)A)public interface aapublic interface aa int id=10;int id=10;public void mm();public void mm();public void
33、nn();public void nn();B)B)public interface aapublic interface aa pubic final id;pubic final id;public void mm();public void mm();public void nn();public void nn();c)c)public interface aapublic interface aa public static final int id=0;public static final int id=0;public void mm();public void mm();pu
34、blic void nn();public void nn();B)B)public interface aapublic interface aa protected static final int id=10;protected static final int id=10;public void mm();public void mm();public void nn();public void nn();示例:示例:public abstract class Animal private String color;public abstract void eat();public a
35、bstract void bid();public Animal(String color)this.color=color;class Cat extends Animalpublic Cat(String color)super(color);public void bid()System.out.println(猫喵喵叫猫喵喵叫);public void eat()System.out.println(猫吃鱼猫吃鱼);class Dog extends Animalpublic Dog(String color)super(color);public void bid()System.o
36、ut.println(狗汪汪叫狗汪汪叫);public void eat()System.out.println(狗吃肉狗吃肉);public class MySelf public Animal pet;public static void main(String args)Cat cat=new Cat(yellow);MySelf self=new MySelf(cat);self.petEnjoy();self.feedPet();Dog dog=new Dog(black);self.setPet(dog);self.petEnjoy();self.feedPet();示例:示例:p
37、ublic MySelf(Animal pet)this.pet=pet;public void petEnjoy()pet.bid();public void feedPet()pet.eat();public Animal getPet()return pet;public void setPet(Animal pet)this.pet=pet;容器容器CollectionListSetArrayListLinkedListHashSetTreeSetMapHashMapTreeMapCollection:定义了存取对象的最基本的方法定义了存取对象的最基本的方法 子接口子接口List和和S
38、et分别定义了存储方式。分别定义了存储方式。List顺序存储对象(即存储顺序同插入顺序),可插入重顺序存储对象(即存储顺序同插入顺序),可插入重复对象。复对象。Set-存储的对象没有特定顺序,不可以重复。存储的对象没有特定顺序,不可以重复。Map定义了按定义了按”键键(key)值值(value)”方式成对存取数据方式成对存取数据的数据结构。的数据结构。容器容器1、Collection中定义的常见方法:中定义的常见方法:int size();boolean isEmpty();void clear();boolean contains(Object Element);boolean add(Ob
39、ject Element);boolean remove(Object Element);Iterator iterator();boolean containsAll(Collection c);boolean addAll(Collection c);boolean removeAll(Collection c);boolean retainAll(Collection c);Object toArray();容器容器容器容器注:集合中元素的删除注:集合中元素的删除remove和和contains方法涉及到集合元素方法涉及到集合元素的比较,若元素为用户定义的类型,则请重写它的的比较,若元素
40、为用户定义的类型,则请重写它的equals方法和方法和hashCode()。请记住以下的一个原则:请记住以下的一个原则:两个对象它们的两个对象它们的equals为为true,则它们的则它们的hashCode()方法()方法也相等。也相等。示例:示例:迭代器:迭代器:用于遍历集合中的所有元素,不须考虑集合的实现方式。用于遍历集合中的所有元素,不须考虑集合的实现方式。Iterator接口:接口:Iterator boolean hasNext();Object next();remove();Iterator ite=集合引用集合引用.iterator();注:每次注:每次remove之前必须调用
41、之前必须调用next()另外还有专用于另外还有专用于List的的ListIterator接口。接口。容器容器HashSet:(无自然顺序)(无自然顺序)java中采用散列表(哈希表)为数据结构的集合类型。中采用散列表(哈希表)为数据结构的集合类型。特点:在不知道对象的位置的情况下可以实现快速查找对象。其查找方式就是特点:在不知道对象的位置的情况下可以实现快速查找对象。其查找方式就是利用的对象的利用的对象的hashcode(由由hashCode()方法生成方法生成)计算对象的位置。计算对象的位置。默认默认hashCode()方法继承自方法继承自Object取对象的引用为其取对象的引用为其hash
42、code。若对象用于。若对象用于某个散列结构中,请在其类中重写某个散列结构中,请在其类中重写hashCode()方法。方法。其原则是:生成的其原则是:生成的 hashcode尽量平均分布,少重复,且要根据某个或几个尽量平均分布,少重复,且要根据某个或几个实例字段生成。生成算法相当复杂,一个建议是:采用一个或多个可以标识实例字段生成。生成算法相当复杂,一个建议是:采用一个或多个可以标识对象的对象的String实例字段的实例字段的hashcode的和做为对象的的和做为对象的hash codeSet加载因子加载因子默认值为值为0.75,默认哈希表元为哈希表元为101 容器容器TreeSet:(有序(
43、有序)可以在元素插入时就对元素排序,这样迭代时就按照排序好的顺序取出元素。可以在元素插入时就对元素排序,这样迭代时就按照排序好的顺序取出元素。(红黑树红黑树).即元素必须是可比较的。即元素必须是可比较的。排序时的比较:排序时的比较:public interface Comparablepublic int compareTo(Object obj);元素须实现元素须实现Comparable接口,调用其接口,调用其compareTo()进行比较进行比较,如:元素如:元素a与元素与元素b比比较,若结果较,若结果0,a在在b的后面的后面或在实例化时为构造函数指定比较器或在实例化时为构造函数指定比较器(实现实现Comparator接口的类接口的类)容器容器映射表:映射表:Map 用于快速的按键(用于快速的按键(key)查找元素。)查找元素。HashMap:对对key进行散列进行散列 TreeMap:对对key排序排序注:在注:在JAVA中中Map可以有三种视图:可以有三种视图:键集、值集、键键集、值集、键/值集值集(Entry)Set keySet();(注:这里得到的键集不是注:这里得到的键集不是HashSet也不是也不是TreeSet,而是实现而是实现了了set接口的其它类接口的其它类)Collections values();SetEntry entrySet();容器容器
限制150内