易混淆的知识点学习记录1

来源:互联网 发布:剑3正太捏脸数据 编辑:程序博客网 时间:2024/06/04 22:48
String s = "abcde";String s1 = "abc";String s2 = "de";System.out.println(s == "abc"+"de");System.out.println(s == "abc"+s2);

这段代码输出结果为true,false;

private static StaticTest st = StaticTest();public static int count1;public static int count2=0;private StaticTest(){count1++;count2++;}public static StaticTest getInstance(){return st;}public static void main(String[] args){StaticTest st = StaticTest.getInstance();System.out.println("count1: "+st.count1);System.out.println("count2: "+st.count2);}

输出结果为1,0;
如何获得某个类所对应的Class对象:1.通过类的.class语法2.通过类的getClass方法3.通过Class类的静态方法forName()通过反射方式来调用某个对象的方法的步骤:1.得到该对象所对应的Class对象2.通过该Class对象得到该类的构造方法所对应的Constructor对象3.通过该Constructor对象的newInstance方法得到该类的一个实例4.通过该Class对象得到该方法所对应的Method对象5.通过该Method对象的invoke方法进行调用                    反射例子:
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;public class DemoTest2{public void output(String str){System.out.println("hello: "+str);}public static void main(String[] args) throws Exception{Class<DemoTest2> clazz = DemoTest2.class;Constructor cons = clazz.getConstructor(new Class[]{});Method method = clazz.getMethod("output",new Class[]{String.class});DemoTest2 test = (DemoTest2)cons.newInstance(new Object[]{});method.invoke(test,new Object[]{"lisi"});}}