java 随手杂记

在学习java反射时偶然发现的问题
平时使用控制台打印,一般使用 System.err.println(c); (红色比较明显)
今天打印时同时使用了 System.err.println(c); 和System.out.println(c); 发现虽然两个打印在一个方法中但是打印顺序除了问题

      //1、加载Class对象
        Class class1=Class.forName("com.ff.hh.javaReflex.Student");

        //2.获取所有公有构造方法
        System.out.println("**********************所有公有构造方法*********************************");
        Constructor[] constructors=class1.getConstructors();
        for (Constructor c:constructors){
            System.err.println(c);
        }


        System.err.println("************所有的构造方法(包括:私有、受保护、默认、公有)***************");
        constructors = class1.getDeclaredConstructors();
        for(Constructor c : constructors){
            System.err.println(c);
        }

        System.out.println("*****************获取公有、无参的构造方法*******************************");
        Constructor con = class1.getConstructor(null);
        //1>、因为是无参的构造方法所以类型是一个null,不写也可以:这里需要的是一个参数的类型,切记是类型
        //2>、返回的是描述这个无参构造函数的类对象。

        System.err.println("con = " + con);

如下是控制台

**********************所有公有构造方法*********************************
*****************获取公有、无参的构造方法*******************************
public com.ff.hh.javaReflex.Student(java.lang.String,int)
public com.ff.hh.javaReflex.Student(char)
public com.ff.hh.javaReflex.Student()
************所有的构造方法(包括:私有、受保护、默认、公有)***************
private com.ff.hh.javaReflex.Student(int)
protected com.ff.hh.javaReflex.Student(boolean)
public com.ff.hh.javaReflex.Student(java.lang.String,int)
public com.ff.hh.javaReflex.Student(char)
com.ff.hh.javaReflex.Student(java.lang.String)
public com.ff.hh.javaReflex.Student()
con = public com.ff.hh.javaReflex.Student()

后经测试发现当err 和 out同时存在时相当于暂先认为启动了两个线程(以后有时间研究),不管err和out数量有多少

猜你喜欢

转载自blog.csdn.net/qq_41615095/article/details/81223758