java学习笔记【四】--thinkinig in java小记录 1

override:同一个class文件里可以写多个类,但只能有一个公共类就是与文件同名的。static静态方法不能被override。被向上转型后仍然是使用子类覆盖了的方法(始终使用对象本身类型的方法)。但覆盖的方法应该是更进一步,更精确的描述。需要符合父类的约定。 但访问性可以被扩大,但不能缩小

外部类无法通过继承外部类覆写内部类。但可以通过继承内部类来覆写。

本地内部类:方法里的类。匿名内部类,return new ccc() {}之类
都可以访问宿主类的成员。外部都不能访问,区别是有无名字的构造函数,可否创建多个相同。
内部类的标示符: 外部类名$内部类.class。
内部类的意义就在于,不会受宿主继承某个类的影响(同多重继承)。GUI上用途广泛。p.new inner();
java的异常处理:throw一个new exception类型,原意是我表示反对,异常类型通常很简单只用名字或者一段str消息就可标明,用catch处理(handler),catch(type id)可以有多个,但只捕获到最符合的一个。余下的并不处理。异常情况分终止模型(termination)和继续(resumption)。
错误消息通常用system.err.print来显示,因为system.out可能会被重定向,缓存,和被系统暂缓输出。而err即使被重定向也会在屏幕上打印出来,而且会被记录在log4j中
initCase可以加入数据给错误对象
newe.initCase(e);
throw newe;
nullPointerException,runtimeException系统会自动抛出处理。
在final里再出错,会导致lostMessage
覆写方法时候只能抛出基类版本所声明的异常。
读写文件方法:
in=new BufferReader(new FileReader(path))
in.close(),in.readLine()
RuntimeException(e)可以用来包装错误对象,用e2.getCase()来拆箱

toString的重载最后用return返回值。
Class信息的保存是用一个叫Class Object的对象来创建的 。这个对象存储在同名的。class文件里。java程序在启动时并没有完全装载。
Class.forName是一个class的静态方法,返回Class本身的引用。第二种方法:类名.class更好。接口,数组和原始类型都可以用这个方法。
instanceof判断一个对象是不是某个类的实例。常用在下传之前。equals比较值,==比较内存引用。
实例化可以:[Class].newInstance 
getClass()==返回的是包.类名,强类型的类名,不和父类匹配。要么是这种类型,要么不是
而instanceOf和 类.isInstance(对象),和父类匹配。是这种类型或者是派生的

class.forName(x),newInstance()会抛出异常。但用.class不会

==和equals在object类中是一样的。
getClass()是Class对象的引用。其他常用的方法:x.isInterface(),x.getSuperclass(),x.getName().
与反射不同之处:java.lang.reflect 反射能范围更广,x.getMenthod(),x.getConstructors(),用于网络分布式,反射能获取.
RTTI是编译时打开.class文件,而反射是可以不获取.class文件的。
正则表达式用法:import java.util.regex  Pattern p=Pattern.compile("\\w+\\.")   p.matcher("word")
indexOf(string),replaceAll("")也可以使用正则("p","word")

数组越界会抛出RuntimeException数组放入时做类型检查,容器却不做但容器可以自动扩展。对象数组持有引用,原型数组持有值。对象数组初始化后默认都是null,
算法:随机挑出一个20长度数组中的一个值,组成新数组,要求不要重复。可设一个同长度数组,标示i位的选择与否。
Arrays类:equals()比较2数组是否相等,sort排序,fill填充,binarySearch已排序2分查找,asList转成LIst.
stringBuffer适合拼接 StringBuffer s= new StringBuffer("a");  s.append("b");
Arrays.fill(a1,a2)

System.arraycopy()可以拷贝各种数组,浅拷贝Arrays.asList(a)可以用[啊,b]方式序列化数组。
comparable接口,实现compareTo比较对象返回true false,用于Array.sort()的自动比较。这就是策略对象,不是将比较代码放在比较方法里,而是放在被比较的类中。
匿名类:public static Generator gen(){
return new Generator{
next(){return new thisclass(x)}
}
}

查看时间追踪软件,manictime timetracker。
comparator接口同时实现compare和equals
Array.binarySeach,返回负值表示你如果要维护数组应该插在哪,正值表示位置。不支持重复元素。
linkedHashSet和TresSet可以支持重复元素。
原型数组不允许使用comparator。sort可以接收实现comparator接口的对象来排序

Arrays.binarySearch(s,array,comparator)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值