Java常见知识点

目录

一、反射机制

二、面向对象的多态

三、break、continue、return区别

四、final、finally、finalize区别

五、String、StringBuffer、StringBuilder的区别

六、<<、>>、>>>含义和区别​​​​​​​


一、反射机制

1.功能:

  • 获取一个对象所属的类;
  • 获取一个类的所有成员变量和方法;
  • 在运行时动态创建对象;
Class c = Class.forName(“类的全路径”);
Student s = (Student) c.newInstance();
  • 在运行时动态调用对象的方法;

2.获取Class的方法

  • Class.forName(“类的全路径”);

  • 类名.Class

  • 实例.getClass()


二、面向对象的多态

1. 多态的实现机制有overload、override。

overload:同一个类中有多个相同name的函数,但是他们的参数不同,是编译时的多态;

override:子类覆盖父类的方法,参数相同,时运行时的多态;子类只能继承父类非私有(protected和public)的成员变量和方法。

2.父类的引用可以执行子类对象。

3.子类独有的方法不能通过父类对象调用。


三、break、continue、return区别

break:退出当前循环,不影响外层循环。可以使用标签(eg: out:)在外层循环中,如果要跳出指定循环,则用break out即可。

continue:用于退出当前循环,继续下次循环。

return:退出当前函数,回到调用该方法的地方。


四、final、finally、finalize区别

final:修饰变量表示变量不可变,一是引用不可变,二是Java对象不可变,因此必须初始化,既可以在声明时赋值,也可以在构造函数中初始化;

finally:try_catch的部分,finally中的代码块一定会被执行。不论try中有return,还是catch中有return,finally中的return会覆盖其他地方的return。

finalize:在gc时会调用被回收对象的finalize()。


五、String、StringBuffer、StringBuilder的区别

1.String是不可变类,String对象一旦被创建其值不能被改变,若要修改相当于new一个对象。

String s1 = new String(“abc”);
String s2 = new String(“abc”);

//s1和s2是两个不同的对象,生成在堆区。

new String(“abc”),可能会创建一个或者两个对象。若常量池中有”abc”,则只会在堆区创建一个String对象,执行常量池中的”abc”;如果常量池中没有”abc”,则会在创建两个对象,一个在常量池中,一个在堆区。

String s1 = “abc”;
String s2 = “abc”;

s1和s2指向常量池中同一个对象”abc”。

2.StringBuffer:是一个类似String的字符串缓冲区,使用append()修改值,toString()转化为String类型,是线程安全的

StringBuffer的修改效率比String高,因为对String对象的修改,需要先new StringBuffer对象,在调用其append()和toString()。

 String s = "hello";

s += “world”;

相当于

StringBuffer sb = new StringBuffer(s);
sb.append(“world”);
s = sb.toString();

3. StringBuilder不是线程安全的,效率比StringBuffer高。

4. 使用场景总结

操作数据量比较小,修改次数少,优先使用String;

在单线程下操作大量Data优先使用StringBuilder;

在多线程下操作大量Data使用StringBuffer。


六、<<、>>、>>>含义和区别

  • << 表示左移运算符,高位不变,低位补0,补n位,所以左移n位相当于乘以2的n次方。

eg: 8<<2,表示左移2位,低位补0,相当于8*2*2=32。

  • >> 表示右移运算符,高位补0,低位不变,右移n位相当于除以2的n次方。
  • >>> 表示无符号右移运算符。高位补0,右移n位相当于除以2的n次方。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值