zoukankan      html  css  js  c++  java
  • Java 知识积累方便以后随时查看

    一、Java数据类型

    8种基本数据类型:字符型char,布尔型boolean,数值型(整型和浮点型)

    其中整型包括(byte,short,int,long),浮点型(float,double)

    类型 字节byte 默认值
    字节型byte 1 0
    字符型char  2 'u0000'
    布尔型boolean 4 false  
    短整型short 2 0
    整型int   4 0
    长整型long 8 0
    单精度float 4 0.0f
    双精度double 8 0.0d

    3种引用数据类型:class类,interface接口,数组。

    二、Java里面的集合

     

    三、Java泛型的是什么,为什么要用泛型,泛型的使用有哪几种?

    答:

    第一,泛型,是JDK5引入的新特性,本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。

    这种参数类型可以使用在:类、接口、方法中;分别被称作为泛型类;泛型接口和泛型方法。

    第二,泛型的好处是在编译时候检查类型安全,并且所有的强制转换都是自动的,提高了代码重用率,

    避免运行时出现异常,而且特点是编译器再编译时擦除了所有泛型相关信息,再编译器编译成字节码时;

    首先进行类型检查,然后进行类型擦除(即所有类型参数都用他们限定的类型替换,包括类,变量和方法)。

    第三,泛型的使用(泛型类、泛型接口、泛型方法)

    泛型类例子:

    package com.ikos.web;
    import java.lang.*;
    public class Test<M> {
        private M m;//泛型类型变量
        public void setM(M m) {
            this.m = m;
        }
        public M getM() {
            return m;
        }
        public static void main(String arg[]){
            Test t1 = new Test();
            t1.setM(222);
            System.out.printf("整型值为 :%d
    
    ", t1.getM());
            t1.setM("444");
            System.out.printf("字符串值为 :%s
    
    ", t1.getM());
        }
    }

    泛型接口例子:

    //定义一个泛型接口
    public interface Generator<T> {
        public T next();
    }
    /**
     * 未传入泛型实参时,与泛型类的定义相同,在声明类的时候,需将泛型的声明也一起加到类中
     * 即:class FruitGenerator<T> implements Generator<T>{
     * 如果不声明泛型,如:class FruitGenerator implements Generator<T>,编译器会报错:"Unknown class"
     */
    class FruitGenerator<T> implements Generator<T>{
        @Override
        public T next() {
            return null;
        }
    }

    当实现泛型接口的类,传入泛型实参时:

    /**
     * 传入泛型实参时:
     * 定义一个生产器实现这个接口,虽然我们只创建了一个泛型接口Generator<T>
     * 但是我们可以为T传入无数个实参,形成无数种类型的Generator接口。
     * 在实现类实现泛型接口时,如已将泛型类型传入实参类型,则所有使用泛型的地方都要替换成传入的实参类型
     * 即:Generator<T>,public T next();中的的T都要替换成传入的String类型。
     */
    public class FruitGenerator implements Generator<String> {
    
        private String[] fruits = new String[]{"Apple", "Banana", "Pear"};
    
        @Override
        public String next() {
            Random rand = new Random();
            return fruits[rand.nextInt(3)];
        }
    }

    泛型方法例子:

     泛型类,是在实例化类的时候指明泛型的具体类型;泛型方法,是在调用方法的时候指明泛型的具体类型 。

    /**
     * 泛型方法的基本介绍
     * @param tClass 传入的泛型实参
     * @return T 返回值为T类型
     * 说明:
     *     1)public 与 返回值中间<T>非常重要,可以理解为声明此方法为泛型方法。
     *     2)只有声明了<T>的方法才是泛型方法,泛型类中的使用了泛型的成员方法并不是泛型方法。
     *     3)<T>表明该方法将使用泛型类型T,此时才可以在方法中使用泛型类型T。
     *     4)与泛型类的定义一样,此处T可以随便写为任意标识,常见的如T、E、K、V等形式的参数常用于表示泛型。
     */
    public <T> T genericMethod(Class<T> tClass)throws InstantiationException ,
      IllegalAccessException{
            T instance = tClass.newInstance();
            return instance;
    }
    Object obj = genericMethod(Class.forName("com.test.test"));

     



    佛语:我本求心不求佛,了知三界空无物,若欲求佛但求心,只这心心心是佛
  • 相关阅读:
    Mvc+三层(批量添加、删除、修改)
    js中判断复选款是否选中
    EF的优缺点
    Git tricks: Unstaging files
    Using Git Submodules
    English Learning
    wix xslt for adding node
    The breakpoint will not currently be hit. No symbols have been loaded for this document."
    Use XSLT in wix
    mfc110ud.dll not found
  • 原文地址:https://www.cnblogs.com/wanglijun/p/14808556.html
Copyright © 2011-2022 走看看