1.增强的for循环,这点比较简单,就不举例了,但要注意:
增强的for循环与传统的for循环相比写起来更简洁,更容易理解,但是他也有一个缺点:他失去了数组或者集合的索引信 息,如果要对数组或集合里指定位置上的元素进行操作,建议使用传统的for循环,如果只是遍历集合或数组里面的每一个元素,建议采用增强型的for循环。
2.自动装箱与拆箱
举例:BoxTest.java
package com.shengsiyuan.jdk5;
import java.util.ArrayList;
import java.util.Collection;
public class BoxTest
{
public static void main(String[] args)
{
int a = 3;
Collection<Integer> c = new ArrayList<Integer>();
c.add(3);//将int类型的3转换为Integer类型并放到集合当中
c.add(a + 3);
for(Integer i : c)
{
System.out.println(i);
}
}
}
说明:自动装箱与拆箱常用于集合中,当往集合里面放入原生数据类型的时候,java会自动将其包装成该原生数据类型对应的包装类,这就叫装箱,反之叫拆箱。
另外需要特别说明的是:Integer类有一个缓存,它会缓存介于-128~127之间的整数。缓存是指第二次生成一个已经实例化好的实例时,Java会自动的去缓存里面寻找以前生成的实例并将该值给它,而不会再去new一个,所以之前生成和之后生成的是两个相同的实例。
举例:BoxTest2.java
package com.shengsiyuan.jdk5;
public class BoxTest2
{
public static void main(String[] args)
{
Integer i1 = 100;
Integer i2 = 100;
if(i1 == i2)
{
System.out.println("i1 == i2");
}
else
{
System.out.println("i1 != i2");
}
}
}
上面的程序执行结果为i1 == i2,但如果将2个数值改为200,则就是i1 != i2,原因就在于Integer类型的缓存机制。
备注:如果改为Integer i1 = new Integer(100) ;
Integer i2 = new Integer(100);
则i1!=i2,用构造方法先new一个,再new一个,肯定是两个不同的实例。
3.可变参数
可变参数:可变参数本质上就是一个数组,对于某个声明了可变参数的方法来说,我们既可以传递离散的值,也可以传递数组对象。但如果将方法中的参数定义为数组,那么只能传递数组对象而不能传递离散的值。
可变参数必须要作为方法参数的最后一个参数,即一个方法不可能具有两个或两个以上的可变参数。
举例:TestVarargs.java
package com.shengsiyuan.jdk5;
public class TestVarargs
{
private static int sum(String str, int... nums)
{
System.out.println(str);
int sum = 0;
for (int num : nums)
{
sum += num;
}
return sum;
}
public static void main(String[] args)
{
int result = sum("a", new int[] { 1, 2 });
System.out.println(result);
result = sum("b", 1, 2, 3, 4);
System.out.println(result);
}
}
说明:int... nums中的...不能少,它就代表可变参数,可变参数代表可以往方法里面传入任意数量的参数,只要它是定义的类型即可。
分享到:
相关推荐
张龙老师的JAVA圣思园笔记深入浅出地涵盖了JAVA-SE的基础知识点,帮助学习者构建扎实的Java编程基础。 1. **IO(输入/输出)**: Java IO是处理数据输入和输出的重要模块,包括文件操作、流处理等。笔记中可能讲解...
张龙圣思园的Struts2学习笔记,无疑为Java开发者提供了一份宝贵的参考资料,它可能涵盖了Struts2的基础概念、核心组件、配置方式以及实战技巧。 首先,让我们深入了解Struts2的核心特性。Struts2是MVC(Model-View-...
14. **枚举类型**:枚举是Java 5引入的新特性,用于定义一组相关的值,提供了一种更安全、更易用的方式来处理固定集合的数据。 15. **注解(Annotation)**:注解是一种元数据,用于向编译器或JVM提供有关代码的...
通过张龙老师的Java SE课堂笔记,学习者不仅可以理解Java语言的基本语法,还能掌握面向对象设计原则和实战技巧,为后续的Java EE(企业版)和Android开发打下坚实的基础。同时,笔记中的实例和练习将帮助巩固理论...
这份“java圣思园学笔记+文档(张龙)”的压缩包文件,很可能包含了张龙老师在圣思园教学过程中的详细笔记和相关文档,这些资料对于正在学习或复习Java编程的学员来说是宝贵的资源。通过这份笔记,你可以系统地学习...
- **Lesson 5-7**:可能会深入到Servlet和JSP的高级特性,如过滤器(Filter)、监听器(Listener)和会话管理,以及如何使用JavaBean进行数据传递和业务逻辑处理。 - **Lesson 8-10**:可能涉及Ajax技术,讲解如何...
张龙老师的JavaSE课堂笔记是针对这个基础平台的重要学习资源,适合初学者和希望巩固Java基础知识的开发者。 【类与对象】 在JavaSE中,一切皆为对象。类是创建对象的模板,定义了对象的状态(属性)和行为(方法)...
张龙老师的JavaSE课程涵盖了从基础到进阶的重要知识点,旨在帮助学习者掌握Java编程语言的基础和核心概念。以下是根据提供的压缩包文件名称所涵盖的知识点的详细解释: 1. **Java SE入门、JDK的下载与安装**: - *...
9. **泛型**:泛型是Java 5引入的新特性,用于增强类型安全性,减少类型转换的麻烦。理解并运用泛型,可以编写出更强大且易维护的代码。 10. **枚举与注解**:枚举提供了一种创建固定数量的常量对象的方式,而注解...
6. **继承**:Java中的继承允许一个类(子类)从另一个类(父类)继承特性,这样可以实现代码复用和扩展性。 7. **多态**:多态是指同一种行为可以有不同的表现形式,它通过方法重写和接口实现来体现。多态提高了...
Struts2是Java Web开发...总的来说,圣思园张龙老师的Struts2笔记全面地介绍了这个框架的关键特性和实际应用。通过学习这些笔记,开发者能够更好地理解和运用Struts2进行企业级Web应用开发,提高代码的可维护性和效率。