一场说走就走,不可思议的旅行——Java之旅(码神学习第十天)

一场说走就走,不可思议的旅行——Java之旅

码神学习第十天

学习总结:

1、泛型:

泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。

 

2、JDK5.0的新特性:

jdk5.0中出现的新特性

①泛型(Generics

②增强的“for”循环(Enhanced For loop

③自动装箱/自动拆箱(Autoboxing/unboxing

④类型安全的枚举(Type safe enums

⑤静态导入(Static import

⑥可变参数(Var args)

1. 所谓泛型:就是变量类型的参数化。通过引入泛型,我们将获得编译时类型的安全和运行时更小地抛出ClassCastExceptions的可能。

2. 增强的for循环,For-Each循环的加入简化了集合的遍历,其语法如下:

    for(type element : array) {

       System.out.println(element)....

    }

 一场说走就走,不可思议的旅行——Java之旅(码神学习第十天)_第1张图片

运行结果:

 


3. 当遍历集合或数组时,如果需要访问集合或数组的下标,那么最好使用旧式的方式来实现循环或遍历,而不要使用增强的for循环,因为它丢失了下标信息。

4. 自动装箱:基本类型自动转为包装类.(int >> Integer)

   自动拆箱:包装类自动转为基本类型.(Integer >> int)

5.在自动装箱时对于值从–128127之间的值,它们被装箱为Integer对象后,会存在内存中被重用,始终只存在一个对象。所以:Integer a =3 ;Integer b=3 a==btrue。而如果超过了从–128127之间的值,被装箱后的Integer对象并不会被重用,即相当于每次装箱时都新建一个 Integer对象。如Integer num1 = 297; Integer num2 = 297; num1==num2结果为false

 

运行结果:

 

 

6.当您使用“enum”定义 枚举类型时,实质上您定义出來的类型继承自java.lang.Enum 类型,而每个枚举的成员其实就是你定义的枚举类型的一个实例(Instance),他们都被预设为 final,所以你无法改变他们,他们也是static成员,所以您可以通过类型名称直接使用他们,当然最重要的,它们都是公开的(public)。

Enum可以用于常量,switch,向枚举中添加新方法,覆盖枚举的方法,实现接口,使

用接口组织枚举等。

 

运行结果:

 


7. 枚举的使用场景:类型确定。与常量相比,枚举显得更规范,限制了方法中传入的参数值。

8. 可变参数:可变参数本质上就是一个数组,对于某个声明了可变参数的方法来说,我们既可以传递离散的值,也可以传递数组对象。但如果将方法中的参数定义为数组,那么只能传递数组对象而不能传递离散的值。

9. 可变参数使程序员可以声明一个接受可变数目参数的方法。注意,可变参数必须是方法声明中的最后一个参数,即一个方法不可能具有两个或两个以上的可变参数。

 一场说走就走,不可思议的旅行——Java之旅(码神学习第十天)_第2张图片

运行结果:

 


10. 要使用静态成员(方法和变量)我们必须给出提供这个静态成员的类。使用静态导入可以使被导入类的所有静态变量和静态方法在当前类直接可见,使用这些静态成员无需再给出他们的类名。

 1). import static 包名.类名.静态成员变量名; // 导入静态成员变量

 2). import static 包名.类名.静态成员方法名; // 导入静态方法

注意:使用import static时,要一直导入到类中的静态成员变量或静态方法。

 一场说走就走,不可思议的旅行——Java之旅(码神学习第十天)_第3张图片

一场说走就走,不可思议的旅行——Java之旅(码神学习第十天)_第4张图片

运行结果:

 


11. 过度使用静态导入会一定程度上降低代码的可读性

 

3、泛型的上限与下限:

①设置泛型对象的上限使用extends,表示参数类型只能是该类型或该类型的子类:

声明对象:类名<?extends > 对象名

定义类:类名<泛型标签 extends >{}

②设置泛型对象的下限使用super,表示参数类型只能是该类型或该类型的父类:

声明对象:类名<?super > 对象名称

定义类:类名<泛型标签 super>{}

 

4、TreeSet类学习:

①继承关系:

Java.lang.Object

java.util.AbstractCollection

java.util.AbstractSet

java.util.TreeSet

TreeSet为使用树来进行存储的Set接口提供了一个工具,对象按升序存储。访问和检索是很快的。在存储了大量的需要进行快速检索的排序信息的情况下,TreeSet是一个很好的选择。

③示例:

父类:Dengqinyi

子类:HandsomeBoy

实现类:HashSetTest

 一场说走就走,不可思议的旅行——Java之旅(码神学习第十天)_第5张图片

一场说走就走,不可思议的旅行——Java之旅(码神学习第十天)_第6张图片

 

 运行结果:

一场说走就走,不可思议的旅行——Java之旅(码神学习第十天)_第7张图片

PS:可以对各个参数分别进行排序,此处设置了按照第一个参数顺序排序,也可以设置为按照第二个参数来设置排序。

你可能感兴趣的:(java,String,泛型,内存,Class)