一.关于变量

变量可以看成可操作的存储空间,有如下三种:

局部变量:定义在方法或语句块内部,必须先声明初始化才能使用;生命周期从声明位置开始到方法或语句块执行完毕。

成员变量(实例变量):定义在方法外部,类的内部,会自动被初始化;从属对象,生命周期伴随对象始终。

静态变量:使用static定义,从属类;生命周期伴随类始终,从类加载到卸载。

二.内存分析

java虚拟机的内存可分为三个区域:栈stack,堆heap,方法区method area。

1.栈的特点:

  • 栈描述的是方法执行的内存模型;每个方法被调用都会创建一个栈帧(存储局部变量,操作数,方法出口等)
  • JVM为每个线程创建一个栈,用于存放该线程执行方法的信息(实际参数,局部变量等)
  • 栈属于线程私有,不能实现线程间的共享
  • 栈的存储特性是‘先进后出,后进先出‘
  • 栈是由系统自动分配,速度快,栈是一个连续的内存空间

2.堆的特点:

  • 堆用于存储创建好的对象和数组(数组也是对象)
  • JVM只有一个堆,被所有线程共享
  • 堆是一个不连续的内存空间,分配灵活,速度慢

3.方法区(静态区)的特点:

  • JVM只有一个方法区,被所有线程共享
  • 方法区实际上也是堆,知识用于存储类,常量相关信息
  • 用来存放程序中永远不变或唯一的内容(类信息【class对象】,静态变量,字符串常量)

三.关于构造器(也叫构造方法,用于对象初始化)

  • 通过new关键字调用
  • 构造器虽然有返回值,但不能定义返回值类型(返回值类型是其本类),不能在构造器里使用return返回某个值
  • 如果没有定义构造器,编译器会自动定义一个无参构造函数;如果已定义,则编译器不会自动添加构造函数
  • 构造器的方法名必须和类名一致

四.static关键字

  • 在类中,用static声明的成员变量为静态成员变量,也称类变量;类变量的生命周期和类相同,在整个应用程序执行期间都有效
  • static修饰的成员变量和方法,从属于类,普通变量和方法从属于对象
  • 非静态方法可以调用静态方法,静态方法不能调用非静态方法(可联系内存分析知识理解)

五.重写和重载

重写和重载的关键都在于参数列表,这里简单概括一下:

  • 重写:通俗说就是对一个方法的不同实现,方法名和形参列表(参数类型,个数,顺序)相同;返回值类型和声明异常类型,子类要小于等于其父类(也就说子类重写可以返回的是父类的派生类);访问权限子类要大于等于其父类(比如父类被声明public,那子类重写就不能声明为protected
  • 重载:方法名相同,参数列表不同(参数类型,个数),返回值可以不同

六.==和equals

  • ==代表的是比较双方是否相同,如果是基本类型则表示值相等;如果是引用类型则表示地址相等,即是同一个对象。
  • Object类中有定义:public boolean equals(Object obj)方法,提供定义“对象内容是否相等的逻辑”

七.访问控制符(封装)

  • private:表示私有,只有自己类能访问
  • default:表示没有修饰符修饰,只有同一个包的类能访问
  • protected:表示可以被同一个包的类以及其他包中的子类访问
  • public:表示可以被该项目所有包中的所有类访问

八.多态

多态指同一个方法调用,由于对象不同可能会有不同的行为。

  • 多态是方法的多态,不是属性的多态(多态与属性无关)
  • 多态的存在要有3个必要条件:继承,方法重写,父类引用指向子类对象
  • 父类引用指向子类对象后,用该父类引用调用子类重写的方法,此时多态就出现了

最新文章

  1. 《一个操作系统的实现》学习笔记(一) bochs源码安装及配置
  2. 【WPF系列】基础学习-XAML
  3. Linux 下根据进程名kill进程
  4. POJ 2524 Ubiquitous Religions
  5. Java中的接口与抽象类
  6. 【概率】poj 2096:Collecting Bugs
  7. sql - 选出指定范围的行
  8. C# 绘制窗体客户非客户区要用WM_PAINT和WM_NCPAINT
  9. 转:Google论文之二----Google文件系统(GFS)翻译学习
  10. 使用JMeter做压力测试
  11. mysql GROUP_CONCAT获取分组的前几名
  12. Redisson 分布式锁
  13. [HNOI2018]寻宝游戏
  14. python语言程序设计5
  15. 10-SQL Server 2008 R2安装步骤
  16. wxml
  17. 3:JavaScript中的各类语句
  18. MySQL事务之-2
  19. 对首师大研究生院的UI分析
  20. bye 2013 hello 2014

热门文章

  1. prometheus配置pushgateway功能测试
  2. Chisel3 - Tutorial - ShiftRegister
  3. Java实现 蓝桥杯 算法提高 天天向上(DP)
  4. Java实现 LeetCode 912 排序数组(用数组去代替排序O(N))
  5. Java实现 LeetCode 520 检测大写字母
  6. Java实现 蓝桥杯VIP 算法提高 3-1课后习题2
  7. Java实现 蓝桥杯VIP 算法提高 特殊的质数肋骨
  8. java中Timer类的详细介绍(详解)
  9. Java实现 洛谷 P1914 小书童——密码
  10. Linux 用户和用户组管理-用户信息文件