Java基础提高学习笔记2

本文详细介绍了Java基础加强的17个关键概念,包括Integer对象的复用、枚举特性、final与static的区别、构造方法、反射机制等。通过实例分析,深入理解Java在对象、方法和类层面的高级特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


Java基础加强笔记


11、Integer i1 = 13;
Integer i1 = 13;
这两个是同一个对象
但赋值的值超过-128~127 就不是同一个对象


享元模式 flyweight 当这个数据很小,但出现的次数较多
可以将其变成一个对象,不同的变成方法的外部属性,相同的叫做内部属性

12、枚举
也是JDK1.5中增加的新特性
当编译不成功的时候编译器就不通过


13、final 和 static 谁在前面都可以
如需打印这个对象,需要从写toString()方法
如果类里面有抽象方法 那么这个类必须是抽象类
采用抽象方法定义nextDay就将大量的if else语句转移成了一个个独立的类


14、枚举自动实现了toString()方法
有他自己的排行方法ordinal


15、枚举也是一个特殊的类
元素列表必须放在其他方法之前,切元素列表最后需要加";"
方法必须是private的
枚举元素后面加()表示创建这个枚举实例对象使用哪个构造方法


16、内部类可以有四个访问修饰符,而外部类只有两个
一个是 默认的friendly 另一个是 public
子类必须完成父类的抽象方法
类的方法返回的可以使自己这个类型
类里面可以定义静态常量 常量指向的结果就是自己这个类的实例对象
如果美剧只有一个成员是,就可以作为一种单例模式



17、反射
框架会用到
Java类用于描述一类事物的共性、该类食物有什么属性,没有什么属性。至于这个属性的值是什么,则是由这个类的实例对象来确定


Java中的类都是同一种事物、这种事物就是Class


Class的实例对象代表内存中的一份字节码
有几份字节码就是几个Class 的实例对象


得到一个类的字节码有两种情况
1、这个类已经加载到内存中了
2、如果没有加载那么就是用类加载器去加载,然后返回类的字节码


得到类的字节码有三种方式
1、System.class
2、.getClass()
3、Class.forName("类名");

数组也是一个类型
Class.isArray()


总之,只要是在源程序中出现的类型,都有各自的Class实例对象如void int[]{}


18、反射:
反射就是把Java类中的各种成分映射成相应的Java类
各个成分所对应的对象,然后就用这个对象干一些事情

19、Constructor类
我们想要的到一个类中所有的构造方法
Constrouctor [] constrouctor = Class.forName("类名").getConstructor;


Construtor constructor1 = String.class.getConstrutor(StringBuffer.class);
String str2 = (String)construtor1.newInstance(new StringBuffer("abc");


调用获得的方法是要用到上面相同的类型的实例对象


反射比较占用资源 导致程序性能下降 需要加载到缓存方便以后使用


Class.newInstance() 该方法内部先得到默认的构造方法,然后用该构造方法实例对象 他用到了缓存机制来保存默认构造方法的实例对象


20、类身上的成员变量也是又一个类来表示Field


要得到一个类身上的某个成员变量先要得到类的字节码,通过字节码可以通过getField()方法来获取
如果该字段为私有的、那么使用getDeclaredField()方法
但还是无法访问需要使用暴力反射field.setAccessible(true);
后就可以访问了


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值