Java编程工具类之包装类相关

举报
魏铁锤 发表于 2022/09/21 10:12:56 2022/09/21
【摘要】 ## 知识回顾 1.枚举(类) 可以将某些类中的对象一一列举出来 类中的对象具有有限的个数 1.通过enum来描述枚举 class interface enum 2.可以在枚举类中直接列举对象 public enum Day{ monday,tuesday } 3.通过枚举类直接访问属性名(枚举对象) 4.通过枚举对象调

知识回顾

1.枚举(类)
可以将某些类中的对象一一列举出来    类中的对象具有有限的个数
1.通过enum来描述枚举     class   interface   enum
2.可以在枚举类中直接列举对象    public enum Day{  monday,tuesday }
3.通过枚举类直接访问属性名(枚举对象)
4.通过枚举对象调用  发现有很多的方法
每一个自己定义的enum枚举类型 都默认继承java.lang.Enum   Object
有两个私有属性name枚举对象名字   ordinal顺序(在枚举类中的索引)
name()  ordinal()获取相关属性信息的方法
Day enum = Day.valueOf("name");
Day[] days = Day.values();
monday.compareTo(tuesday);
5.可以在enum中定义自己的一般属性  一般方法
必须在枚举类描述的第一行  列举枚举对象的样子 分号结尾
添加自己定义的私有属性
提供私有的构造方法(带参数)  我们自己是不能调用构造方法
6.自己定义的enum不能再继承别的类(单继承)
可以实现多个接口   添加具体的方法
7.可以使用在switch语句中   
8.内存管理的问题
栈内存----变量空间   方法临时执行空间
从创建开始执行完毕  立即回收
堆内存----我们自己new申请对象空间     垃圾回收器GC    对象空间没有任何引用指向视为垃圾
方法区----常量  类模板  静态成员   有且只有一份   不回收
public class Test{
public Person p = new Person();//聚合关系
    }
Test t = new Test();
Person p = t.p;
p = null;
t.p = null;
System.gc();
为了能看到对象被回收的效果
1.重写类中的finalize方法    从Object继承过来的
2.Runtime类  单例模式  Runtime.getRuntime();获取对象   
long  =  maxMemory   totalMemory   freeMemory
OutOfMemoryError 堆内存溢出错误
StackOverflowError 栈内存溢出错误
Java开发者写好的类-----专业的文档  API(建议下载一个.chm)
包装类(封装类)
数学相关
日期相关
*字符串
*集合相关(ArrayBox LinkedBox)
*异常相关
输入输出相关I/O
线程相关
网络通信
反射注解

GUI Swing

1.类所在的包
2.类的关系   自己默认继承 实现
3.是否可以创建对象  调用    方法本身静态的
4.类中提供的常用方法
包装类(封装类)  1.5版本之后  自动拆装包
byte---Byte   short---Short   int---Integer  long---Long
float---Float  double---Double  char---Character   boolean---Boolean
1.八个包装类都在同一个包下   java.lang包   不需要import导包直接使用
2.八个包装类中有六个是与数字相关  都默认继承父类Number
3.八个包装类都实现了Serializable, Comparable
4.八个包装类都有带自己对应类型参数的构造方法
八个包装类中有七个(除了Character)还有构造方法重载   带String类型
5.创建对象  对象调用方法
有六个与数字相关的类都继承Number     xxxValue(); 
将一个包装类类型转化为对应的基本类型(拆包)
Integer i1 = new Integer(10);//引用数据类型 包装类
int value = i1.intValue();
Integer i2 = 10;
int value = new Integer(10);
int value = Integer.parseInt("123");	
Float.parseFloat("123.45")
int value = new Integer("123");
6.经常在笔试中出现的问题
Integer i1 = 10;
Integer i2 = 10;
Integer i3 = new Integer(10);
Integer i4 = new Integer(10);
System.out.println(i1==i2);//  true--->如果数字范围超过127false
System.out.println(i1==i3);//  false
System.out.println(i3==i4);//  false
System.out.println(i1.equals(i2));//true
System.out.println(i1.equals(i3));//true
System.out.println(i3.equals(i4));//true
1.==与equals()区别
==可以比较基本数据类型  也可以比较引用数据类型  (变量中存储的内容)
如果比较基本类型比较是变量中存储的值
如果比较引用类型比较是变量中存储的地址引用
equals()是Object类中继承过来的方法  每一个引用类型都可以调用
默认继承的equals()方法比较与==一致  如果想要改变比较规则 可以重写equals方法
由于Integer类就重写了equals() 所以Integer比较的是数值
2.考察Integer类加载的时候  自己有一个静态的空间
空间内立即加载 Integer类型的数组  内存储256个Integer对象   -128 ~ 127
如果我们用的对象范围在这之内Integer i1 = 10;  
直接取静态区中找对应的对象
如果我们用的对象范围超出了这个Integer i1 = 1000;  
会帮我们创建一个新的Integer对象
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。