技术标签: java死鬼
泛型,又名"参数化类型",顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。
泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。也就是说在泛型使用过程中,操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。
已经有基本数据类型了,还引入泛型,为什么呢?
举个例子:
未使用泛型:
classprintArr{public void Parr(char[] Arr){ //字符串类型
for (int i = 0; i
System.out.print(Arr[i]);
}
System.out.println();
}public void IArr(int[] Iarr ){ //int类型
for (int i = 0; i
System.out.print(Iarr[i]);
}
}
}public classlizi {public static voidmain(String[] args) {char[] Arr = {'H', 'E', 'L', 'L', 'O'};int[] Iarr = {1,2,3,4,5,6,7};
printArr pa= newprintArr();
pa.Parr(Arr);
pa.IArr(Iarr);
}
}
运行结果:
1 HELLO2 1234567
View Code
由上的代码我们看见有许多冗余代码,作为一个优秀的程序员,我们肯定会用少量的代码,实现不变的功能,我们想到了用数据通用对象Object,说来就来,干了这段代码。。。一分钟后,我又回来了。Perfect,可以使用。
classprintArr{public void Parr(Object[] Arr){ //字符串类型
for (int i = 0; i
System.out.print(Arr[i]);
}
System.out.println();
}
}public classlizi {public static voidmain(String[] args) {
Object[] Arr= {'H', 'E', 'L', 'L', 'O'};
Object[] Iarr= {1,2,3,4,5,6,7};
printArr pa= newprintArr();
pa.Parr(Arr);
pa.Parr(Iarr);
}
}
运行结果:
1 HELLO2 1234567
3
4 Process finished with exit code 0
View Code
But,虽然这段代码看起来,非常灵活,可以接收任何数据类型,可以说是一劳永逸。但全面地讲,也不是没有缺陷的,主要表现在:当代码处理值类型时,会出现装箱、拆箱操作,但将用到的数据类型的强制转换操作,增加处理器的负担。
So,我们想到,能不能用一种方法,当我们调用方法时自动分配数据类型,不用再重复的封箱,拆箱,Congratulations,我们发现了泛型,,用一个通用的数据类型T来作为一个占位符,等待在实例化时用一个实际的类型来代替。let our see see 泛型的霸道之处。
我又来了,总算是好了。代码如下
classprintArr{//泛型方法 printArray
public < E > voidprintArray( E[] inputArray )
{//输出数组元素
for( E element : inputArray ){
System.out.printf("%s", element );
}
System.out.println();
}
}public classlizi {public static voidmain(String[] args) {
Character[] Carr= {'H', 'E', 'L', 'L', 'O'};
Integer[] Iarr= {1,2,3,4,5,6,7};
printArr pa= newprintArr();
pa.printArray(Carr);
pa.printArray(Iarr);
}
}
运行结果:
1 HELLO2 1234567
View Code
老规矩,最后加一句:
The harder, the luckier.
文章浏览阅读2.4k次,点赞2次,收藏6次。这两天做东西真是诸事不顺,caffe各种爆炸,今天在转换数据集格式的时候python又炸了,具体情况如下:环境anacond3,python3,opencv3,代码中cv2.imread(train_filepath)后返回NoneType,百度了一圈大都是说路径不对,opencv-python包不对之类的问题,于是我仔细检查各种路径没有问题后,将anaconda到各种包全update了一...
文章浏览阅读931次。但是,如果您有外设连接到这些引脚,则在尝试上传新代码、使用新固件刷新 ESP32 或重置开发板时可能会遇到困难。如果您有一些外设连接到捆绑引脚,并且您在上传代码或刷新 ESP32 时遇到问题,可能是因为这些外设阻止了 ESP32 进入正确的模式。由于 ESP32 芯片的多路复用功能,这是可能的。这意味着,如果您有连接到这些 GPIO 的输出,则当 ESP32 重置或启动时,您可能会得到意外的结果。并非所有开发板都可以访问所有 GPIO,但无论您使用哪种开发板,每个特定 GPIO 都以相同的方式工作。_esp32引脚分配指南
文章浏览阅读2.7w次。11月28日消息,今日,有网友在微博上晒出一张手机芯片的天梯图,并重点赞扬了位于顶端的天玑1000芯片。该芯片是联发科于前日正式发布的旗下首款旗舰级5G集成芯片,且预计搭载它的首款终端设备将于2020年第一季度发售。天玑1000以北斗七星之一的名字命名,象征该芯片是5G时代的领跑者,事实上该芯片也确实性能强悍。在安兔兔跑分数据中,搭载该处理器的手机跑分高达511363,这是麒麟990和骁龙855 ..._天玑1000天梯图
文章浏览阅读909次。官方文档torch.cat(inputs, dimension=0) → Tensor在给定维度上对输入的张量序列seq 进行连接操作。torch.cat()可以看做 torch.split() 和 torch.chunk()的反操作。参数:inputs (sequence of Tensors) – 可以是任意相同Tensor 类型的python 序列dimension (int, optional) – 沿着此维连接张量序列。cat() 函数可以通过下面例子更好的理解。官方例子>_torch.cat 会重新申请内存吗
文章浏览阅读2.3k次。在操作数据库的时候,需要 根据 实际情况,修改数据库的编码 ,如下提供一个修改数据库的编码过程。 查看数据库当前编码: select userenv('language') from dual; 在windows的命令 窗口,输入 cmd 打开do s窗口。 输入:sqlplus/nolo g 打开数据连接 ;输入在操作数据库的时候,需要根据实际情况,修改数据库的编码,如下提供一个修改数据库的编码..._oracle设置编码格式
文章浏览阅读2.6w次,点赞2次,收藏8次。距离学习.net有一年了。直到前段时间的面试中,才发现对.net的理解有很多的问题。当时在网上简单地查了一下,大概了解了一下。现在我徒弟反映.net视频有很多不理解的地方,我们讨论了一下,也给了我一个很好的再学习机会。下面是我对.net的再理解。_net
文章浏览阅读3.4k次,点赞5次,收藏18次。web前端、HTML、CSS、JavaScript、DOM_在javascript中,如果执行语句math.round(7.25),则得到
文章浏览阅读7.7k次。1升级原理build.gradle 中 versionCode 1 , versionName “1.0.0” 是升级的关键,versionCode是个int,versionName是个String,其中versionCode每次要升级版本都需要+1,VersionName是给用户看的,让用户知道当前版本。升级原理:从服务器获取升级信息,包括versionCode,versionN..._安卓versioncode 升级
文章浏览阅读73次。为什么80%的码农都做不了架构师?>>> ..._windows查看端口被哪个进程占用
文章浏览阅读4.8k次。原文来自11区民间整合的Mugen主程序报错汇总,同时加入了千寻网站平时收集的常见报错,源地址:http://mugenbinran.web.fc2.com/error.html以下皆为机翻,有空会慢慢修正翻译加载初始场景报错报错关键字:dojo.def 或 stage0.def原因:程序以debug模式运行且调用了debug场景解决方法:1、在mugen.cfg文件内找到[Debug]下的Sta..._mugen报错
文章浏览阅读304次。1、from matplotlib import pyplot as pltx=range(2,26,2)y=[15,13,14.5,17,20,25,26,26,24,]22,18,15fig=plt.figure(figsize=(20,8),dpi=80)#设置图片大小plt.plot(x,y)#plt.xticks(x)#设置x轴刻度plt.xticks(range(2..._from matplotlib import pyplot as plt x=range(2,26,2) y=[15,13,14,17,20,26,26
文章浏览阅读497次。_碳火加风枪温度