- 泛形的基本术语,以ArrayList<E>为例:<>念着typeof
- ArrayList<E>中的E称为类型参数变量
- ArrayList<Integer>中的Integer称为实际类型参数
- 整个称为ArrayList<E>泛型类型
- 整个ArrayList<Integer>称为参数化的类型ParameterizedType
- 以上是常规泛型的应用,下面我们简单介绍自定义泛型应用
- Java程序中的普通方法、构造方法和静态方法中都可以使用泛型。方法使用泛形前,必须对泛形进行声明,语法:<T> ,T可以是任意字母,但通常必须要大写。<T>通常需放在方法的返回值声明之前。例如:
public static <T> void doxx(T t);
public class Test<T>{}
- 我们还可以直接再类上加上泛型的使用,但是需要注意的是即使我们再累上加上泛型,在静态方法上也要加上泛型其它方法可不加。
- 还要注意泛型<T>是引用数据类型(也就是说八种基本类型除外 byte short int long float double char
boolean )
/** 实现一个简单的数组位置的交换 */
public static <T> void test1(T arr[], int i, int j) {
T temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
/* 实现数组的倒序 */
public static <T> void test2(T arr[]) {
int startindex = 0;
int endindex = arr.length - 1;
for (;;) {
if (startindex >= endindex) {
break;
}
T temp = arr[startindex];
arr[startindex] = arr[endindex];
arr[endindex] = temp;
startindex++;
endindex--;
}
}
那么我们在main方法中应该怎么调用呢,特别注意必须是应用数据类型
public static void main(String[] args) {
Integer arr[] = { 1, 2, 3, 4 };
// test1(arr,0,2);? 怎么使用呢?引用数据类型
test2(arr);
for (int ar : arr) {
System.out.print("[" + ar + "," + "]");
}
}
只定义两个变量换值
public static void testChange() {
int i = 10;
int j = 111;
// i=11 j=10;
/*
* i=i+j; j=i-j; i=i-j;
*
* System.out.println(i+" "+j);
*/
/*
* 1001 i 1100 j ------- 0101 i 1100 j ----- 1001 j 0101 i 1100 i
*
*
*
* 0101 i 1001 i ------- 1100 j
*/
i = i ^ j; // i
j = i ^ j; // j
i = i ^ j;
System.out.println(i + " " + j);
}
分享到:
相关推荐
4. **模板和泛型编程**:C++的模板可以用于创建泛型函数和容器,提高代码的复用性。例如,可以使用模板创建一个适用于任何数据类型的堆栈或队列。 5. **文件操作**:游戏可能需要保存和加载玩家进度、读取资源文件...
3. **模板**:C++的模板功能强大,可以用于创建泛型代码,实现数据类型无关的编程。这包括函数模板和类模板,它们允许开发者编写一次代码,应用于多种数据类型。理解模板的特性和使用场景对于编写高效、灵活的代码至...
《JAVA 2应用编程150例》是一个深入学习Java编程的资源集合,它涵盖了广泛的Java编程实践,旨在帮助开发者巩固基础,提升技能。这个压缩包包含了一系列精心设计的示例,每个示例都经过了在JDK环境下的严格调试,确保...
Object Pascal是Delphi的基础,它是一种面向对象的Pascal方言,支持类、接口、泛型等现代编程特性。在Delphi 2005中,语言的增强和优化进一步提升了代码的可读性和可维护性。 4. **数据库支持** Delphi 2005 包含...
源码中可能包含枚举类的定义及其在程序中的应用。 7. **异常处理**:Java的异常处理机制是通过`try-catch-finally`和`throw`关键字实现的。源码可能会展示如何正确处理预期和非预期的异常,以及如何自定义异常类。 ...
在Java世界中,这些基本组件主要包括JVM(Java虚拟机)、类库、API(应用程序接口)以及开发工具等。下面我们将详细探讨这些组件以及它们在实际开发中的应用。 1. JVM(Java Virtual Machine) JVM是Java平台的...
通过研究这些源码,你可以加深对Java语言的理解,提升编程技能,并且能够将理论知识应用于实际项目中。对于初学者来说,这是一个很好的学习资源,而对于有经验的开发者,它也是复习和验证知识的好工具。
3. **泛型**:允许创建可重用的数据结构和算法,同时保持类型安全。 4. **Lambda表达式和LINQ**:引入了Lambda表达式,简化了函数式编程,配合LINQ(Language Integrated Query)提供了优雅的查询数据方式。 5. **...
此外,C++还引入了模板,用于创建泛型代码,可以应用于各种数据类型,提高代码的通用性。STL(Standard Template Library,标准模板库)是C++的一个重要组成部分,包含容器(如vector、list、map等)、迭代器、算法...
源代码将包含这两个特性在实际项目中的应用。 10. **Java虚拟机(JVM)**:源代码可能还涉及JVM的工作原理,如内存管理(堆、栈、方法区等)和垃圾回收,以及如何优化JVM配置以提高程序性能。 通过研究这些源代码,...
11. **泛型**:增强了代码的类型安全性和重用性,源代码中可能包含泛型类和泛型方法。 12. ** Swing和JavaFX**:是Java提供的图形用户界面(GUI)开发库,可以创建桌面应用。 通过分析这些源代码,不仅可以加深对...
在C++中,模板是一种强大的工具,可以创建泛型代码,这意味着模板类或函数可以处理多种不同的数据类型。这种模板类可能包含一系列成员函数,如`set_bit`、`clear_bit`、`test_bit`和`flip_bit`等,它们针对位字段...
此外,VB.NET还支持泛型,这使得创建可复用的类型安全的数据结构成为可能。 Windows Forms是VB.NET进行桌面应用程序开发的主要工具,提供了丰富的控件库,如按钮、文本框、列表视图等,用于构建用户界面。通过实例...
9. **模板和STL**:标准模板库(STL)包括容器(如vector、list、set)、迭代器、算法等,使用模板可以实现泛型编程。实例将展示如何有效地利用这些工具。 10. **性能优化**:部分实例可能涉及内存管理、多线程并行...
- 掌握泛型的概念,了解其边界、类型擦除和通配符的使用。 - 知道如何遍历集合,理解迭代器和增强for循环的区别。 4. **并发编程**: - 熟悉线程的创建方式(实现Runnable接口、继承Thread类)及线程间的通信...
- **模板和泛型编程**:C++的模板可以实现泛型编程,使得代码能适应不同数据类型,增强代码的复用性。 3. **开源优势** - **社区驱动**:开源项目由全球开发者共同维护和改进,意味着zoo工具包会不断吸收新的功能...
3. **修改语法**:将C#或VB.NET的语法转换为C++,例如,去除属性(Properties)、事件(Events)和泛型(Generics)等。 4. **重构项目结构**:按照VC6.0的项目模板重新组织源码和资源文件,创建新的解决方案...
在“数据抽象和问题求解-C++语言描述4e_源代码”这个压缩包中,可能包含了各种示例代码,涵盖了上述概念的应用。学习者可以通过阅读和运行这些代码,了解如何在实际问题中运用数据抽象和问题求解的思想。同时,这也...
这本书的配套源码提供了书中所讲解的各种示例和练习的实现,可以帮助读者更深入地理解和应用Java编程知识。这里我们将围绕这些知识点进行详细的阐述。 首先,Java语言作为一门面向对象的编程语言,其核心概念包括类...