OCP(java)考试复习知识点

最近刚考完OCP(java)的相关考试,将考试前刷的题目一些考点记录了下来,方便以后查阅

由于我是按照刷题的题号记得先关知识点,所有序号不是连续的,随手记下的笔记,方便以后的查阅

1.关于Iterator迭代器使用:
hasNext()可以判断是不是含有下一个元素,直接调用next()就可以获得里面的元素
①List<Integer> lists = new List<>();
for(Iterator<Integer> iter = lists.iterator();iter.hasNext();)System.out.println((Integer)iter.next());
②Iterator<Integer> iter = lists.iterator();
while(iter.hasNext())System.out.println((Integer)iter.next());


2.Java集合介绍
Collection:
1.Set(不是放入时的顺序,元素不可以重复)
2.Queue(队列,)
3.List(是放入时的顺序,元素可重复)
Map不继承Collection;不保存放入顺序


List:
1.LinkedList,底层基于链表实现,增删快,查找慢
2.ArrayList:底层采用数组,查找快,增删慢


3.向上转型和向下转型
Parent s1 = new Son(); //向上转型
Son s2 = (Son)s1;       //向下转型


4.方法签名 = 方法名 + 参数列表


接口里面定义的常量都是public static final 


Java中四种内部类:静态嵌套类,成员内部类,局部方法内部类,匿名内部类


匿名内部类:
interface A{public void test();}
class B{
A a = new A(){
public void test(){
System.out.println("hello World!");
}
};
a.test();
}


方法重写的规则:
①方法签名(方法+参数列表)必须一致
②子类访问修饰符要大
③子类的异常必须小于等于父类
④子类的返回值类型必须是父类的子类或者一直


数组的定义:
int[] arr = new int[2];
int[] arr = new int[]{1,2};//当后面接一个具体的数组的时候不允许给长度


final修饰的变量: ①声明的时候初始化②加static的可以在静态块中初始化③构造器中初始化


16.数组可以通过直接赋值将这个数组给另一个数组


17.String的API:
concat:表示连接两个字符串
String s1 = "12345";
String s2 = s1.concat("78");
//s1没有改变,这个函数的返回值才是连接的两个字符串,java中字符串也可以直接相加连接两个字符串

实际上对String来说,由于初始化的时候就是一个不可边长的字符串,很多API实现字符串的添加,替换都是其方法的返回值才能拿到,这个字符串是不能被改变的


20.正则表达式
\s表示任何的空白的字符,包括空格,制表符,换页符
\w匹配字类字符+下划线,等价于[A-Za-z0-9_]
\d表示数字
*等价于{0,}
+等价于{1,}
?等价于{0,1}
java中匹配的时候 \\前面一个反斜杠表示后面这个反斜杠是一个普通的反斜杠,使得后面的字符接上之后,表示它正真的意义


24.子类实例化的时候先实例化父类,多有少个子类被new就有多少个父类被new,垃圾回收机制某个子类实例化的对象被gc回收的时候,也要将相应的子类实例化的父类回收


25.jar文件的目录格式


26.Java中if和while括号中只能是boolean类型


32.java中华子类默认继承父类中非私有的方法和属性(注意is-a和has-a)


33.Java中编程一般满足:高内聚(High cohesion) 低耦合(Low coupling)


35.java中(向上转型的时候)
①调用方法(动态调用):由new出来的对象决(运行时的对象)定
②调用属性(静态调用):由编译时的对象决定
36.java中向下转型,不同的对象进行强转,编译不报错,运行报错,由于编译时看父类


37.java中子类构造器默认调用父类的无参构造器,父类中没有的无参构造器的时候要注意


38.子类实例化的对象强转父类的时候就会调用父类的属性


43.断言:
①开启方式:Window->Preferences->java->Installed JREs->(选择相应的JDK之后)->Edit->Default VM arguements:(这里填写-ea)->finsih
②断言用法:
1.assert(判断式);判断式为true无反应,为false,抛出异常
2.assert(判断式):"错误描述";为true无反应,为false时抛出异常会加上"错误描述"


46.if和while括号里面只能为boolean表达式,括号里面对boolean表达式变量赋值是允许的


47. ①throw和throws的区别:
1.throw是语句抛出一个异常 例:throw (异常对象) throw e
2.throws是方法可能抛出异常的声明,例:public void test()throws Exception(){}
    ②try{}catch(/*只能捕获到这里声明的异常以及子类*/)){}


48.volatile(关键字):保证内存中变量的可见性,但不能保证原子性


61.java中字符串加号可以进行拼接,其中true,false,null为值不是关键字,也可以做拼接
String str = "abc";str+=12;strt=="abc12"
str+=null等价于str+="null"




63.Integer定义整数:
①如果是-128到127,从内部的缓冲区获取到数据
②其他情况new了新的对象


64.Scanner(String source),构造一个新的Scanner,它的值是从指定的字符串扫描的,useDelimiter(Pattern pattern)是将分隔模式设置为指定模式


65.Thread.yield()方法调用后会暂停正在执行的线程对象,并且开始执行其他的对象


71.向上转型的时候编译主要看父类


73.在构造器的使用中,this()和super()一样必须放在第一行


129.一个线程被new出来后只能调用start()方法一次


132.直接 "包名"."类名"."方法"可以直接调用某个包的某个类的方法


139.javac -d 目标目录 java源文件 ,将源文件生成的class(前提是源文件位置没错)放入目标目录


153.内部类的实例化:
①静态的内部类 Parent.Son s = new Parent.Son();
②普通成员内部类:
①Parent.Son s = new Parent().new Son();在~静态和非静态的方法都能用
②Parent.Son s = new Parent.Son();只有在非静态的方法可以用


179.java中标记必须放在循环语句的前面


190.父类的私有方法对子类来说是透明的,子类可以写一个方法签名一模一样的方法


195.is-a 和 has-a 找这个关系的时候一定要注意父类和子类的


213.队列的API有点poll()获取并且移出此队列的头,列表为空返回null,peek()获取但不移除队列的头,列表为空返回null


215.Arrays.sort(数组) Collections.sort(List) TreeSet()可以对Set集合进行自然排序


216.HashSet去重复的过程:先比较HashCode,如果相等则调用equals方法,如果返回true


260:静态方法没有重写的概念


转换日期格式的方法
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = new Date();
String str = dateFormat.format(date);
System.out.println(str);



java中的异常:
1.什么是异常:java程序在运行时出现的错误叫异常.语法错误属于编译时的错误,不能编译肯定不能运行,则不是异常
2.所有异常的超类:Throwable,它下面有两个实现类Error和Exception
①Error是错误,一般是与JVM有关的,对于这种错误,仅仅靠程序本身无法恢复
②Exception,分为运行时异常(RuntimeException)和检测时异常,运行时异常不用管,JVM会自动抛出,检测时异常必须处理,用try,catch语句或直接抛出,值得注意的是:如果你想要你的异常是运行时异常就继承RuntimeException,是检测时异常继承Exception


java中栈和堆的概念:java中为会为每一个线程分一个栈内存和堆内存,基本数据类型定义的变量和引用变量都放在栈内存中,new出来的对象放在堆内存中.
java中的栈帧:java以栈帧为保存线程的状态


java中在方法中参数传递的概念:当基本类型参数传递的时候,只是传递值.而当对象作为参数传递的时候,传递的是对象的地址(堆中的地址),这个时候也就是形式参数和实参指向了堆中的同一个地址


垃圾回收机制 回收对象的时候 怎么判断对象的状态:
①计数器:这个对象被引用了一次就加1,失去这个引用了就减1,计数器为0的时候该对象不可被使用,也就是死亡对象
②对象可达性的分析
唯一值得注意的是当对象判断出没有引用之后,不会被马上回收,还要经历两个阶段.可达性分析和是否有必要执行finalize方法


接口和抽象类:接口可以继承(甚至多继承)接口,不能实现,抽象类只能实现接口不能继承接口
区别:抽象类除了不能实例化以外,和普通类没有任何区别,并且只有和普通类相比抽象类才能使用abstract关键字时

猜你喜欢

转载自blog.csdn.net/private_void_main/article/details/79006429