考试的宗旨仍然是掌握基础知识,不过鉴于Oracle的这个认证考试还有不少的大家来找茬的成份在,所以一定一定要细心为上。

 

关于抽象类的坑点集合:

  • 抽象类不是必须得有抽象方法,但有抽象方法的类必须是抽象类必须加上abstract
  • 抽象类里面可以有非抽象方法(有body),或抽象方法定义,即abstract void doit();
  • 接口是extends接口,别被坑了
  • 抽象类不可以被直接实例化,只能实例化它的具体继承类
  • 如果写了@Override,却在base class里面找不到这个方法,系统就会出syntax error
  • abstract方法不能有body,非abstract必须有body
  • Abstract_A a = new Extend_A(); 记住这儿Extend_A被称为reference type,而Abstract_A被称为object type,即a中的方法是object type的(使用getClass时,总是得到的右边实例化后的对象的类型,而非定义类型,但内存地址又是reference type的。
  • 只要基类有定义构造函数的,new子类就会自动先去执行基类的构造函数
  • 继承的方法的访问scope必须大于或等于,即cannot reduce visibility of super class,这是JAVA的一个重要思想,就是不能让基类的东西被挡住了
  • 接口可以定义抽象方法,接口里面还可以有具体的变量赋值
  • 有抽象方法的类必须是抽象类,但抽象类不一定要求所有方法为抽象方法 
  • 在JDK6中,抽象类里面可以实例化当前抽象类,但JDK7开始就不行抛异常 Cannot instantiate the type AbstractTry1
  • final和abstract不能同时使用,因为abstract一定要new,地址肯定会变
  • getClass拿到的是=右侧即initializer的类型,而非定义时的类型,即如果 myX = myY; 的话,getClass得到的是myY的类型
  • With overriding, the signatures of two methods are identical but they reside in different classes. 方法的签名是一样的,但链向不同的类
  • 继承类的异常不能比基类抛的异常小 String theString = "Hello World"; System.out.println(theString.charAt(11));
    会抛异常:java.lang.StringIndexOutOfBoundsException

关于数组的坑点集合:

  • 定义二维:int[] array2D[]; int [] [] array2D;
  • 可以这么定义:int[][] array2D = new int[2][];// 因为columns的长度不一定非要一样长
  • {{xx},{yyy}} 这种数组的赋值只能用于初始阶段 (initializer),
    正确:int[] arr = new int[]{1,2}; 
    正确:int[] arr = {1,2};
    错误:int[] arr = new int[2]; arr = {1,2}; // 报编译错:Array constants can only be used in initializers
    错误:int[] arr = new int[2]{1,2};  // int[2] => int[] 报编译错:Cannot define dimension expressions when an array initializer is provided
  • int grades[][] = new int[ROWS][COLS]; // 注意列表

关于数组的其它:

  • Arrays provide constant time random access which is an efficient way of accessing data
  • Arrays are more difficult to insert or remove elements than other data structures
  • An index to an invalid element is possible

关于数组的API:

  • System.arraycopy(s,start1,t,start2,length)(注意:s是原数组,t是目标数组,start1&start2是开始复制下标,length一般是s的长度,由于arraycopy方法不给目标数组分配内存空间,所以必需要先为t分配内存空间!)
  • equals, 是用一维的 deepEquals,是用在多维的
  • toString() 用于一维的,deepToString() 用在多维的,deepToString(object[] o),但对String[]的一堆也等同于toString()
  • 注意Array及ArrayList的API 如arrlist.Remove(xx) 只移除第一个
  • 这个会create a new array based on an existing array arr2 = Arrays.copyOf(arr1, 3); //3是指长度
  • Using the Arrays.copyOfRange method 这个也会create a new array based on a sub-range of elements in an existing array
    arr2 = Arrays.copyOfRange(arr1, 3, 5); // 3 4
  • Arrays.fill(arr1,1,3,5); // [0,5,5,0,0] 而不是[0,5,5,5,0] 这儿注意fill的第二个数值参数是exclusive的
  • 可以用set来改值:lst2.set(0,"Birch")

关于循环的坑:

  • 这段代码是可以编译通过且正常运行的

    Java允许无限循环的存在,见这一篇Java无限循环问题, java识别到这是一个无限循环,就不会再让下面有代码了
  • 循环中不可修改循环变量,否则会出compile错,ConcurrentModificationException。如果一定要在过程中变更的话,换成iterator

其它大小不一的坑:

  • java的switch支持32位及以下的,包括Integer(包含byte, char, short, int,但double, long不行), enum, String
  • 重载中不一定需要完全匹配类型,但不能ambiguous,或完全找不到,比如m("00") 匹配m(Object), m(10)如果没有m(int)的话,也匹配m(long),如果m(0.5d)但找不到m(double)而只有m(float)什么的话,就会跑去找m(Object)
  • java的数据类型就分为四种,long是整数,所以上一条会匹配long ,以下为32位机,会受机器位数影响
    实数:double (8字节)、float (4字节)
    整数:byte、short(2字节)、int (4字节)、long (8字节)
    字符:char (2字节)
    布尔值:boolean

    还有一些自定义的类型:
    java.math.BigDecimal extends Number
    java.math.BigInteger extends Number

  • 静态变量不管是什么情况下,都是指向的是一个heap地址的啊...实例内的也是,和C#长得不一样,但内存表面在这点上没区别,亲
  • field 是不同于local variable的
  • 这一题Q94的这一句求解释 for ( expr1 ; expr2 ; expr3 ) { statement; } When expr2 evaluates to false, the loop terminates. It is evaluated only after each iteration through the loop。
  • 这样可以的:ArrayList<Integer> t3 = new ArrayList<>(1);
  • int a,b,c=10; 这种情况只有c被赋值了,但仍能编译通过
  • 同一变量名可以被定义为不同类型,如String str = null; int str = 1;

关于异常的坑:

  • 除非遇到System.exit(0), 否则无论有没有try或有没有进入到catch,都会执行finally
  • 类似c#的using的 try(xxx) {}中的xxx所涉及的类必须实现了autoclosable接口
  • catch (java.io.IOException | java.io.FileNotFoundException e)
  • 这样会出错,提示后者已经在前者是存在,反之一样,所以|分隔的exception不可以有继承/实现关系
  • catch block不是必须得有的,try只要有catch或finally都可以
  • 实现它的类的Exception不能比基础定义中的大,这个很容易想,就是不能超出定义的范围
  • The catch clause argument is always of type Throwable 

关于API的坑:

  • Java有哪些exception? 以下是RuntimeException
    ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException, ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFormatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException
  • StringBuilder的delete的end可以是超过length()的数值,而且不会出错 StringBuilder sb = new StringBuilder(); sb.append("test"); sb.delete(0, sb.length()+1222);
  • Arrays.sort(arr,null); 表示comparator为null则用默认的自然排序
  • Arrays.asList(T...); 这个在学Arrays时可没有留意到呢!
  • ArrayDeque extends Deque (这个好高深喔!)文章一
  • arr1.toString() 得到的字符串使用到的方法:Integer.toHexString(hashCode())

JAVA SE 803 考试前突击的更多相关文章

  1. Java SE 6 新特性: 对脚本语言的支持

    2006 年底,Sun 公司发布了 Java Standard Edition 6(Java SE 6)的最终正式版,代号 Mustang(野马).跟 Tiger(Java SE 5)相比,Musta ...

  2. Java SE Eclipse中引入第三方jar及class

    使用eclipse开发Java SE 总免不了需要引入第三方的jar或者calss文件.这里给大家说一下如何在eclipse中引入第三方jar或者calss文件. 让我们先了解一下eclipse项目中 ...

  3. 黑马程序员 ——Java SE(1)

    ----<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训 ...

  4. java的几个版本以及jre,jdk等概念——【转载】JDK、Java SE、Java EE、Java ME我该选

    我们平时使用的一些软件,有一部分需要Java环境的支持,但是SUN那么多的产品,让人眼花缭乱的版本号,前看后看都差不多的缩写,让我们选择起来的时候常常望而却步,只好跟着感觉走.所以下面我要介绍的就是那 ...

  5. Linux 下安裝 Java SE Development Kit(JDK)並配置環境變量

    下載頁面:http://www.oracle.com/technetwork/java/javase/archive-139210.html 打開“Java SE 7”,再打開“Java SE Dev ...

  6. 【Java SE】如何用Java实现反转排序

    摘要:反转排序是将原先已经排序好了的重新排序,是原来的数组元素的顺序反转过来.假设原来的数组顺序是{6,5,4,3,2,1},反转之后的顺序就是{1,2,3,4,5,6}.这个排序的算法不是很难,代码 ...

  7. Java SE 基础知识(一)

    一.基础知识 1. Java SE : Java Standard Edition Java ME : Java Micro Edition Java EE : Java Enterprise Edi ...

  8. 在 Java SE 6 中监视和诊断性能问题

    Java™ Platform, Standard Edition 6 (Java SE) 专注于提升性能,提供的增强工具可以管理和监视应用程序以及诊断常见的问题.本文将介绍 Java SE 平台中监视 ...

  9. Java SE教程

    第0讲 开山篇 读前介绍:本文中如下文本格式是超链接,可以点击跳转 >>超链接<< 我的学习目标:基础要坚如磐石   代码要十份规范   笔记要认真详实 一.java内容介绍 ...

随机推荐

  1. CPU相关知识---物理CPU数、物理核数、逻辑核数、逻辑CPU数 ?

    一.物理CPU数.物理核数.逻辑核数.逻辑CPU数 相互关系??? 物理CPU数 ---> 每个物理CPU对应物理核数 ---> (每个物理核数对应逻辑核数)物理CPU对应逻辑核数 --- ...

  2. bootstrap中实现外层DIV自适应,内层DIV宽度固定且居中的布局

    <!DOCTYPE html><html> <head> <link rel="stylesheet" href="css/bo ...

  3. 分享MYSQL中的各种高可用技术(源自姜承尧大牛)

    分享MYSQL中的各种高可用技术(源自姜承尧大牛) 图片和资料来源于MYSQL大牛姜承尧老师(MYSQL技术内幕作者) 姜承尧: 网易杭州研究院 技术经理 主导INNOSQL的开发 mysql高可用各 ...

  4. Orchard Express Oracle v1.7.2 发布

    发布说明: 1. 添加Oracle支持,在AppData目录下提供Oracle及Sql Server数据库创建脚本. 2. 修正上一版本(精简版 v1.7.2)中,Dashboard无需登录问题. O ...

  5. SQL语句汇总(二)——数据修改、数据查询

    首先创建一张表如下,创建表的方法在上篇介绍过了,这里就不再赘述. 添加新数据: INSERT INTO <表名> (<列名列表>) VALUES (<值列表>)  ...

  6. TfS+强制删除签出锁定项

    1.连接到tfs数据库服务器的tfsversioncontrol库: 2.查tbl_workspace表,找出相应的工作目录,比如 select * from tbl_workspace where ...

  7. paip.提升用户体验--radio图片选择器 easyui 实现..

    #paip.提升用户体验--radio图片选择器 easyui 实现.. =================================== ##原因... ------------------- ...

  8. iOS开发——高级技术&社交服务

    社交服务 Social 现 在很多应用都内置“社交分享”功能,可以将看到的新闻.博客.广告等内容分享到微博.微信.QQ.空间等,其实从iOS6.0开始苹果官方就内置了 Social.framework ...

  9. IT 需要知道的一些专业名词和解释 (长期更新)

    c2c: 就是我卖东西你来买  (comsumer to comsumer个人对个人) b2c: 就是我开公司卖东西你来买 (business to comsumer 公司对个人) o2o: 就是我开 ...

  10. SSL在https和MySQL中的原理思考

    之前对HTTPS通信过程有过了解,HTTPS是应用HTTP协议使用SSL加密的版本,在TCP和HTTP之间增加SSL协议.通过握手阶段认证双方身份,协商对称秘钥对通信信息进行加密.此处只描述常用的服务 ...