JAVA 基础

面向对象的三个基本特性

  • 封装:隐藏部分对象的属性和实现细节,对数据的访问只能通过对外公开的接口。通过这种方法,对象内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象私有部分。

  • 继承:让某个类型的对象获取另一个类型对象属性的方法。继承就是子类继承父类的特征和行为,是的子类(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

  • 多态:对于同一个行为,不同的子类对象具有不同的表现形式。多态存在的3个条件:1)继承; 2)重写; 3)父类引用指向子类对象。

Java 基本数据类型

  • byte:字节,8个bit.
  • shot:短整型,2个byte.
  • int:整型,4个byte.
  • long:长整型,8个byte.
  • boolean:布尔类型,1个byte,只有true和false两个取值。
  • float:浮点型,4个byte.
  • double:双精度的浮点型,8个byte.
  • char:2个byte,存储Unicode码,用单引号赋值,表示单个字符。

除了基本数据类型(primitive type),剩下的都是引用类型(reference type)。
String 也不是基本数据类型。

基本数据类型:直接存储在栈上
引用数据类型:数据存储在堆上,栈上只存储引用地址。

String 字符串

String 字符串是被 final 修饰的常量,通常存放在方法区中。
String 无法被继承,无法被修改,任何对他的修改都会产生一个新的字符串,然后引用指向新的字符串。

  • String s = “xyz”; 会先去字符串常量池中检查是否存在了,如果存在则直接使用,如果没有则会在常量池中创建 “xyz” 对象。
  • String s = new String(“xyz”); 包含上面的操作,另外还会在堆中创建一个内容与“xyz”相同的对象实例。
  • String.intern()方法是一种手动将字符串加入常量池中的native方法。

== 和 equals 区别

  • == :运算符,用于比较基础类型变量和引用类型变量。对于基础类型的变量,比较的是变量保存的值是否相等,类型不一定要相同。对于引用类型变量,比较的是两个对象的地址是否相等。

  • equals:Object 中定义的方法,通常用于比较两个对象的值是否相等。equals 在 Object 方法中其实等同于 == ,但在实际的使用中,equals 通常被重写用于比较两个对象的值是否相等。

在Integer中引入了IntegerCache来缓存一定范围的值,默认范围:-128~127. 故在这个范围内,== 比较的是变量保存的值大小。超出这个范围之后比较的是两个对象的地址是否相等。

hashCode 和 equals

两个对象相等,也即a.equals(b),a.hashCode() = b.hashCode();但反之不成立。

hashCode 是一种哈希散列值,一个对象的hash值,通常采用对象的地址做哈希散列。

抽象类和接口

  • 抽象类:是自下而上的抽象过程,抽象类提供了通用的实现,也提供抽象方法。一个类只能继承一个抽象类。
  • 接口:是自上而下的抽象过程,所有的方法都是抽象方法。一个类可以实现多个接口。

反射

  • 反射:在运行状态中,对于任意一个类都能够知道这个类所有的属性和方法;并且对于任意一个对象,都能够调用它的任意一个方法;这种动态获取信息以及动态调用对象方法的功能称为反射机制
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值