Java基础知识

访问修饰符

修饰符类内部本包子类外部类
publicyyyy
protectedyyyn
defaultyynn
privateynnn

重载和重写

重载

发生在同一个类中,方法名必须相同,参数类型、个数、顺序不同。方法返回值和访问修饰符修饰符可以不同,发生在编译时。

重写

发生在父子类中,方法名、参数列表必须相同。其返回值、访问修饰符修饰符、异常抛出范围小于或等于父类。也就是说父类方法用private修饰时,不能被重写。

String、StringBuffer、StringBuilder

String使用final关键字修饰的字符数组保存字符,对象不可变,可以理解为常量,是线程安全的
StringBuffer和StringBuilder都是继承自AbstractStringBuilder。但是StringBuffer对方法添加了同步锁,是线程安全的。StringBuilder则是线程不安全的。
使用场景方面,对于少量数据操作用String即可
单线程下缓冲区操作大量数据:StringBuilder
多线程下缓冲区操作大量数据:StringBuffer(虽然StringBuilder效率高一点,但是为了线程安全大可不必)

自动装箱拆箱

装箱:把基本数据类型包装成其对应的引用数据类型
拆箱:包装类型转换成对应的基本数据类型

== 和 equals

==:对于常量来说比较的是值,对于引用数据来说比较的是其对象的地址,即是否是同一个对象
equals:分两种情况,是否被重写。一般被重写于判断其值是否相等,否则与也是比较对象的地址

String aa = new String("ab"); // aa为一个引用
String bb = new String("ab"); // bb为另一个引用,对象的内容一样
String a = "ab";//引用对象放在常量池中
String b = "ab";//在常量池中查找
if(42 == 42.0)//true
if(a == b)//true
if(aa == bb)//faulse
if(aa.eqauls(bb))//true

String类中equals已被重写为比较值的大小而Object中则没有
当创建String类的对象时,虚拟机会在常量池中查找有没有存在的值和要创建的值相同的对象,如果有则把它赋予当前引用,没有则创建一个新对象

final关键字

final关键字的用处:变量、方法、类

  1. final修饰变量:如果是基本类型的变量则表示该变量一旦初始化不能被更改,如果是引用类型的变量则表示该变量一旦被初始化就不可指向另一个对象
  2. final修饰方法:方法锁定,防止继承类对该方法进行修改旧版本涉及到效率问题,类中所有private修饰的方法被隐式的指定为final
  3. final修饰类:该类不可被继承,所有的成员方法都隐式的指定为final方法

值传递和引用传递

引用数据类型(类、数组、接口)传递是引用传递,基本数据(布尔、字符、整型、浮点)类型是值传递。

值传递时,jvm会创建变量副本与源对象无关。
引用传递时,传递的是对象的引用,外部的引用对象的改变会影响源对象,因为它实际上是地址传递。
注意:String类型作参数传递的时候与基本数据类型一致

未完待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值