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 }

这道题最重要的是逆推的思想。

posted on 2021-09-28 20:50  跨越&尘世  阅读(28)  评论(0编辑  收藏  举报