万事万物皆对象

系列文章目录

第一章 万事万物皆对象
第二章 java构造器
第三章 java访问权限
第四章 java初始化
第五章 java继承
第六章 java重载与重写
第七章 java接口和抽象类
第八章 java数组
第九章 java内部类
第十章 java时间操作
第十一章 final关键字
第十二章 java字符串
第十三章 java异常
第十四章 java泛型
第十五章 java IO操作
第十六章 java NIO操作
第十七章 java zip压缩
第十八章 java反射
第十九章 java反射之Type接口
第二十章 java8流式操作
第二十一章 java8函数式编程


文章目录

  • 万事万物皆对象
    • 基本数据类型
      • 包装类
    • 位运算
    • 数据存储
    • 创建类
    • 多态


原文链接 https://zhhll.icu/2020/java基础/面向对象/1.java基础之对象/

面向对象编程的三个特性:封装、继承、多态

万事万物皆对象

所有编程语言都会操作内存中的元素,java通过对象的引用来操作对象
创建一个String引用,代码示例:

String s;

上面的代码只是创建了一个String对象的引用,变量s没有进行初始化,并没有指向任何对象。java中使用new来创建对象,代码示例:

String s = new String("abc");

基本数据类型

boolean、char、byte、short、int、long、float、double这些都是基本数据类型,基本数据类型不需要使用new关键字来创建对象,直接存储值,存储在栈内存内。java直接确定了每种基本类型的内存占用大小。

基本类型 大小 范围
boolean
char 16bits 2字节 0~2^16 -1
byte 8bits 1字节 -27~27-1
short 16bits 2字节 -215~215-1
int 32bits 4字节 -231~231-1
long 64bits 8字节 -263~263-1
float 32bits 4字节 -231~231-1
double 64bits 8字节 -263~263-1

包装类

有时候需要将int这样的基本数据类型转换为对象,而每个基本数据类型都有一个与之对应的类,这些类被称为包装类

位运算

位运算符包含有

按位或 | a|b,表示两个数据对应位都为0,则结果该位为0,否则为1
按位与 & a&b,表示两个数据对应位都为1,则结果该位为1,否则为0
按位非 ~ ~a,表示若a的对应位为0,则结果该位为1,否则为0
按位异或 ^ a^b,表示a,b两个数据对应位相同,则结果该位为0,否则为1(如果 a^b的结果为c,那么 c^b的结果就是a,可以使用异或来进行变量值互换操作 )

数据存储

内存分配

  • 寄存器 位于CPU内部,最快的存储区域
  • 栈内存 存在于RAM(随机访问存储器)内存区域内,可通过栈指针获得处理器的直接支持。栈指针下移分配内存,上移释放内存,速度仅次于寄存器。创建程序时,java系统必须准确地知道栈内保存的所有项的生命周期。对象引用存储在栈内存中,但对象保存在堆内存中。占中存储方法帧和局部变量。栈比堆小,也不会在多个线程之间共享,而堆被整个JVM的所有线程共享
  • 堆内存 也存在RAM(随机访问存储器),所有java对象都存在其中。与栈内存不同,编译器不需要知道对象必须在堆内存上停留多长时间。创建一个对象时,只需new关键字实例化对象,执行代码时,会自动在堆中进行内存分配。代价是:分配和清理堆内存要比栈内存需要更多的时间。
  • 常量存储 常量值直接放在程序代码中,因为他们永远不会改变
  • 非RAM存储 数据完全存在于程序之外,在程序未运行以及脱离程序控制后依然存在
    两个示例:
    • 序列化对象:对象被转换为字节流,通常被发送到另一台机器
    • 持久化对象:对象被放置在磁盘上,即使程序终止,数据依然存在。这些存储的方式是将对象转存于另一个介质中,并在需要时恢复成常规的、基于RAM的对象。Java为轻量级持久化提供了支持。

创建类

java程序中的基本单位是类,类的两个基本成员时变量和方法

使用class关键字来描述一种新的对象。在class关键字的后面紧跟类的名称。

class MyClass {

}

上例中,引入了一个新的类型,我们可以通过new关键字来创建一个这种类型的对象,创建对象的过程称为类的实例化

MyClass myClass = new MyClass();

在方法中可以存在两种元素:方法和字段

多态

实现多态的机制是父类或接口定义的引用变量可以指向子类或具体实现类的实例变量,而程序调用的方法是在运行期才动态绑定的

多态主要分为引用多态和方法多态

  • 引用多态:父类引用指向子类对象,也可以指向本类对象

  • 方法多态:创建本类对象时,方法调用为本类方法;创建子类对象时,方法调用为子类重写的方法或者子类继承的方法

多态的必要条件:继承,重写

你可能感兴趣的:(java基础,java)