Java学习十二
今天学习了javaweb中一部分反射的知识。
反射:将类的各个组成部分封装为其他对象。好处:①在运行的过程中可以操作对象,例如在使用idea时出现的方法;②解耦,提高代码的复用性。
反射,又被称为框架的灵魂,框架是一种半成品软件,框架基础上进行软件开发能够简化代码。
获取class对象的方式:
①class.forName("全类名"):将字节码文件加载进内存,返回class对象,多用于配置文件。
②类名.class:通过类名属性class获取。多用于参数传递。
③对象.getclass():getclass()在object类中定义
1 public class test { 2 public static void main(String[] args) throws ClassNotFoundException { 3 //1.class.forname() 4 Class c1=Class.forName("reflect.Person"); 5 System.out.println(c1); 6 //2.类名 7 Class c2=Person.class; 8 System.out.println(c2); 9 //3.对象.getclass() 10 Person p=new Person(); 11 Class c3=p.getClass(); 12 System.out.println(c3); 13 //比较对象 14 System.out.println(c1==c2); 15 System.out.println(c1==c3); 16 } 17 } 18 19 20 class Person { 21 private String name; 22 private int age; 23 24 public Person(String name, int age) { 25 this.name = name; 26 this.age = age; 27 } 28 public Person(){} 29 30 public String getName() { 31 return name; 32 } 33 34 public void setName(String name) { 35 this.name = name; 36 } 37 38 public int getAge() { 39 return age; 40 } 41 42 public void setAge(int age) { 43 this.age = age; 44 } 45 }
通过代码和运行结果得知,三种对象获取方式所获对象是相同的。
class对象功能
1、获取成员变量;2、获取构造方法;3、获取成员方法;4、获取类名。
下面是我用Java语言写的两道题
1 //打印乘法表 2 public class Lianxi15 { 3 public static void main(String[] args) { 4 for (int i = 1; i <=9; i++) { 5 for (int j = 1; j <= i; j++) { 6 System.out.print(j + "*" + i + "=" + j * i + "\t");//将各个运算式隔开 7 if (i == j) { 8 System.out.print("\n");//换行 9 } 10 } 11 } 12 } 13 }
这道题在之前有做过,这里再做一遍权当复习。
1 //猴子摘桃 2 public class Lianxi16 { 3 public static void main(String[] args) { 4 int x=1;//定义一个变量,第十天的桃子数量 5 for(int i=1;i<=10;i++){ 6 x=(x+1)*2;//逆推 7 } 8 System.out.println("第一天摘的桃子"+x); 9 } 10 }
这道题最重要的是逆推的思想。