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

顺义做网站的厂家杭州网站建设响应式

顺义做网站的厂家,杭州网站建设响应式,佛山网站改版,wordpress 1g内存泛型的知识点 泛型仅存在于编译时期#xff0c;编译期间JAVA将会使用Object类型代替泛型类型#xff0c;在运行时期不存在泛型#xff1b;且所有泛型实例共享一个泛型类 public class Main{public static void main(String[] args){ArrayListString list1new Arra…泛型的知识点 泛型仅存在于编译时期编译期间JAVA将会使用Object类型代替泛型类型在运行时期不存在泛型且所有泛型实例共享一个泛型类 public class Main{public static void main(String[] args){ArrayListString list1new ArrayListString();ArrayListInteger list2new ArrayListInteger();System.out.println(list1 instanceof ArrayList);//trueSystem.out.println(list2 instanceof ArrayList);//true//System.out.println(list1 instanceof ArrayListString);//编译错误不存在此类型} }虽然list1和list2属于不同的类型但是JVM加载的类仅ArrayList各泛型实例共享这个类 泛型的4个限制 (1)不能new T() (2)不能创建泛型数组new T[]; 但是可以使用强制类型转换的方法不过编译器会给出一个警告。 T[] arr(T[])new ArrayList[10]; (3)在静态环境下不能使用泛型类型的参数 如静态方法、静态变量、静态代码块都不能用泛型类型原因在于各泛型实例共享一个类而静态成员时随着类的加载就存在了的。 (4)异常类不能是泛型的。 学习地址 以下是关于Java泛型的一些重要知识点 泛型类 使用或任何字母但通常使用T、E、K、V等作为约定来声明泛型类。 在类体内部可以使用泛型类型参数如T来声明属性、方法参数和返回值类型。 泛型参数在编译时会被擦除类型擦除因此运行时无法知道具体的泛型类型除非通过其他方式如使用instanceof检查对象的具体类型。 泛型方法 泛型方法可以在普通类或非泛型类中定义。 使用或其他字母在方法返回类型之前声明泛型参数。 泛型参数可以与方法参数或局部变量一起使用。 类型擦除 在编译时泛型信息会被擦除替换为原始类型如Object。 这意味着在运行时泛型参数的实际类型信息是未知的。 为了保持类型安全编译器会在编译时插入类型转换和类型检查。 泛型限制 可以使用extends关键字为泛型参数设置上界即该参数必须是某个类的子类或实现了某个接口。 类似地可以使用super关键字为泛型参数设置下界即该参数必须是某个类的超类或接口。 静态成员与泛型 静态成员包括变量、方法和内部类不能使用类的泛型参数。 这是因为静态成员是与类关联的而不是与类的任何特定实例关联的。 如果需要在静态上下文中使用泛型可以定义泛型静态方法或泛型内部类。 泛型通配符 使用?表示未知的泛型类型。 ? extends T表示未知的类型但它是T或T的子类。 ? super T表示未知的类型但它是T或T的超类。 泛型与数组 不能创建泛型数组如new T[10]因为类型擦除后无法确保类型安全。 但可以使用泛型集合如ArrayList来替代。 泛型与原始类型 如果没有为泛型类型提供实际的类型参数编译器会将其视为原始类型即擦除泛型参数的类型。 这通常是不安全的因为它会导致类型检查失效。 泛型与类型推断 Java编译器可以使用类型推断来自动确定泛型方法的类型参数。 这在使用泛型方法时提高了代码的可读性和简洁性。 泛型与泛型方法的区别 泛型类是在类声明中定义的泛型参数用于整个类的所有非静态成员。 泛型方法是在方法声明中定义的泛型参数仅用于该方法内部。 希望这些知识点能帮助你更好地理解和使用Java泛型。 题目一 下面五条语句中错误的有_______________________________________________。 1ArrayListString lists new ArrayListString(); 2ArrayListObject lists new ArrayListString(); 3ArrayListString lists new ArrayListObject(); 4ArrayListString lists new ArrayList(); 5ArrayList lists new ArrayListString();ArrayListObject lists new ArrayListString(); // 编译错误这是错误的。它尝试将lists声明为ArrayList类型但试图用ArrayList的实例来初始化它。在Java中泛型不是协变的所以ArrayList不是ArrayList的子类型。 ArrayListString lists new ArrayListObject(); // 编译错误这同样是错误的。它尝试将lists声明为ArrayList类型但试图用ArrayList的实例来初始化它。这会导致编译时类型不匹配错误因为ArrayList不是ArrayList的子类型。 题二 下面泛型定义中不正确的是_D_。 A. class Test1 {} B. interface Test2 {} C. class Test3{ void test () {}} D. class Test4{void test () {}} D. class Test4{void test () {}} 是不正确的。在Java中你不能在方法内部定义泛型参数 。泛型参数应该在类、接口或方法的返回类型之前定义。正确的泛型方法定义应该是这样的 class Test4 { T void test() {} }题三 8. 下列语句编译时不出错的是___________。 A. List? c1 new ArrayListString (); c1.add (new Object ()); B. List? c2 new ArrayListString (); c2.add (new String (1)); C. List? c3 new ArrayListString (); c3.add (1); D. List? c4 new ArrayListString (); c4.add(null);在Java中List? 是一个未知类型的列表这被称为通配符捕获wildcard capture。由于它是未知的你不能向这样的列表中添加任何元素除了null因为你不能保证列表的实际类型能够容纳你试图添加的元素。 现在我们来看每一个语句 List? c1 new ArrayList (); c1.add (new Object ()); 这个会编译失败。因为 c1 是一个未知类型的列表你不能向其添加任何具体的对象除了null。 List? c2 new ArrayList (); c2.add (new String (“1”)); 这个也会编译失败。同样的原因c2 是一个未知类型的列表你不能向其添加 String 对象。 List? c3 new ArrayList (); c3.add (“1”); 这个也会编译失败。c3 是一个未知类型的列表你不能向其添加 String 对象。 List? c4 new ArrayList (); c4.add(null); 这个不会编译失败。因为 null 可以被赋予任何类型的变量包括未知类型的列表。 因此只有c4的语句不会编译失败。 题四 给定下列代码 class Shape {} class Circle extends Shape {} class Triangle extends Shape {} public class Test2_9 {public static void main (String [] args) {List? extends Shape list1 new ArrayList Triangle ();List? extends Shape list2 new ArrayListCircle ();System.out.println(list1 instanceof List Triangle); ①System.out.println(list2 instanceof List); ②System.out.println(list1.getClass() list2.getClass()); ③} }则关于语句①②③说法正确的是___________。 A. ①②③输出结果为true、false、false B. ①②③输出结果为true、true、true C. ①编译出错②③输出结果为false、false D. ①编译出错②③输出结果为true、true 选 D 运行的时候不存在泛型list1 list2 和 list3运行的时候都是ArrayList 题五 对于泛型类class A { … }T在A类里可以用作不同的地方在A类类体内下面语句正确的有_____________________________________________________________。 A. T x; B. T m1() {return null;} C. static T y; D. void m2(T i) {} E. static T s1() {return null;} F. static void s2(T i) {} G. static void s3(T1 i, T1 j){} 对于泛型类 A我们可以分析每个选项来确定哪些在类体内是正确的。 A. T x; 这是正确的。在泛型类的实例成员变量中我们可以使用泛型参数 T 来声明一个变量。 B. T m1() {return null;} 这也是正确的。在泛型类的方法中我们可以使用泛型参数 T 作为返回类型或参数类型。但是这里需要注意的是如果 T 是一个非可空类型例如一个具体的类或接口那么直接返回 null 可能会产生编译错误除非 T 被声明为可以包含 null例如 T extends SomeType | null在Java 8及以上版本使用。但仅从语法的角度看这个方法是合法的。 C. static T y; 这是不正确的。静态成员变量不能是泛型的因为静态成员是与类关联的而不是与类的任何特定实例关联的因此它们不能在声明时引用实例的类型参数。 D. void m2(T i) {} 这是正确的。在泛型类的方法中我们可以使用泛型参数 T 作为参数类型。 E. static T s1() {return null;} 这是不正确的。与C选项类似静态方法不能引用泛型参数因为它们是类级别的而不是实例级别的。 F. static void s2(T i) {} 这也是不正确的。静态方法不能引用泛型参数。 G. static void s3(T1 i, T1 j){} 这实际上是正确的但它有点误导因为它定义了一个新的类型参数 T1而不是使用类的泛型参数 T。不过从语法的角度看这个静态方法声明是合法的它定义了一个泛型静态方法。 总结 正确的选项是 A, B, 和 D如果忽略B选项的 null 返回可能导致的类型不匹配问题。而G选项虽然技术上也是正确的但它引入了一个新的类型参数 T1这可能不是题目所期望的。如果考虑仅使用类声明的泛型参数 T则G选项不应被视为正确。 题目六 List? extends ComparableDouble x8 new ArrayListDouble ();这个句子是没有问题的 题目七 关于java泛型下面描述正确的是___________________________。 A. 泛型的类型参数只能是类类型包括自定义类不能是基本类型 B. 泛型的类型参数可以有多个 C. 不能对泛型的具体实例类型使用instanceof操作如 o instanceof ArrayList否则编译时会出错。 D. 不能创建一个泛型的具体实例类型的数组如 new ArrayList[10]否则编译时会出错。 关于Java泛型的描述正确的选项是 A. 泛型的类型参数只能是类类型包括自定义类不能是基本类型 这个描述是正确的。在Java中泛型类型参数不能是基本类型如int, float, char等而只能是类类型包括自定义类、接口、数组类型或另一个泛型类型。 B. 泛型的类型参数可以有多个 这个描述也是正确的。Java支持定义带有多个类型参数的泛型类和方法。例如class MyClassT, U { … }。 C. 不能对泛型的具体实例类型使用instanceof操作如 o instanceof ArrayList否则编译时会出错。 这个描述不完全正确。在Java中你不能直接使用带有泛型参数的instanceof操作因为类型擦除导致在运行时泛型信息不可用。但是你可以省略泛型参数只检查原始类型如 o instanceof ArrayList。然而这并不会导致编译错误只是这样的检查通常没有太多意义因为它不会告诉你列表中元素的类型。 D. 不能创建一个泛型的具体实例类型的数组如 new ArrayList[10]否则编译时会出错。 这个描述是正确的。在Java中你不能创建泛型类型的数组因为类型擦除和数组协变性的结合会导致运行时类型安全问题。如果你尝试这样做编译器会报错。 综上所述正确的选项是A、B和D。
http://www.hkea.cn/news/14304179/

相关文章:

  • 鲜花团购网站建设广州汽车网络推广服务
  • 购物网站后台模板网站推广策划案
  • 网站备案号 查询在手机上怎么制作网站
  • 苏州大型网站建设公司解决wordpress后台加载非常缓慢
  • 湖北省建设厅网站怎么打不开广州建站快车
  • 建设网站书陕西网站建设品牌公司推荐
  • 免费网站建设排行榜wordpress的文章置顶有什么用
  • 太原网站制作小程序郑州制作网站推荐
  • 用什么软件上传网站网站开发的四个高级阶段包括
  • 湖北聚四方建设有限公司网站谁给个能用的网址
  • 做普通网站公司wordpress 漏洞 修复
  • 网站商城建设的维度免费电子版个人简历可编辑
  • 微信企业网站 源码下载wordpress插件数据存放
  • 企业网站制作费做分录贵州省冶金建设有限公司网站
  • 长沙制作网站公司wordpress分类页面添加幻灯片
  • 东莞外贸网站建设策划方案flash型网站网址
  • 站长工具seo源码有网络但是网页打不开
  • 响应式网站有什么好处wordpress统计查看
  • 个人做网站模版是否有人买个性化网站建设公司电话
  • 网站描述如何写利于优化搭建购物商城
  • 北京专业网站营销图标设计免费logo在线生成
  • 高校网站建设目的县城做信息网站
  • 网站微信建设运维培训班网站备案渝
  • 陕西住房和城乡建设部网站首页博客网
  • 网站建设分为哪三部分有经验的中山网站建设
  • 企业网站搜索引擎拓客济南建设集团网站
  • 2017网站开发合同下载花生壳怎么建设购物网站
  • 西安异构国际设计做网站怎么优化
  • 自己做的网站有什么用个人做网站名称怎么选择
  • 做网站维护的收入怎么确认重庆百度整站优化