java基础知识点补充

断言assert

 assert x == 10 : "Our assertion failed";

等价于if (x!=10) throw new AssertionError("Our assertion failed") ;

  • 错误Error会直接停止程序无法捕捉。
  • assert仅用于关键数据的检验

断言的本质

断言的使用

字符编码

编码集

一个字符编码成对应字节

ASCII表示最基础的256个字符

西欧:ISO-8859-1(单字节单字符)----window12525

国内:GB2312--GBK--Big5--GB18030

字符集

一个字符对应unicode字符集里的数字编号,用这个数字编号编码成对应字节

UTF-32 统一编码成4字节(web常用)

UTF-16 常用2字节,不常用4字节 (java默认编码)

UTF-8 根据数字编号大小,分别1,2,3,4字节

编码与字符(详细到有点啰嗦)

java的clone

  • 自定义对象要实现接口Cloneable才可以使用clone,String类自带实现。
  • clone本身是超类里的protected方法,所以需要重写覆盖后用super.clone()调用
  • 浅克隆:直接使用super.clone(),新对象复制值和引用(数组地址)
  • 深克隆:在super.clone的基础上对引用(数组)重新定义。新对象复制值,重新生成新的引用(数组)

深浅克隆

java的多线程实现

  1. extends Thread  继承类必须重写 run() 方法,该方法是新线程的入口点。它也必须调用 start() 方法启动。
  2. implements Runnable 实现类必须重写 run() 方法,该方法是新线程的入口点。它也必须调用 start() 方法启动。
  3. implements Callable<Integer> 实现类,并实现 call() 方法,该 call() 方法将作为线程执行体,并且有返回值。返回值必须放到FutureTask 对象获取。

菜鸟的多线程

fianl与static

final变量的用途

  • final修饰的变量,会定死无法改变,无论是引用类型的地址,还是基本类型的数值。
  • final修饰的变量,在编译期间会对final变量替换成fianl变量修饰的值(或引用地址)。
  • final关键字不会影响到变量在jvm的存储位置,static才会影响。(注意部分博客会说final有影响,其实本质是static有影响)
  • 匿名内部类只能使用外部的final变量
  • 因为内部类获取的外部变量是外部变量的副本,如果副本变量改变值,原本没有改变,这违反数据的一致性,所以必须使用fianl保证变量不可变,保证数据一致性。

static的用途 (跟前面的final同个大佬)

重载与重写:

重载:(overloading),同一个类中,方法名相同,参数不同,返回值可以相同可以不同。(参数唯一确定方法)

重写:(override),子类覆盖父类的方法,方法名和返回值和参数全部必须相同。

重写时,子类的返回值范围小于等于父类,抛出的异常范围小于等于父类,访问修饰符范围大于等于父类。

String与StirngBulider:

string里final绑定是char【】数组。

stringbuilder绑定的是char【】数组。

string改变时,在char数组里可以改变,且添加字符时,如果不超过数组大小也可以不用重新生成新的对象?

同理stringbulider如果添加新的字符时,超过数组大小也要生成新数组吧?

String里的封装的操作方法是生成新的strign对象操作后返回,

Stringbulider的操作方法是在char[]数组对象上操作,然后返回这个数组对象。

char[]对象是私有变量,其他类无法操作。

答1:string已经封装好了,只要你用它的方法就返回新String对象,无法操作char数组对象,与final无关。

答2:stringbuilder更换了char数组。当添加字符大于16字符时,更换char数组对象,并且每次操作返回的是同一个stringbuilder对象。

java注解的继承性

java注解的继承性

1.基于类的注解的继承性,由@Inherited元注解决定。

如果注解有@Inherited,那这个注解作用与类时可以被子类继承,

子类注解可以覆盖父类注解。

2.基于方法或者属性的注解的继承性,完全由方法或者属性自身的继承性决定。

如果子类方法覆盖父类方法,由子类方法决定是否有注解,不依靠父类方法。

没有覆盖时,父类方法有注解就有注解,没有就没有。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值