【Java入门】泛型的学习与应用
简介
以Table为例,class Table<T>{ }
<> 表示这就是一个泛型,a、b都是T型的。
class Table<T>{public T a;public T b;
}
Table泛型不是一个真的类,所以以下写法是错误的
public class Main{public static void main(String[] args) {Table t = new Table(); //错误,编译器报错}
}
正确的定义,使用 < > 定义。比较旧的JDK需要Table<Integer> t = new Table<Integer>();
。jdk1.7以上的在第一个 <> 中写就可以了。
public class Main{public static void main(String[] args) {Table<Integer> t = new Table<>(); t.a = 3;t.b = 4;}
}
如果要定义一个double型的泛型,如何做?
Table<double> t2 = new Table<>();
是这样吗?
其实这样写是错误的,Java语言的泛型不可以使用原始类型,应该写成Table<Double> t2 = new Table<>();
Java语言给每个原始类型都提供了对应的类。如 double 对应 Double。其实double
和Double
用法差不多,可以通用。注意此处只能用Double
。
应用
将学生类放进一个数组,使用ArrayLIst
(顺序表),Java中还有LinkedList
(链表)。
ArrayList
是一个容器类,是需要泛型的,即里面存放的数据类型可以自己指定。
如何定义呢?
学生类写简单点,就一个ID加姓名吧。
class Stu {public String id;public String name;
}
定义学生类ArrayLIst
,这里需要引入ArrayList类import java.util.ArrayList;
ArrayList<Stu> a1 = new ArrayList<>();
初始化实例
Stu zs = new Stu();
zs.id = "S0001";
zs.name = "张三";
Stu ls = new Stu();
ls.id = "S0002";
ls.name = "李四";
将实例加入ArrayLIst
a1.add(zs);
a1.add(ls);
完整的过程如下:
public class Main{public static void main(String[] args){ArrayList<Stu> a1 = new ArrayList<>();Stu zs = new Stu();zs.id = "S0001";zs.name = "张三";Stu ls = new Stu();ls.id = "S0002";ls.name = "李四";a1.add(zs);a1.add(ls);System.out.println(a1);}
}
此时输出的结果为
为什么看不到真实的值呢?而是地址呢?
这是因为学生类中没有重写toString()
其实每一个类都会有一个toString()
类,表示这个类以什么样的形式打印出来。
将学生类改写如下
class Stu {public String id;public String name;public String toString() {return "("+id+", "+name+")";}
}
再次输出就会得到真实的值
完整的程序如下,由于包名会不一样这里省略。
import java.util.ArrayList;class Stu{public String id;public String name;public String toString() {return "("+id+","+name+")";}
}
class Table<T>{public T a;public T b;
}
public class Test {public static void main(String[] args) {Table<Integer> t = new Table<>();t.a = 3;t.b = 4;//不可以使用原型类型// Table<double> t2 = new Table<>();Table<Double> t2 = new Table<>();t2.a = 9.1;t2.b = 4.5;ArrayList<Stu> al = new ArrayList<>();Stu zs = new Stu();zs.id = "S0001";zs.name = "张三";Stu ls = new Stu();ls.id = "S0002";ls.name = "李四";al.add(zs);al.add(ls);System.out.println(al);}
}
【Java入门】泛型的学习与应用相关推荐
- java入门-markdown语法学习
前言 本人是一名即将毕业的大四学生,还没有编程方面的工作经验,希望从事Java开发的相关工作,但是自身Java基础太过薄弱,将从今天开始重头开始学习java.学习路线采用b站鱼皮大佬的Java学习路线 ...
- Java入门1.2.3—一个老鸟的Java学习心得
Java入门1.2.3-一个老鸟的Java学习心得 基本信息 作者: 臧萌 出版社:清华大学出版社 ISBN:9787302217831 上架时间:2010-3-30 出版日期:2010 年3月 ...
- java入门学习_Java入门学习进阶知识点
Java入门学习进阶知识点 入门阶段,主要是培养Java语言的编程思想.了解Java语言的语法,书写规范等,掌握Eclipse.MyEclipse等开发工具,编写Java代码的能力.学完这个阶段你应该 ...
- 考研二战失败 我的从零开始Java入门学习(十)
文章目录 一.集合 1.Collection集合类 1.1 Collection集合类方法 1.2 Collection的子类 2.Map集合类 2.1 Map集合类方法 2.2 Map类的子类 3. ...
- java从入门到精通学习路线
目前Java在许多行业的客户端方面的应用非常多,比如OA.邮箱.投票.金融.考试.物流.医疗.矿山等信息方面的系统.Java开发者在这方面的需求也非常大,待遇也相当不错,工资水平可能和Java互联网方 ...
- Java入门学习注意事项有哪些?
想要学好java技术,做好学习规划路线和注意事项是非常重要的,尤其是零基础学员,Java涉及到的知识点非常多,我们需要制定合理的Java学习路线图,这样会事半功倍,下面小编和大家总结一下Java入门学 ...
- Java必备:java入门、java学习
2019独角兽企业重金招聘Python工程师标准>>> 版权声明:本文为北京尚学堂原创文章,未经允许不得转载. 1.Java入门 1-1.Java具有那些适合在Internet环境中 ...
- Java入门学习笔记[狂神说Java]
写在前面: 本文根据B站狂神说Java 与菜鸟教程 整理而来,仅供个人学习使用,如有侵权,请联系删除. 文章目录 IDEA使用 Java基础01:注释 Java基础02:数据类型 Java基础03:类 ...
- 计算机编程老鸟的心得,java入门123——一个老鸟java学习心得.docx
java入门123--一个老鸟的java学习心得 学习Java心得体会 学习了一学期的Java课程,觉得是该总结自己的心得体会了.开始学习任何一门课(包括java),兴趣最重要.一直觉得自己在学计算机 ...
- Java 从入门到高级学习路线
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. Java 从入门到高级学习路线 <一>1.Jvm 部分 Jvm 内存模型.Jvm 内存结 ...
最新文章
- 【Android RTMP】RTMPDumb 源码导入 Android Studio ( 交叉编译 | 配置 CMakeList.txt 构建脚本 )
- zabbix常用配置
- 高tps、低延迟_如何在不到1ms的延迟内完成100K TPS
- 突破C++的虚拟指针--C++程序的缓冲区溢出攻击
- 【C语言】(数组方式)求n名同学的平均成绩
- java使用内部类的好处及其初始化
- 仅需6道题轻松掌握Python时间和日期处理 | Python技能树征题
- c编程技巧——获取可用的处理器(CPU)核数
- draw_net.py绘制caffe net结构
- springboot+cxf框架 WebService
- Xweibo2.0nbsp;游客可以访问任何页面【…
- 雀巢咖啡旗下感CAFÉ推出高端鎏光咖啡;武田剥离中国大陆非核心业务至海森 | 美通企业日报...
- 计算机电子表格的优点,信息技术《电子表格的特点及应用》的说课稿
- 黑群晖折腾之docker系列之迅雷远程下载
- 用telnet登录163服务器发邮件
- 20 步打造完美网站布局设计
- 通读Docs - 《OPL1000 自学整理教程》
- 解决VirtualBox CentOS8无法调整分辨率的问题
- php js 插件,超轻量级网页流布局JS插件Macy.js
- 单例模式及单例类的两种实现
热门文章
- shell学习过程中的错误集锦
- 《剑指Offer》 矩形覆盖
- 什么是Vim,Vim及其安装
- 【jupyter notebook】开启远程服务 遇到No address associated with hostname
- linux 分卷解压
- 钉钉下载与安装过程 适用于windows系统 20200718
- 数据结构与算法-算法入门-什么是算法-算法的挑战
- nmon工具安装及使用
- Last_Error: Slave SQL thread retried transaction 10 time(s) in vain, giving up导致主从不同步的解决方法
- three.js之正投影摄像机与透视投影摄像机的区别