Java 相关

来源:互联网 发布:windows 虚拟打印机 编辑:程序博客网 时间:2024/05/01 15:51

1、子类父类的加载顺序:

       父类静态块初始化---->子类静态块初始化---->父类非静态块初始化---->父类构造方法---->子类非静态块初始化---->子类构造方法。(先静后动,先父后子)

       子类继承父类时,如果父类有自定义构造方法,子类必须显式调用父类构造方法 super。

 

2、  java 中所有的"="号赋值都是引用赋值。  方法参数为基本形如String 、int 等的时候为值传递。 方法参数为对象的时候为引用传递。

      如: PassObj objA = new PassObj();
            PassObj objB = objA;

            当objA中的内容改变时, objB同时也改变。  指向同一内存区域。

 

3、 在 Windows 下安装 JRE (Java Runtime Environment) 的时候,安装文件会将 .jar 文件映射给 javaw.exe 打开。那么,对于一个可执行的 JAR 文件包,用户只需要双击它就可以运行程序。

 

4、PropertyUtils的使用, 以及反射的使用。

org.apache.commons.beanutils.PropertyUtils

java.beans.PropertyDescriptor

String[] nameList = new String[]{"title", "description", "time"};

PropertyDescriptor[] propertyDescriptors = PropertyUtils.getPropertyDescriptors( resource );

for ( final PropertyDescriptor descriptor : propertyDescriptors) {

            if ( ArrayUtils.contains( nameList, descriptor.getName() ) ) {

                final Method readMethod = descriptor.getReadMethod();
                try {
                    if ( !ObjectUtils.equals( readMethod.invoke( resource), readMethod.invoke( otherResource ) ) ) {
                        return true;
                    }
                } catch ( final ReflectiveOperationException e ) {
                    throw new IllegalStateException( e );
                }
            }
        }
 }

  

5、

String testStr="   ababaa aabbccc   ";
String resultStr=testStr.replaceAll("^[ *| *]*","").replaceAll("[ *| *]*$","");

这样就可以了,可以去掉全角空格也可以去掉半角的空格。
要注意的是replaceAll的第一个参数使用的是正则表达式的语法
"^[ *| *]*"表示以全角空格或半角空格开头的所有组合。
"[ *| *]*$"表示以全角空格或半角空格结尾的所有组合

 

6、  切面此类继承org.springframework.aop.IntroductionInterceptor    以及反射方法参数类型的判断, 即判断参数是什么类型的 该参数是否为空

     private static boolean check( final MethodInvocation min ) {

        final Method[] methods = min.getThis().getClass().getDeclaredMethods(); //实际类的方法,不同于getMethods(); 仅有当前声明类的方法 
        for ( final Method method : methods ) {
            if ( method.getName().equals( min.getMethod().getName() ) ) {//判断当前类的方法是否和所执行的方法一致
                final Type[] types = method.getGenericParameterTypes(); // 获得该方法的所有参数,返回type类型, 该类型有几个实现类具体看api
                int i = 0;
                for ( final Type type : types ) {
                    if ( type instanceof Class ) { // 当type为Class时
                        if ( CoustomResource.class.isAssignableFrom( ( (Class<?>) type ) ) ) { // CoustomResource为自定义或者指定要传的参数类型,把type强转判断是否一致
                            if ( invocation.getArguments()[i] == null ) { // 判断这个参数是否为null
                                return true;
                            }
                        }
                        if ( CoustomResource[].class.isAssignableFrom( (Class<?>) type ) ) { // 判断是否是数组类型的
                            final CoustomResource[] CoustomResource= (CoustomResource[]) invocation.getArguments()[i];
                            for ( final CoustomResource coustomResource : CoustomResource) {
                                if ( coustomResource == null ) {
                                    return true;
                                }
                            }
                        }
                    }
                    i++;
                }
            }
        }
        return false;
    }

 

7、instanceof, isinstance,isAssignableFrom的区别

instanceof运算符 只被用于对象引用变量,检查左边的被测试对象 是不是 右边类或接口的 实例化。如果被测对象是null值,则测试结果总是false。
形象地:自身实例或子类实例 instanceof 自身类  返回true
例: String s=new String("javaisland");
      System.out.println(s instanceof String); //true

Class类的isInstance(Object obj)方法,obj是被测试的对象,如果obj是调用这个方法的class或接口 的实例,则返回true。这个方法是instanceof运算符的动态等价。
形象地:自身类.class.isInstance(自身实例或子类实例)  返回true
例:String s=new String("javaisland");
      System.out.println(String.class.isInstance(s)); //true

Class类的isAssignableFrom(Class cls)方法,如果调用这个方法的class或接口 与 参数cls表示的类或接口相同,或者是参数cls表示的类或接口的父类,则返回true。
形象地:自身类.class.isAssignableFrom(自身类或子类.class)  返回true
例:System.out.println(ArrayList.class.isAssignableFrom(Object.class));  //false
      System.out.println(Object.class.isAssignableFrom(ArrayList.class));  //true

  

 

8、

 

 

9、

 


原创粉丝点击