备考OCJP认证知识点总结(四)
一、学习内容摘要
1、String直接声明变量和new对象的区别
2、StringBuffer的方法并未针对线程安全进行同步,方法有append、delete(int start,int end)、insert、reverse(int offerset,String或其他基本类型)、以及toString
3、文件的声明和何时被创建,创建文件和文件夹的方法,用高级类包装低级I/O类,PrintWriter可用于包装其他Writer类,也可以直接从File或String构建,具有新增的append、format、printf方法
4、序列化,什么类可以被序列化,序列化时对象中什么变量会被序列化,牵扯继承时序列化有什么不同。
格式化。Locale对象的创建:Locale.getDefault()或用Locale.Italy等字段构建,DateFormat对象的获得:不能new 。getInstance显示详细信息,getDateInstance 只显示日期,参数有style和locole
二、知识点总结
1、使用有效地控制台对象调用方法readPassword时返回的是一个char类型数组,目的是为了防止他人在String常量池中获取密码信息。
2、在序列化过程中,对象的transient变量将被赋予该变量类型的一个默认值,序列化操作对static变量没有任何影响。
3、File.separator是一个分隔符字符,在路径中用。
4、只有在写入数据时才需要调用flush方法,与读相关的类不具备这个方法。
5、SetMaxinumFractionDigits方法应用于格式化而不是解析,且采取四舍五入而不是截断。
6、NextXxx方法通常在hasNextXxx之后调用。后者会判断下一个标记的类型,但不移动标记。
7、集合 TreeSet保证元素按自然顺序升序排列。自动排序:TreeSet PriorityQueue Sorted
Sorted修饰表示集合中的顺序是根据某个或某些规则确定的,排序是基于对象本身的属性进行的,最常见的是自然排序
PriorityQueue(自动排序)以用户定义的优先(comparator)排列元素,默认优先从小到大。Poll方法可用于迭代编译对象,迭代一次返回对象中具有最高优先级的项并从队列中删除他,而peek不删除
ArrayList快速迭代快速随机访问,但插入、删除效率低,linkedList与之相反,提供新的方法可以从开始或末尾添加和删除元素,这使得栈或队列变得简单,迭代可能比ArrayList满,但是当需要快速插入和删除时选择更好。
重写hashCode()中return int时的运算包含素数便于使元素广泛随便分布在哈希码桶中。
得到对象在哈希桶中广泛随机分布的方法有两种:在hashCode中对类的实例变量进行异或运算;将类的实例变量与素数相乘
Main(){ List<Integer> list=new ArrayList<Integer>(); append(list) } 改代码可编译且运行 list中将包含“0043” 因为旧式的遗留代码允许将任何东西(基本类型除外,但添加的基本类型会自动装箱)放到集合中。为了支持遗留代码,java5和6允许较新的类型安全代码使用旧式代码。
对于迭代:如果两个对象相等,则他们的哈希码也必须相等。 对于所有实例,hashCode返回同一个值是合法的,尽管在实践中效率很低。 hashCode重写规则:一致性:多次调用x.hashCode会返回同一个整数;如果x.euqls(y)为ture,则x.hashCode==y.hashCode为ture。如果为false,则x.hashCode不一定等于y.hashCode,但不等于会产生更好的效率。
如果不重写hashCode则new的每个项都会进入自己的桶,这时重写的equals不起作用
equals重写注意参数是Object o The hashCode method for a given class can be used to test for object inquality,but not object quality,for that class . The hashCode method is used by the java.util,HashSet collection class to group the elements within that set into hash buckets for swift retireval 快速取出 set 用add添加重复元素时,将添加失败,且返回false。 HashSet迭代时不关心顺序,而LinkedHashSet会按照元素插入顺序迭代。如果没有重写hashCode方法,则默认的Object。hashCode将允许多个在意义上相等的对象添加到不允许重复的集合中。 toArray()返回的是Object,有参用法是Integer[] in=new Integer[3] in=list.toArray(in) 其中list是已声明泛型为Integer的ArrayList对象。 编译器编译时是看不见泛型的。 static void append(List list){ list.add(“0043”);}
Main(){ List<Integer> list=new ArrayList<Integer>(); append(list) } 改代码可编译且运行 list中将包含“0043” 因为旧式的遗留代码允许将任何东西(基本类型除外,但添加的基本类型会自动装箱)放到集合中。为了支持遗留代码,java5和6允许较新的类型安全代码使用旧式代码。
不能将new ArrayList<Dog>/<Cat>()传给变元(ArrayList<Animal> list),否则编译出错
通配符只可以针对引用声明使用,当创建一个新的类型集合时,他们不能作为类型参数。
如果添加到哈希码桶中的对象的实例变量的值的改变影响到哈希码值的改变将导致Hash集合无法通过键值找到该对象,也就无法对该对象进行任何操作,但对象仍在集合中。
For(int i:intList)遍历时,intList必须是已经声明泛型为Integer的集合类,否则编译出错
通配符?只能在声明集合时使用,不能再实例化集合时使用
The type List<A> is assignable to List <? extends A> 反之不可
The type List<Object> is assignable to List <?> <?>=<? extends Object>
任何类型的List都可以赋给变元List<?>,但意味着不能添加任何东西到作为List<?>引用的列表中,声明泛型时只有extends 而没有 implements
Comparable thisObject.CompareTo(anotherObject) 自定义如何比较 若thisObj>otherObj 返回一个大于0的数,当重写compareTo时应该将变元类型改为正在排序的类型。若thisObj与otherObj类型不同,则可编译但有异常
创建泛型方法:假如你想创建一个方法,它带有任意类型的一个实例,实例化该类型的ArrayList,并向ArrayList添加实例。基本而言,我们只不过想要一个实用工具方法,可以传递类型给她,且她能过利用该类型来构建一个类型安全的集合。
使用泛型方法,可以再没有特定类型的情况下声明方法,然后基于传递给方法的类型获得类型信息。如 class CreateAnArrayList{
Public <T> void make ArrayList(T t){
List<T> list=new ArrayList<T>();
List.add(t);
}
}
如果传进一个Dog类型实例,则该方法会创建一个泛型为Dog类型集合
TreeSet 插入该Set的所有元素都必须实现Comparable接口,所有这些元素都必须是可相互比较的(类型相同,compareto返回不为0),即若有两个元素compareTo之后返回0,则add方法会添加失败
自然排序中,空格排在字符前面,大写字符排在小写字符前面,aAa排在aAaA前面
Collections.reverseOrder()返回一个Comparator,无参时按自然顺序逆序排序,有参MyComparator时按自己定义的顺序的逆序排序
Arrays/Collections。binarySearch(数组or集合,数组or集合元素),被查找的数组或集合必须在能够查找它之前进行排序,否则结果不可预测。但通常返回-1
数组与集合转换 Arrays。asList(myArray) 不论是否声明泛型,集合类的toArray都返回一个Object数组,需要强转。而get(int index)返回声明的对应泛型,无需强转
BinarySearch若是查找自然顺序的则无需第三个变元,若是Comparator排序后,则必须要第三个变元对应的Comparator
SortedSet 不能被实例化 即不能new
Lower < floor<= higher> ceiling>=
tailMap(a) 返回一个子映射sortedMap 从键a开始,含a
Map带有两个用逗号分隔的类型参数
8、转义字符 \b空格 \n回车 \f换页 \” 双引号 \\ 斜杠 \t 水平制表符
元字符 \d 数字 \s 空格符 \w 字字符(字母数字或下划线) .点元字符 意味着此处可以是任意字符 若要将字符点号作为定界符 则String regex=“\\.”类似还有\\d。
若字符串中用了\,而不是转义字符就会报错如“\s”
Scanner默认定界符是空格,可用new Scanner()。useDelimiter(String s(正则))重新设置定界符。Next()以String返回下一个标记,并移动到下一个标记。用nextXxx()之前应该用hasNextXxx(测试一下),否则类型不匹配抛出InputMismatchEx。\d+表示在一行中查找一个或多个数字
用带斜杠的元字符作为字符串参数设置定界符时记得加上一个转义斜杠
9、File File dir=new File(“dir”); File file=new File(dir,“file”);可编译 但file.createNewFile()将抛出IO异常:系统找不到路径
10、Serialize 如果超类实现了Serialize,那么他的所有子类也如此。如果超类没有实现,而其子类实现了,那么在反序列化一个子类对象时,将会运行非序列化的超类的构造函数。writeObject和readObject是序列化系统提供的特殊回调契约的一部分,实质上是指:“如果你具有一对与这个签名完全匹配的方法,就会在序列化/反序列化的过程中调用这些方法”。
当保存Dog时,你可以进入序列化和反序列化的中间并说:“我想在序列化Dog对象时顺便表示其成员Collar类型对象的状态变量(一个int size)添加到流中”,但不要忘了defaultWirte(or Read) Object。序列化时要注意IO异常,因此要放入trycatch块中
Exist()可以测试文件或目录是否存在,而isFile()只能测试文件
序列化时看不见transient变量(若使用它,取它的类型的默认初始化值),static变量也不会受影响
只有在写入数据时才需要调用flush方法,与读相关的类不具备这个方法
当创建子映射时,就为新的集合提供了一个值的范围。当将键/值对添加到原始的TreeMap或部分复制的SortedMap中时,新的项会被自动添加到其它集合中。但向原始集合添加的新的项如果位于复制的范围之外,这时新的项只会出现在原始集合中。如果试图将一个超出复制范围的项添加到复制的集合中,则会抛出异常。
注意TreeSet和TreeMap的三个方法headXxx,subXxx,tailXxx,前者变元为终点,不包括在内,第二个变元为起点,和终点,起点包括在内,终点不包括在内,第三个变元为起点,包括在内
备考OCJP认证知识点总结(四)相关推荐
- 备考OCJP认证知识点总结(二)
一.学习内容摘要 第二章: 1.面向对象的三大特性:封装,继承,多态. 2.多态的三要素:继承,重写,父类引用指向子类对象 3.方法的重写和重载 4.接口的定义和实现,与抽象类的不同 5.构造方法及n ...
- OCJP认证考试复习课-张晨光-专题视频课程
OCJP认证考试复习课-388人已学习 课程介绍 OCJP是甲骨文推出的的国际认证. 本课程由Java总监级讲师专注Java十三年,不但包含OCJP考试全部内容,还特意制作了很有针对性 ...
- OBCA认证知识点-part4
1.当一张表很大时,可以水平拆分为若干个小的分区,存储在物理硬盘上,每个分区包含表的若干行记录. 2.根据数据到分区的映射关系不同,分为hash分区.list分区.range分区.每个分区还可以进行二 ...
- 备考华为认证HCIP
先来了解一下华为认证HCIP: HCIP-Huawei Certified ICT Professional:华为认证ICT高级工程师(HCIP)是华为认证体系中用于标识个人能力在某一技术领域达到高级 ...
- 一天1个机器学习知识点(四)
陆陆续续整理的机器学习的知识点,资料大多数来自网上,不做盈利目的,如果侵权请告知即删!如果文章中有错误的地方还请各位同学指正,,一起学习,一起进步! 每天都在更新中,记得收藏,每天进步一点点!! 一天 ...
- OBCA认证知识点-part3
1.OceanBase家族主要产品 - OceanBase数据库内核(最核心),Paxos协议确保高可用性,兼容MySQL与Oracle,同时支持HTAP(既可用于OLTP业务,也可以用于OLAP业务 ...
- C1认证学习十四、十五(算法常识、HTML Head 头)
C1认证学习十四.十五(算法常识.HTML Head 头) 文章目录 C1认证学习十四.十五(算法常识.HTML Head 头) 十四(算法常识) 任务背景 任务目标 查找算法 1.顺序查找 2.二分 ...
- 四年级上册计算机知识点总结,四年级信息技术册主要知识点整理.doc
四年级信息技术册主要知识点整理 四年级信息技术上册主要知识点整理 四年级信息技术上册主要知识点整理 1.用电脑自带的画图工具画 标准圆 时,要先按下Shift 键,再拖动鼠标画圆. 2.使用画图工具时 ...
- 阿里云ACP认证知识点相关重点总结(上)
本文章原作者山海经,已获得作者授权在平台发布.若需转载或复制可直接转载,标注作者山海经即可,无需特别说明. 有意者投稿.合作idea等请联系微信号aws_superman 阿里云acp认证知识点相关重 ...
- aws认证有用吗?怎么备考AWS认证考试?
aws认证考试的难度并不是很大,很多人认真备考几个月都会通过,而且现在云计算发展比较好,aws认证证书作用比较大.aws认证有用吗?怎么备考AWS认证考试? 下面认证大使就来给大家详细介绍下吧. 一. ...
最新文章
- 在Ubuntu 16.0.4.5 LTS上安装python 2.7版本的cv2模块
- 数据库与操作系统时区更改
- 剑指 offer set 26 不用加减乘除做加法
- CROC-MBTU 2012, Elimination Round (ACM-ICPC) 总结
- WildFly Swarm:使用Java EE构建微服务
- php 后端 轻量 框架,GitHub - 22cloud/mixphp: 轻量 PHP 框架,基于 Swoole 的常驻内存型 PHP 高性能框架 (开发文档完善)...
- 「原创」从马云、马化腾、李彦宏的对话,看出三人智慧差在哪里?
- python分支结构说课_Python_3.8平台上的分支结构(模块.类.函数)_11
- python 小说数据挖掘_Python 中的实用数据挖掘
- 在Linux系统下初始化COM组件,Linux操作系统的引导和初始化.doc
- 转行进入互联网的一条可行路径
- win 7系统连接WIFI
- JVM学习系列之对象访问的两种方式句柄和直接指针
- day 17 - 1 递归函数
- EXCEL数据格式,字符型空值““参与计算、数值为0时单元格显示为空(解决了无法使用value()函数将字符型空值““转换为数字型的问题)
- 从数据预处理开始,用最简单的3D的CNN实现五折交叉验证的MRI图像二分类(pytorch)
- 港股通换汇、红利、交易费用、资金清算规则
- 益银达-分享10个在家就能赚钱的副业推荐,总有一款适合你
- vue中防止按钮重复点击提交的方法
- 什么是 GraphQL?