SE进阶部分注意点1

1、 关键字final,其修饰的类不可以继承,修饰的方法不可以覆盖,其指向的类的属性不可以进行修改,但可以改变所储存的内存地址。
2、 abstract 关键字定义的类就是抽象类,采用 abstract 关键字定义的方法就是抽象方法
3、 抽象的方法只需在抽象类中,提供声明,不需要实现;那么这个类被子类继承,抽象方法必须被重写。如果在子类中不复写该抽象方法,那么必须将此类再次声明为抽象类
4、 抽象类和抽象方法都不可以被final进行修饰
5、 抽象方法只要在抽象类中提供声明,不需要进行实现,起到了一个强制的约束作用,要求子类必须实现;但抽象类中并不是要求所有的方法都必须是抽象的
6、 不能用final来修饰abstract修饰的抽象方法
7、 接口我们可以看作是抽象类的一种特殊情况,在接口中只能定义抽象的方法和常量;在 java 中接口采用 interface 声明;接口中的方法默认都是 public abstract 的,不能更改;接口中的变量默认都是 public static final 类型的,不能更改,所以必须显示的初始化
8、 接口不能被实例化,接口中没有构造函数的概念;如果一个类实现了接口,那么接口中所有的方法必须实现
9、 抽象类也可以实现接口,但也要把接口中的抽象方法实现出来,可以在抽象类中在添加抽象方法,让别人继承的时候在实现其特有的抽象方法
10、 若类实现多个接口得到时候,在语法格式上采用逗号将接口名称进行隔开。
11、 优先选择接口(因为继承抽象类后,此类将无法再继承,所以会丧失此类的灵活性)
12、 对于字符串的比较,不可以使用“==”来处理,使用这个符号比较的是两个字符串存储的内存地址,从而需要用equals方法来对字符串进行比较。
13、 包其实就是目录,特别是项目比较大,java 文件特别多的情况下,我们应该分目录管理,在 java中称为分包管理,包名称通常采用小写
14、 采用 protected 声明的变量或方法只有子类或同一个包下的类可以调用
15、 抽象类是半抽象的,接口则是完全抽象的;抽象类中有构造方法,接口中没有构造方法;接口和接口之间支持多继承,类和类之间只能单继承;一个类可以实现多个接口,一个抽象类只能继承一个类。
16、 数组的定义有多种方式来进行:(1)int[] a=new int[3] (2)int[] a={1,2,3}
17、 多维数组创建的时候,不一定要求固定是规整的数组,固定下来必须是多少行多少列,每一行可以有任意个元素,只不过创建的时候可以是逐行来进行创建。
18、 多维(二维)数组的遍历:for (int i=0; i<data.length; i++) {
for (int j=0; j<data[i].length; j++) {
System.out.println(data[i][j]);
}
}
19、 数组的排序算法包括冒泡排序和选择排序,都是为了方便后面的数组查找
20、 常用类String,双引号括起来的内容便是String类型实现例,双引号括起来的内容是不可变的;其内容是存储在方法区的字符串常量池当中的;而new String 是在堆内存中开辟空间,但是存储位置也是在字符串常量池中的
21、 String s1=”abc” s1保存的不是abc这个字符串,这个字符串是保存在字符串常量池当中的,而s1保存的是abc字符串在字符串常量池中的内存地址
22、 New出来的变量是在堆内存中进行存储
23、 ==判断的是两个变量之中保存的内存地址
24、 String中只有一个方法是静态的,不需要进行new对象来得出,就是valueOf,将其他类型的数据转换为字符串;用类名来调用String. valueOf(100)类似这种
25、 本质上System.out.println()这个方法在输出结果的时候,本质上就是将数据转换为String的形式,然后在控制台上进行输出。
26、 StringBuffer 称为字符串缓冲区(一个byte数组,自带长度为16个),它的工作原理是:预先申请一块内存,存放字符序列,如果 字符序列满了,会重新改变缓存区的大小,以容纳更多的字符序列。StringBuffer 是可变对象, 这个是和 String 最大的不同,String是不可变的
27、 StringBuilder 和 StringBuffer 的区别是 StringBuffer 中所有的方法都是同 步的,是线程安全的,但速度慢,StringBuilder 的速度快,但不是线程安全的
28、 不管是错误还是异常都是可以抛出的,实现了Throwable方法
29、 编译时异常,表示必须在编写程序的时候预先处理,不然编译器报错;运行时异常,可以在编写程序的时候可以处理,也可以不处理。
30、 所有的异常都是需要new对象出来的,所以在编译阶段是不会发生异常的,所有的异常都是在运行阶段发生的,即便异常分为编译时异常和运行时异常,但是仍然都是在运行阶段发生的。
31、 处理异常的两种方式:1、在方法声明的位置上,使用throws关键字(抛给上一级) 2、使用try catch进行异常捕捉
32、 Java中异常发生之后,如果一直上抛,抛给了main方法,main方法继续上抛,抛给了JVM进行处理,处理不了,则程序一定会终止
33、 对异常的处理时候,可以用throws将父类异常抛出解决,也可以抛出多个不同种类的异常,中间用逗号隔开
34、 一般不建议在main方法上使用throws方法,从而将异常抛给JVM,因为一旦这个异常真正的发生了,那么JVM就会终止程序的执行
35、 只要异常没有捕捉,采用上抛的方法,此方法的后续代码不会执行;try语句块中的某一行中程序出现异常,直接进入catch语句中进行执行,catch后的语句则会进行执行,catch语句中打印异常堆栈追踪信息printStackTrace()方法
36、 Catch语句块中括号的内部是可以写相应的异常对象,或者是父类异常,但一般写的时候处理异常强调的是精确的一个一个异常进行处理;catch语句块可以写多个,一个try,多个catch,每个catch抓取一个精准类型的异常。写多个catch语句块必须遵循从上到下,从小到大的原则来写,父类型的异常要写在下面。
37、 Try catch语句中的finally子句中的代码是一定会执行的,并且是最后执行的,finally子句必须和try catch一起出现,不能单独编写,可以将流的关闭程序放在这一部分中,避免因为这一点而造成了风险性;但要是退出了JVM,那么finally语句块就不会执行了
38、 Java中自定义异常:编写一个类继承Exception或者RuntimeException;然后提供两个构造方法,一个无参数的,一个带有String参数的。
39、 重写之后的方法不能比重写之前的方法抛出更多(更宽泛)的异常,可以更少、更窄的异常
40、 类在强制类型转换的过程中给,如果是类转换成接口类型,那么类和接口之间不需要存在继承关系,也可以进行转换

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值