当前位置: 首页 > news >正文

网站建设项目特色做传奇开服一条龙网站哪个好

网站建设项目特色,做传奇开服一条龙网站哪个好,怎样做违法网站,百科网站开发JDK1.5新特性 目录1.之前已经学习过的JDK1.5新特性2.静态导入 StaticImport3.可变参数 ...4.高级for循环5.枚举6.泛型 Generic7.注解注#xff1a;本章全部为重点内容。###################################################################################################… JDK1.5新特性 目录1.之前已经学习过的JDK1.5新特性2.静态导入 StaticImport3.可变参数 ...4.高级for循环5.枚举6.泛型 Generic7.注解注本章全部为重点内容。########################################################################################################################################################################1.之前已经学习过的JDK1.5新特性(1)StringBuilder(2)Lock(3)Condition(4)自动装箱与拆箱2.静态导入 StaticImportimport 语句可以导入一个类或某个包中的所有类import static 语句导入一个类中的某个静态成员或所有静态成员注意a.当类中方法都是静态方法如工具类可以使用静态导入b.当类名重名时需要指定具体的包名。当方法重名时指定具备所属的对象或者类。    代码示例 1 import java.util.*;//导入了Util包中所有的类2 import static java.util.Arrays.*;//导入leArrays这个类中的所有静态成员。3 import static java.util.Collections.sort;//导入了Collections类中的sort方法。4 import static java.lang.System.out;//导入了System类中的out。5 class StaticImport6 {7 public static void main(String[] args)8 {9 out.println(haha);//省略了System. 10 int[] arr {3,1,5}; 11 sort(arr); 12 out.println(Arrays.toString(arr)); 13 //这里的Arrays不能省略因为该类默认继承了Object类而Object类也有toString方法当方法重名时指定具备所属的类 14 ArrayList al new ArrayList(); 15 al.add(1); 16 al.add(3); 17 al.add(2); 18 out.println(al); 19 sort(al); 20 out.println(al); 21 } 22 }   3.可变参数 ...函数的另一种表现形式    返回值类型   函数名(参数类型 ... 形式参数)        {            执行语句        }其实接收的是一个数组可以指定实际参数个数。注意a.可变参数只能出现在参数列表的最后;b. ...位于变量类型和变量名之间前后有无空格都可以;c.调用可变参数的方法时编译器为该可变参数隐含创建一个数组在方法体中以数组的形式访问可变参数。当方法接收得参数个数不固定时如何实现//方法一 重载 1 class ParamMethodDemo2 {3 public static void main(String[] args)4 {5 //show(3,4);6 7 public static void show(int a,int b)8 {9 //执行语句 10 } 11 public static void show(int a,int b,int c) 12 { 13 //执行语句 14 } 15 }   //方法二 数组 虽然少定义了多个方法。但是每次都要定义一个数组。作为实际参数。 1 class ParamMethodDemo2 {3 public static void main(String[] args)4 {5 int[] arr {3,4};6 show(arr);7 8 int[] arr1 {2,3,4,5};9 show(arr1); 10 11 public static void show(int[] arr) 12 { 13 //执行语句 14 } 15 }   //方法三 可变参数...//数组参数的简写形式。不用每一次都手动的建立数组对象。只要将要操作的元素作为参数传递即可。隐式的将这些参数封装成了数组。 1 class ParamMethodDemo2 {3 public static void main(String[] args)4 {5 show(haha,2,3,4,5,6);6 //show();//传了一个0长度的数组7 8 }9 //public static void show(int... arr,String str)//编译失败可变参数要在参数列表最后面 10 public static void show(String str,int... arr) 11 { 12 //执行语句 13 } 14 } 4.高级for循环(1)格式    for(数据类型 变量名 : 被遍历的集合(Collection)或者数组)    {    }(2)特点凡是支持迭代器的集合也都支持高级 for 循环它是迭代器的简写格式.有泛型时可以指定数据类型没有泛型时要用 Object 来接受任意类型的数据。注意事项迭代变量必须在( )中定义集合变量可以是数组或实现了Iterable接口的集合类(3)高级for循环和迭代器的区别对集合进行遍历。只能获取集合元素。但是不能对集合进行操作。迭代器除了遍历还可以进行remove集合中元素的动作。如果是用ListIterator还可以在遍历过程中对集合进行增删改查的动作。(4)传统for和高级for的区别高级for有一个局限性。必须有被遍历的目标。建议在遍历数组的时候还是希望是用传统for。因为传统for可以定义角标。(5)代码示例对于数组        int[] arr {3,5,1};        for(int i : arr)        {            System.out.println(i:i);        }对于Collection集合        ArrayListString al new ArrayListString();        al.add(abc1);        al.add(abc2);        al.add(abc3);        for(String s : al)        {            System.out.println(s);        }问题    判断打印结果    ArrayListString al new ArrayListString();    al.add(abc1);    al.add(abc2);    al.add(abc3);    for(String s : al)    {        s kk;    }    System.out.println(al);    s只是指向了集合中的元素在遍历过程中被打印。当s指向其它对象时集合中的元素没有变化所以打印集合结果也不会变化,为原集合。    对于Mpa集合    keySet方法        SetInteger keySet hm.keySet();        for(Integer i : keySet)    简写格式        for(Integer i : hm.keySet())    entrySet方法        SetMap.EntryInteger,String entrySet hm.entrySet();        for(Map.EntryInteger,String me : entrySet)    简写格式        for(Map.EntryInteger,String me : hm.entrySet())5.枚举(1)为什么要有枚举假设用1-7分别表示星期一到星期日但有人可能会写成int weekday 0;或即使使用常量方式也无法阻止意外。枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个否则编译器就会报错。枚举可以让编译器在编译时就可以控制源程序中填写的非法值普通变量的方式在开发阶段无法实现这一目标。(2)普通类与枚举定义一个Weekday的普通类来模拟枚举功能。 1 public abstract class WeekDay {2 private WeekDay(){}3 public static final WeekDay SUNnew WeekDay(){4 public WeekDay nextDay(){5 return MON;6 }7 };8 public static final WeekDay MONnew WeekDay(){9 public WeekDay nextDay(){ 10 return SUN; 11 } 12 }; 13 public abstract WeekDay nextDay(); 14 public String toString(){ 15 return thisSUN?SUN:MON; 16 } 17 }   枚举的做法 1 enum WeekDay{2 SUN{3 public WeekDay nextDay(){4 return MON;5 }6 },7 MON{8 public WeekDay nextDay(){9 return SUN; 10 } 11 }; 12 13 public abstract WeekDay nextDay(); 14 }   注意a.枚举是一种特殊的类其中的每个元素都是该类的一个实例对象b.枚举也可以定义构造方法、成员变量、普通方法和抽象方法。但构造方法必须定义成私有的c.枚举元素必须位于枚举体中的最开始部分枚举元素列表的后要有分号与其他成员分隔。把枚举中的成员方法或变量等放在枚举元素的前面编译器会报告错误。d.枚举类的实例对象个数是有限的就是那些成员当枚举只有一个成员时就可以作为一种单例的实现方式。6.泛型 Generic用于解决安全问题是一个类型安全机制。(1)泛型概述泛型作用没有使用泛型时只要是对象不管是什么类型的对象都可以存储进同一个集合中。使用泛型集合可以将一个集合中的元素限定为一个特定类型集合中只能存储同一个类型的对象这样更安全并且当从集合获取一个对象时编译器也可以知道这个对象的类型不需要对对象进行强制类型转换这样更方便。泛型的好处1)提高了程序的安全性2)将运行期遇到的问题转移到了编译期3)省去了类型强转的麻烦4)泛型类的出现优化了程序设计泛型术语ArrayListE类定义和ArrayListInteger类引用中涉及如下术语整个ArrayListE称为泛型类型ArrayListE中的E称为类型变量或类型参数整个ArrayListInteger称为参数化的类型ArrayListInteger中的Integer称为类型参数的实例或实际类型参数ArrayListInteger中的念typeofArrayList称为原始类型参数化类型与原始类型的兼容性参数化类型可以引用一个原始类型的对象编译报告警告原始类型可以引用一个参数化类型的对象编译报告警告注意编译器不允许创建泛型变量的数组。即在创建数组实例时数组的元素不能使用参数化的类型(2)泛型的定义泛型既可以定义在类上也可以定义在方法上包括静态方法和非静态方法还可以定义在接口上和异常中。1)泛型定义在类上如果类的实例对象中的多处都要用到同一个泛型参数即这些地方引用的泛型类型要保持同一个实际类型时这时候就要采用泛型类型的方式进行定义也就是类级别的泛型泛型类定义的泛型在整个类中有效。如果被方法使用那么泛型类的对象明确要操作的具体类型后所有要操作的类型就已经固定了。语法格式如下    public class GenericDaoT {        private T field1;        public void save(T obj){}        public T getById(int id){}    }代码示例     1 //泛型被定义在类上2 class DemoT3 {4 public void show(T t)5 {6 System.out.println(show:t);7 }8 public void print(T t)9 { 10 System.out.println(print:t); 11 } 12 } 13 class GenericDemo 14 { 15 public static void main(String[] args) 16 { 17 DemoInteger d new DemoInteger(); 18 19 d.show(new Integer(4)); 20 d.print(3); 21 //编译通过泛型定义在类上明确操作类型后所有方法都只能操作该类型 22 23 DemoString d1 new DemoString(); 24 d1.print(haha); 25 d1.show(5); 26 //编译失败已经明确数据为Stringshow方法却操作了Intager 27 28 } 29 }   2)泛型定义在方法上为了让不同方法可以操作不同类型而且类型还不确定。那么可以将泛型定义在方法上。用于放置泛型的类型参数的尖括号应出现在方法的其他所有修饰符之后和在方法的返回类型之前也就是紧邻返回值之前。按照惯例类型参数通常用单个大写字母表示。如交换数组中的两个元素的位置的泛型方法语法定义如下static E void swap(E[] a, int i, int j) {    E t a[i];    a[i] a[j];    a[j] t;}注意只有引用类型才能作为泛型的实际参数swap(new int[3],3.5);语句会报告编译错误这是因为new int[3]本身已经是对象了编译器不会对new int[3]中的int自动拆箱和装箱了。代码示例    1 class Demo2 {3 public T void show(T t)4 {5 System.out.println(show:t);6 }7 public T void print(T t)//两个方法中的T没有关系。因为泛型只在方法内有效8 {9 System.out.println(show:t); 10 } 11 } 12 class GenericDemo 13 { 14 public static void main(String[] args) 15 { 16 Demo d new Demo(); 17 d.show(haha); 18 d.show(new Integer(4)); 19 d.print(heihei); 20 //编译通过泛型定义在方法上只在方法中有效彼此不影响 21 22 } 23 } 3)泛型既定义在类上又定义在方法上 1 class DemoT2 {3 public void show(T t)4 {5 System.out.println(show:t);6 }7 public Q void print(Q q)8 {9 System.out.println(print:q); 10 } 11 } 12 class GenericDemo 13 { 14 public static void main(String[] args) 15 { 16 Demo String d new DemoString(); 17 d.show(haha); 18 //d.show(4);//编译失败show方法只能调用已经明确的操作类型 19 d.print(5); 20 d.print(hehe); 21 //编译通过泛型定义在print方法上可以操作不同类型。 22 } 23 }   4)泛型定义在静态方法上静态方法不可以访问类上定义的泛型。因为泛型定义在类上时操作类型是在对象建立时明确的只有对象带着类型在运行。而静态方法方法存在时对象还不存在所以不能访问类上定义的泛型。如果静态方法操作的应用数据类型不确定可以将泛型定义在方法上。代码示例    class DemoT    {        public  static W void method(W t)        {            System.out.println(method:t);        }    }    class GenericDemo     {        public static void main(String[] args)         {            Demo.method(hahahahha);        }    }5)泛型定义在接口上    interface InterT    {        void show(T t);    }    //当实现时已经确定操作类型    class InterImpl implements InterString    {        public void show(String t)        {            System.out.println(show :t);        }    }    class GenericDemo     {        public static void main(String[] args)         {            InterImpl i new InterImpl();            i.show(haha);        }    }    //当实现时不确定操作类型    class InterImplT implements InterT    {        public void show(T t)        {            System.out.println(show :t);        }    }    class GenericDemo5     {        public static void main(String[] args)         {            InterImplInteger i new InterImplInteger();            i.show(4);        }    }6)泛型定义在异常内也可以用类型变量表示异常称为参数化的异常可以用于方法的throws列表中但是不能用于catch子句中。用下面的代码说明对异常如何采用泛型private static T extends Exception sayHello() throws T{    try{        //被检测的语句    }catch(Exception e){        throw (T)e;    }}注意a.在对泛型类型进行参数化时类型参数的实例必须是引用类型不能是基本类型。b.当一个变量被声明为泛型时只能被实例变量、方法和内部类调用而不能被静态变量和静态方法调用。因为静态成员是被所有参数化的类所共享的所以静态成员不应该有类级别的类型参数。(3)泛型限定? 通配符当对象类型不确定时可以用一个通配符来表示。也可以理解为占位符。使用?通配符可以引用其他各种参数化的类型?主要用作引用不能用它去给其他变量赋值;可以调用与参数化无关的方法不能调用与参数化有关的方法。 extends E: 可以接收E类型或者E的子类型。上限。 super E: 可以接收E类型或者E的父类型。下限注意限定通配符总是包括自己。4)类型参数的类型推断编译器判断范型方法的实际类型参数的过程称为类型推断类型推断是相对于知觉推断的其实现方法是一种非常复杂的过程。根据调用泛型方法时实际传递的参数类型或返回值的类型来推断具体规则如下当某个类型变量只在整个参数列表中的所有参数和返回值中的一处被应用了那么根据调用方法时该处的实际应用类型来确定这很容易凭着感觉推断出来即直接根据调用方法时传递的参数类型或返回值来决定泛型参数的类型例如     swap(new String[5],3,4)      static E void swap(E[] a, int i, int j)当某个类型变量在整个参数列表中的所有参数和返回值中的多处被应用了如果调用方法时这多处的实际应用类型都对应同一种类型来确定这很容易凭着感觉推断出来例如     add(3,5)    static T T add(T a, T b) 当某个类型变量在整个参数列表中的所有参数和返回值中的多处被应用了如果调用方法时这多处的实际应用类型对应到了不同的类型且没有使用返回值这时候取多个参数中的最大交集类型例如下面语句实际对应的类型就是Number了编译没问题只是运行时出问题     fill(new Integer[3],3.5f)    static T void fill(T[] a, T v) 当某个类型变量在整个参数列表中的所有参数和返回值中的多处被应用了如果调用方法时这多处的实际应用类型对应到了不同的类型 并且使用返回值这时候优先考虑返回值的类型例如下面语句实际对应的类型就是Integer了编译将报告错误将变量x的类型改为float对比eclipse报告的错误提示接着再将变量x类型改为Number则没有了错误     int x (3,3.5f)    static T T add(T a, T b) 参数类型的类型推断具有传递性下面第一种情况推断实际参数类型为Object编译没有问题而第二种情况则根据参数化的Vector类实例将类型变量直接确定为String类型编译将出现问题    copy(new Integer[5],new String[5])  static T void copy(T[] a,T[]  b);    copy(new VectorString(), new Integer[5])  static T void copy(CollectionT a , T[] b);5)扩展阅读泛型是提供给javac编译器使用的可以限定集合中的输入类型让编译器挡住源程序中的非法输入编译器编译带类型说明的集合时会去除掉“类型”信息使程序运行效率不受影响对于参数化的泛型类型getClass()方法的返回值和原始类型完全一样。由于编译生成的字节码会去掉泛型的类型信息只要能跳过编译器就可以往某个泛型集合中加入其它类型的数据例如用反射得到集合再调用其add方法即可。Java中的泛型类型或者泛型类似于 C 中的模板。但是这种相似性仅限于表面Java 语言中的泛型基本上完全是在编译器中实现用于编译器执行类型检查和类型推断然后生成普通的非泛型的字节码这种实现技术称为擦除erasure编译器使用泛型类型信息保证类型安全然后在生成字节码之前将其清除。这是因为扩展虚拟机指令集来支持泛型被认为是无法接受的这会为 Java 厂商升级其 JVM 造成难以逾越的障碍。所以java的泛型采用了可以完全在编译器中实现的擦除方法。 7.注解 Annotation(1)概述1)什么是注解对于过时的语句java会提示过时了通过SuppressWarnings(Deprecation)可以在DOS命令行中取消提示但Eclipse无法取消。这就是注解相当于标记。编译器、开发工具、javac通过反射获得注解里的内容进而明确应该做什么、不应该做什么。注解可以加在包、类、属性、方法、参数及局部变量之上。一个注解就是一个类。2)java.lang包中的注解SuppressWarnings 取消警告保留到SOURCE阶段Deprecated 标识已过时保留到RUNTIME阶段Override 覆盖父类方法保留到SOURCE阶段(2)元注解元注解有2个Rentention和Target。对注解类的注解可以理解为注解类的属性。1)Rentention 注解类注解的生命周期由Rentention的3种取值决定Rentention的值是枚举RententionPolicy的值只有3个SOURCE、CLASS、RUNTIME。RententionPolicy.SOURCE对应Java源文件RententionPolicy.CLASS(默认值)对应class文件、RententionPolicy.RUNTIME对应内存中的字节码。2)Target注解类性质和Rentention一样都是注解类的属性表示注解类应该在什么位置对那一块的数据有效。例如Target(ElementType.METHOD)。Target内部的值使用枚举ElementType表示表示的主要位置有注解、构造方法、属性、局部变量、函数、包、参数和类(默认值)。多个位置使用数组例如Target({ElementType.METHOD,ElementType.TYPE})。 (3)注解属性属性给注解提供更加详细的信息。注解相当于接口属性相当于方法。例如ItcastAnnotation(colorblack)给属性赋值取值时类似调用方法例如System.out.println(annotation.color()); 所有的属性必须全部出现除非有缺省值。1)为属性指定缺省值String color() default yellow;2)value属性String value() default bbb; 当只设置value属性时入股其他属性都采用默认值或者只有一个value属性那么可以省略value部分例如MyAnnotation(aaa)。3)数组类型的属性int[] arr() default {3,7,5};MyAnnotation(arr{3,7,6}) 如果数组只有1个元素可以不加{}。Target({ElementType.METHOD,ElementType.TYPE}) 也是数组类型的属性。4)枚举类型的属性EnumTest.TrafficLamp lamp() ;MyAnnotation(lampEnumTest.TrafficLamp.GREEN)5)注解类型的属性将一个注解类作为属性加入到另一个注解类中。MetaAnnotation annotationAttr() default MetaAnnotation(xxxx);MyAnnotation(annotationAttrMetaAnnotation(“yyy”) ) 转载于:https://www.cnblogs.com/emos/p/3367307.html
http://www.zqtcl.cn/news/690949/

相关文章:

  • 安徽网站开发培训价格百度seo排名公司
  • 青海网站建设费用oa系统和erp系统区别
  • 个人做网站的注意事项网站开发工程师6
  • 镇江百度网站建设北京网站开发价格
  • 大岭山镇仿做网站推广计划表格
  • 网站备案地址不是我的地址怎么办建设银行网站查询业务收费吗
  • 电商网站设计内容网站编辑及seo招聘
  • 用什么网站开发浙江省住房和建设厅网站
  • 站长工具seo优化建议微信小程序线上商城怎么申请
  • 建筑网站开发设计做网站的公司msgg
  • 设计师个人网站模板网站的尾页要怎么做
  • 营销型网站建设风格设定包括哪些方面wordpress企业魔板
  • 怎样做淘客网站做绿色产品的网站
  • 关于网站建设的通知wordpress点注册后一直不出来
  • 科技公司网站设计方案开发公司绩效考核
  • 深圳网站建设推进旗县政务网站建设工作方案
  • 南宁 网站建设网站集约建设
  • 做网站编辑好吗吉林省四平市
  • 石家庄网站制作最新军事新闻最新消息视频
  • 高端品牌网站设计企业网站建设wordpress文章前阅读
  • 广州做网站星珀各电商网站的特点
  • 西安模板做网站广州微信网站建设平台
  • 网站开发硬件工程师待遇微信商城有哪些第三方平台
  • 基于响应式设计的网站建设软件开发项目甘特图
  • 绍兴兴住房和城乡建设局网站网站更换名称需要重新备案吗
  • 跨境电商网站开发文档网站建设费可摊几年
  • 怎样建设一个游戏网站随便玩玩在线制作网站
  • 免费的成品网站用织梦模板做网站
  • 彩票网站开发 极云有的域名怎样做网站
  • 网店运营推广网站买个天猫店多少钱一个