美文网首页
javaSE总结(一) 2018.08.12

javaSE总结(一) 2018.08.12

作者: 迷人的酋长 | 来源:发表于2018-08-12 10:06 被阅读0次

1. 跨平台原理

平台:指的是操作系统(Windows,Linux,Mac)

跨平台:Java程序可以在任意操作系统上运行,一次编写到处运行

原理:实现跨平台需要依赖Java的虚拟机JVM (Java Virtual Machine)

2. JVM JRE JDK

A:什么是JVM
       JVM是java虚拟机(JVM Java Virtual Machine),java程序需要运行在虚拟机上,不同平台有自己的虚拟机,因此java语言可以跨平台
B:什么是JRE
       包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。
        JRE:JVM+类库。
C:什么是JDK
       JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了JRE。所以安装了JDK,就不用在单独安装JRE了。
       其中的开发工具:编译工具(javac.exe) 打包工具(jar.exe)等
       JDK:JRE+JAVA的开发工具。
D:为什么JDK中包含一个JRE呢?
       开发完的程序,需要运行一下看看效果。
E:JDK,JRE,JVM的作用和关系
       JDK包含JRE 和开发工具包
       JRE 包含 核心类库和JVM


图片1.png 图片2.png 图片3.png 微信图片_20180812092453.png 微信图片_20180812092501.png

面向对象

1.面向过程思想与面向对象思想

A:什么是面向过程
面向过程,其实就是面向着具体的每一个步骤和过程,把每一个步骤和过程完成,然后由这些功能方法相互调用,完成需求。

B:什么是面向对象
面向对象思想就是不断的创建对象,使用对象,指挥对象做事情。(如果有对象,直接用对象,对我们直接提供服务)

面向对象思想:
面向对象是基于面向过程的一种编程思想。

    面向过程:强调的是每一个功能的步骤
    面向对象:强调的是对象,然后由对象去调用功能

面向对象的思想特点:
A:是一种符合我们思考习惯的思想
B:可以将复杂的事情简单化
C:让我们从执行者变成了指挥者

2.一个对象的内存图图解

图片12.png

两个对象的内存图(共用方法区)图解


图片13.png

两个对象的内存图(两个引用指向同一个堆内存)图解


图片14.png

3.成员变量和局部变量区别

成员变量和局部变量的区别:

A:在类中的位置不同
        成员变量:在类中,方法外
        局部变量:在方法中或者方法声明上(形式参数)
B:在内存中的位置不同
        成员变量:在堆内存
        局部变量:在栈内存
C:生命周期不同
        成员变量:随着对象的创建而存在,随着对象的消失而消失
        局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
D:初始化值不同
        成员变量:有默认值
        局部变量:没有默认值,必须先定义,赋值,最后使用

4.封装的概述和好处

A:封装概述
        是面向对象三大特征之一
        是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作和修改。就像刚才说的年龄。
B:封装原则:
        将不需要对外提供的内容都隐藏起来。
        把属性隐藏,提供公共方法对其访问。
        成员变量private,提供对应的getXxx()/setXxx()方法
C:好处:
        通过方法来控制成员变量的操作,提高了代码的安全性
        把代码用方法进行封装,提高了代码的复用性

5.this关键字由来和使用

A:this:代表所在类的对象引用
        方法被哪个对象调用,this就代表那个对象
B:什么时候使用this呢
        局部变量和成员变量重名

6.构造方法:用于给对象的数据进行初始化

格式:
    方法名和类名相同
    没有返回值类型,连void都不能写
    没有具体的返回值
构造方法的注意事项:
    A:如果我们没有给出构造方法,系统将给出一个默认的无参数构造方法供我们使用
    B:如果我们给出了构造方法,系统将不再提供默认的构造方法供我们使用。
        这个时候,我们如果还想使用无参数构造方法,就必须自己提供。
        我们推荐:自己给出无参数构造方法。
    C:构造方法也是可以重载的。
给成员变量赋值的方式:
    A:通过setXxx()
    B:通过构造方法

7.继承

继承的格式:
    public class 子类名 extends 父类名 {} 
继承的好处:
    A:提高了代码的复用性
    B:提高了代码的维护性
    C:让类与类之间产生了关系,是多态的前提
继承的弊端:
    让类与类之间产生了关系,也就让类的耦合性增强了。

    开发原则:高内聚,低耦合。
        内聚:就是自己完成某件事情的能力
        耦合:类与类的关系
Java中只支持单继承,不支持多继承

–一个类只能有一个父类,不可以有多个父类
–public class Son extends Father{} // ok
–public class Son extends Father,GrandFather // Error

Java中类支持多层继承(继承体系)

–Public class GrandFather{}
–Public class Father extends GrandFather{}
–Public class Son extends Father{}

Java继承中成员变量的特点:
    A:成员变量名称不一样,使用的时候非常简单。
    B:成员变量名称一样的情况
        在子类方法中访问变量:
            a:在方法的局部范围找,如果有就使用
            b:在子类的成员范围找,如果有就使用
            c:在父类的成员范围找,如果有就使用
            d:如果还找不到,就报错
        就近原则。

8.super关键字

super和this的用法很像:
    this:代表本类对象的引用
    super:代表父类的存储空间(可以理解为代表父类对象的引用)
用法:
    访问成员变量:
        this.成员变量
        super.成员变量
    访问构造方法:
        this(...)
        super(...)
    访问成员方法:
        this.成员方法()
        super.成员方法()

9.Java继承中构造方法的访问特点:

    A:子类构造方法执行前都会先执行父类无参构造方法
    B:为什么呢?
        因为子类继承父类,会继承父类的非私有成员。
        而子类在初始化的时候,可能会使用父类的数据,如果父类数据没有先初始化,
        子类就不能使用这些数据,所以,在子类初始化之前,一定要先完成父类数据的初始化。

    注意:在子类的构造方法中,默认第一行有一条语句:super()
问题:假如父类中没有无参构造方法,怎么办呢?
    A:在父类中添加一个无参构造方法。
    B:可以通过super去访问父类的带参构造方法。
    建议使用第一种解决方案,其实就是要求我们写代码的时候,每次都手动的给出无参构造方法。
    2.4方法重写的概述和使用

10.方法重写的概述

方法重写:
    子类中出现了和父类中一摸一样的方法声明
方法重写的应用
    当子类需要父类的功能,而功能主体子类又有自己的特有内容的时候,就考虑使用方法重写,
    这样即保证了父类的功能,还添加了子类的特有内容。
方法重写的注意事项

-@Override
-表明该方法的重写父类的方法
·方法重写的注意事项
-父类中私有方法不能被重写
-子类重写父类方法时,访问权限不能更低
-子类重写父类方法时,建议访问权限一摸一样

11.多态

多态:同一个对象,在不同时刻体现出来的不同状态。
多态中成员的访问特点:
    A:成员变量
        编译看左边,执行看左边。
    B:成员方法
        编译看左边,执行看右边。

    为什么成员变量和成员方法的访问不一样呢?
        因为成员方法有重写,而变量没有。
多态的好处:
    提高了程序的扩展性
    具体体现:定义方法的时候,使用父类型作为参数,将来在使用的时候,使用具体的子类型参与操作。
多态的弊端:
    不能使用子类的特有功能
多态中的转型问题
    向上转型
            从子到父
            父类引用指向子类对象
    向下转型
            从父到子
            父类引用转为子类对象
多态中的内存图
5.png

相关文章

  • javaSE总结(一) 2018.08.12

    1. 跨平台原理 平台:指的是操作系统(Windows,Linux,Mac) 跨平台:Java程序可以在任意操作系...

  • JavaSE总结

  • 考研复习第158/159天

    2018.08.11 2018.08.12

  • javaSE总结02

    学习周期 2018.9.20-9.28 学习概括 学习了java中的数组和对象数组 学习了eclipse的断点调试...

  • javaSe基础总结

    、6一、基本知识 1.JDK和JRE的区别 答:JDK是java语言开发工具包,包含JRE和开发工具(javac....

  • Javase阶段总结

    1.想想对自己当前的状态满意吗? 状态总体还可以,就是感觉有点慢,java阶段走的时间比我自己预期的要慢的多,原本...

  • javaSE基础总结

    /** 变量与运算符 标识符:就是一个名称 例如类名:VariableDemo 特点(规则):首字母大写 关键字...

  • 2018.08.12

    今天早晨凌晨5点,尽管白天仍然热到37度以上,但是傍晚和凌晨的温度已经下降了,26度左右,感觉非常舒适啊!近期工作...

  • 2018.08.12

    1.感恩早上起来做了个冥想才开门 2.感恩中午妈妈做了好好吃的面条 3.感恩老乌呆的态度让我抓狂,让我明白谁都靠不...

  • 2018.08.12

    姓名:徐芳芳 公司:南京凯弘进出口贸易有限公司 349期努力二组【日精进打卡第202天】 【知~学习】 《六项精进...

网友评论

      本文标题:javaSE总结(一) 2018.08.12

      本文链接:https://www.haomeiwen.com/subject/fnzjbftx.html