JAVA基础自学手册

本文档详细介绍了Java基础及高级特性的多个方面,包括对象包装器类的特点、自动打包与拆包机制、字符串到整数的转换方法、参数数量可变的方法、枚举类的使用技巧、反射机制的应用场景及其具体实现方式、以及继承设计的若干最佳实践。

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

2015年1月17日 20:36:55

如标题。JAVA基础的自学。大概就是看基础的JAVA书然后弄出来的一些点吧。当作备忘录用。缓慢书写。

啊。今天先把家里电脑的环境什么的部署好再说。。← ←。over。

话说。是不是。。太偷懒了。。。哈哈哈哈。。

2015年1月17日 20:44:09

 

2015年1月20日 09:01:31

第五章 继承

5.4包装器与打包

·对象包装器类为final类,构造后不可更改内部数值;

        ArrayList list=new ArrayList();

·自动打包 list.add(3); → list.add(new Ineger(3));

 自动拆包 int n=list.get(3) → int n=list.get(i).intValue();

·字符串转换成整形 int x=Integer.parstInt(s);   parInt为静态方法;

 

5.5参数数量可变的方法

·printf接收两个参数:格式字符串,Object[]数组

 

5.6枚举类

·比较两个枚举类的值时,不要调用equals,而直接使用“==”即可

·所有的枚举类都是Enum类的子类

     继承方法toString返回枚举常量名:Size.SMALL.toString() 将返回“SMALL”

     逆方法valueOf:Size s=(Size)Enum.valueOf(Size.class,"SMALL"); 将s设置为Size.SMALL

·每个枚举类都有一个values方法,返回全部枚举值数组

 

 5.7反射

·运行中分析类的能力;

·运行中查看对象;

·实现数组的操作代码;

·利用Method对象,类似C++中函数指针;

①Class类

Class类保存着运行时所有对象所属的类;Object类中getClass()可以返回Class类;静态方法forName()获得类名对应的Class对象。

·可直接用==来实现两个类的对比:if(e.getClass()==Employee.class)

·可用newInstance()快速构造一个与e同类的实例:e.getClass().newInstance();

                   如需添加参数参数,应使用Constructor类中的newInstance方法;

②捕获异常:捕获异常处理器(handler)

没有提供捕获异常处理器程序会终止,并输出异常信息类型

·已检查异常:编译器会检查是否提供给了处理器

·未检查一场:编译器不会检查是否提供给了处理器,如null应用

Class.forName抛出已检查异常:try{ } catch{ }

③分析包的能力

Field,Method,Constructor分别用于描述类的域,方法,构造器; 均可用getName方法返回项目名称;

Field类可用getType返回描述域所属类型的Class对象;

getFields,getMethods,getConstructors将返回public域,方法,构造器数组;包括超类的公有成员;

getDeclareFields,getDeclareMethods,getDeclaredConstructors将返回类声明中的全部域,方法,构造器;

④利用反射分析对象

查看对象域的方法Field类get方法:f为Field类对象,obj为包含f域的类的对象,f.get(obj)将返回一个对象

AccessibleObject类的setAccessible方法为Field,Method,Constructor的公共超类;

数值不是对象查看salary域,用Field类中的getDouble方法(反射机制会自动将域值打包到对象包装器中)

⑤使用反射编写泛型数组代码

java.lang.reflect包中Array类允许动态地创建数组;静态方法newInstance:

调用:Object newArray=Array.newInstance(componentType,newLength);提供元素类型&数组长度;

获取数组长度:Aaary.getLength(a):

                      ①获取a数组对象;②确认a为数组;③使用getComponentType确定数组类型;

⑥方法指针

Method类中invoke方法:调用包装在当前Method对象中的方法:Object invoke(Object obj...args);

                                        调用时第一个参数是隐式参数,其余对象显式参数;静态方法第一个可为null;

invoke的参数和返回值为Object类型             不建议使用该方法;使用接口进行回调更佳

 

5.8继承设计的技巧

·将公共操作和域放在超类中;

·不要使用受保护的域;

·使用记成实现“is-a”关系;

·除非所有继承的方法都有意义,否则不要使用继承;

·覆盖方法时,不要改变预期行为;

·使用多态,而非类型信息;

·不要过多的使用反射

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值