前言:自从出生,每个人都是一个学习者或探索者。永远保持一颗谦逊的心态,遵循一定的方法和规范,去学习和实践,永远记得走走停停,多回头看看自己走过的路,温故而知新,也能更好地指导未来的路怎么走(同样,本篇文章也会根据知识的完善和技能的提升而不断更新)。

如需更多Java、Python、大数据体系知识,请移步个人技术文档:https://anxiangchegu.github.io/technical-doc

目录

一、Java简介

一、Java简介

  1、Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论允许程序员以优雅的思维方式(思想很重要)进行复杂的编程。

  2、Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、动态性特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。

  3、Java三大体系:

    Java SE(J2SE)

    Java EE

    Java Me

二、Java的主要特性

  1、java语言是简单的:java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用。另一方面,Java丢弃了C++中很少使用的、很难理解的、令人迷惑的那些特性,如操作符承载、多继承、自动的强制类型转换,尤其是,Java语言不使用指针,而是引用。并提供了自动的废料收集,使得程序员不必为内存管理而担忧。

  2、Java语言是动态的:Java语言的设计目标之一就是适应于动态变化的环境,.Java程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入动态的类,这也有利于软件的升级。另外,Java中的类有一个运行时刻的表示,能进行类型时候的检查。

  3、Java语言是面向对象的:Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字implements),Java语言全面支持多动态绑定,而C++语言只对虚函数使用动态绑定。Java是一个纯面面对象设计的程序语言!

  4、Jva语言是多线程的:在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建,通常有两种方法来创建线程:第一、使用型构为Thread(Runable)构造子将一个实现了Runnable接口的对象包装成了一个线程。第二、从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。注意Thread类已经实现了runnable接口,因此任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。线程的活动由一组方法来控制,Java语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized)。

  5、Java语言是分布式的:Java语言支持Internet的应用开发,在基本的Java应用编程接口中有一个网络应用编程接口(Java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。

  6、Java语言是高性能的:与那些解释型的高级脚本语言相比,Java的确是高性能的。事实上,Java的运行速度随着JIT(Just-In-Time)编译器的技术发展越来越接近C++。

  7、Java语言是健壮性的:Java的强类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择,Java的安全检查机制使得Java更具健壮性。

  8、Java语言是解释型的:Java程序在Java平台上被编译为字节码格式,然后可以在实现这个Java平台的任何系统中运行。在运行时,Java平台中的Java解释器对这些字节码文件进行解释执行,执行过程中需要的类在连接阶段被载入到环境中运行。

  9、Java语言是安全的:Java通常被用在网络环境中,为此Java提供了安全机制,以防恶意代码的攻击。除了Java具有的许多安全特性以外,Java对通过网络环境下载的类具有一个安全防范机制(类ClassLoder),如分配不同的名字空间,以防替代本地的同名类、字节码检查,并提供安全管理机制(SecurityManager),让Java应用设置安全岗兵。

  10、Java语言是可移植的:这种移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度。Java系统本身也具有很强的可移植性,Java编译器是用Java实现 的,Java的运行环境是用ANSI C实现的。

  11、Java语言是体系结构中立的:Java程序(后缀名为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀名为class文件),然后可以在实现这个Java平台的任何系统中运行,这种途径适合于异构的网络环境和软件的分发。

三、Java三大特性

  封装、继承和多态。

  1、封装:在Java中,封装是由类(Class)实现的。把现实生活中某一实体抽象成类,且该类包括属性(Type)、方法(Method),如把“学生”抽象成类,“学生”类有对应的属性name、age和方法study。(对于Java中的类,每个类中都可以有属性和方法,类属性又叫做成员变量)

 public class Pserson{
private String name; // 属性
private int age; // 属性
public void eat(){ // 方法
}
}

  2、继承:继承描述的是一种类与类的关系,比如学生是属于人的范畴,Student类(子类)继承Person类(父类),Student类就被称为是Person类的子类(或派生类),Person类就是Student类父类(或基类)。

 public class Pserson{
private String name; // 属性
private int age; // 属性
public void eat(){ // 方法
}
} // Student类继承Person类
public class Student extedns Pserson{ }

  3、多态:多态是同一个行为具有多个不同表现形式或形态的能力。多态有引用多态(父类引用指向子类对象)和方法多态(子类重写的方法或继承自父类的方法)两种,多态可以消除类型之间的耦合关系。

    (1)多态存在的三个必要条件:继承、重写、父类引用指向子类对象。

    (2)多态的实现方式:重写、接口、抽象类和抽象方法。

四、Java的基础语法

  1、基本概念

    (1)对象:是类的一个实例,有状态和行为。如:学生是一个对象,他的状态有:身高、体重、肤色、年龄等;行为有:吃饭、学习、玩耍和睡觉等。

    (2)类:类是一个模板,它描述一类对象的行为和状态。

    (3)方法:方法就是行为,一个类可以有很多方法,逻辑运算、数据运算以及所有动作都是在方法中完成的。

    (4)实例变量:每一个对象都有特定的实例变量,对象的状态由这些实例变量的值决定。

  2、基本语法

    (1)大小写敏感:在Java语言环境里,是对大小写敏感的。标识符Hello和hello是不同的表示。

    (2)类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,则后面每个单词的首字母大写。

    (3)源文件名:源文件名必须和类文件名相同,当保存文件的时候,应该使用类名和文件名保存(切记Java是大小写敏感的语言),文件名的后缀是.java。

    (4)主方法入口:所有的Java程序由public static void main (String [ ]args)方法开始执行。

    强调:为了码出高效,码出质量——推荐阅读学习《阿里巴巴Java开发手册(终极版)》。

  3、标识符

  Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。

  注意:

    (1)所有的标识符都应该以字母(A~Z或a~z),美元符($)、或者下划线(_)开始;

    (2)首字符之后可以是字母(A~Z或a~z),美元符($)、或者下划线(_)的任何字符组合;

    (3)关键字不能用做标识符;

    (4)标识符是大小写敏感的。

  4、修饰符

    (1)访问控制修饰符:default,public,protected,private;

    (2)非访问控制修饰符:final,abstract,strictfp。

  5、变量

    (1)局部变量;

    (2)类变量(静态变量);

    (3)成员变量(非静态变量)。

  6、接口

    接口就是对象之间相互通信的协议。接口只定义派生要用的方法,但是方法的具体实现完全取决于派生类。

  7、枚举

    枚举限制变量只能是预先设定好的值。枚举可以单独声明或者声明在类里面,方法、变量和构造函数也可以在枚举中定义。

  8、数组

    数组是存储在堆上的对象,可以保存多个同类型变量。

五、面向对象

    面向对象编程的三条主线:

      (1)类及类的构成成分属性、方法、构造器、代码块、内部类;

      (2)面向对象的特征:封装性、继承性、多态性(抽象性);

      (3)其它的关键字:this\super\package\import\static\final\abstract\interface

  1、基本定义

    (1)类:对事物、逻辑、算法或概念的抽象。描述一类对象的行为和状态。

    (2)对象(实例):对象是类的一个实例(对象不是找个男或女朋友),有状态和行为。

    (3)引用:Java中一切都”看作“对象,但操纵标识符实际是指向一个对象的“引用”(reference)。

    (4)构造方法:新建对象时,执行的一个特殊方法。在创建一个对象的时候,至少要调用一个构造方法,构造方法的名称必须与类同名,一个类可以有多个构造方法。

    (6)this:这个关键字必须放在非静态方法里面,this关键字代表自身,在程序中主要有三个用途:使用this关键字引用成员变量;使用this关键字在自身构造方法内部引用其它构造方法;this关键字代表自身类的对象。

    (7)方法重载(overload):就是方法名相同,方法参数的个数和类型不同函数。Java的重载是发生在本类的,前提条件是本类中存在多个同名不同参的方法。

    (8)抽象类:抽象方法必须用 abstract 关键字进行修饰,如果一个类含有抽象方法,则称这个类为抽象类,抽象类必须用abstract关键字修饰,抽象类中含有无具体实现的方法,所以不能用抽象类创建对象。

 public abstract class ClassName {
abstract void fun(); // 抽象方法
}

    (9)接口(Interface):极端的抽象类,在结构设计中用于解耦合。接口中的变量会被隐式地指定为public static final变量(并且只能是public static final变量,用private修饰会报编译错误),而方法会被隐式地指定为public abstract方法且只能是public abstract方法(用其他关键字,比如private、protected、static、 final等修饰会报编译错误),并且接口中所有的方法不能有具体的实现,也就是说,接口中的方法必须都是抽象方法。从这里可以隐约看出接口和抽象类的区别,接口是一种极度抽象的类型,它比抽象类更加“抽象”,并且一般情况下不在接口中定义变量。

  2、内部类

    每个内部类都能独立地继承一个(接口的)实现,接口只是解决了部分问题,而内部类使得多重继承的解决方案变得更加完整。内部类可以用多个实例,每个实例都有自己的状态信息,并且与其它外围对象的信息相互独立。(详细参考 :http://cmsblogs.com/?p=63)

  (1)非静态内部类:非静态内部类依赖于外部类对象存在,在非静态内部类中,不能定义非静态成员;

  (2)静态内部类:使用static 修饰的成员内部类,称之为静态内部类,静态内部类只能访问外部类的静态成员;

  (3)局部内部类:声明在方法内部的类,局部类型只能在局部使用,但它的实例可以转为父类型传递出去。

      注意:不可以修饰任何访问权限修饰符;不可以直接访问局部变量(方法的参数等效于局部变量);如果一定需要访问,则需要使用final对局部变量进行修饰。

  (4)成员内部类:在类(外部类)的内部,且与外部类的成员是“同一级别”的。

  (5)匿名内部类:直接创建已知类的子类对象,则该对象的类型就是匿名内部类。


技术文档体系已经独立维护

如需更多Java、Python、大数据体系知识,请移步个人技术文档:https://anxiangchegu.github.io/technical-doc

Java知识体系框架的更多相关文章

  1. Java知识体系

    Java知识体系 java知识结构.jpg web框架.jpg 计算机课程体系.png 2016-08-19_090929.png 流行的哈希算法生存状况.jpg "JAVA之父" ...

  2. [转帖]【JVM 知识体系框架总结】

    [JVM 知识体系框架总结] https://www.cnblogs.com/mousycoder/p/11612448.html JVM 内存分布 线程共享数据区:方法区->类信息,静态变量堆 ...

  3. Java知识体系纲要

    最近一段时间,把Java主要涉及到的大概念都大致学习了一遍,为了让自己能够更好地形成对Java知识体系的整体把握,先把学过的知识点添加到自己画的思维导图上. 整个Java知识体系的划分,我自己主要将它 ...

  4. Java知识体系思维导图

    Java知识体系,为方便预览,将思维导图上传至印象笔记,博客园直接上传图片受限于图片大小,暂时接触这么多,待以后丰富 https://app.yinxiang.com/shard/s24/nl/272 ...

  5. 【JVM 知识体系框架总结】

    JVM 内存分布 线程共享数据区: 方法区->类信息,静态变量 堆->数组对象 线程隔离区 虚拟机栈-> 方法 本地方法栈->本地方法库 native 堆.程序计数器 JVM ...

  6. java知识体系(自我学习中)

    java自我学习知识体系

  7. java 知识体系

    java分成J2ME(移动应用开发),J2SE(桌面应用开发),J2EE(Web企业级应用),所以java并不是单机版的,只是面向对象语言.建议如果学习java体系的话可以这样去学习: *第一阶段:J ...

  8. Python知识体系框架 思维导图

    技术文档已经独立整理! 请移步个人技术文档:https://anxiangchegu.github.io/technical-doc 如需更多Java.Python.大数据体系知识,请稳移步个人技术文 ...

  9. 【转】Java开发必须要知道的知识体系

    Java Java是一门超高人气编程语言,拥有跨平台.面向对象.泛型编程等特性.在TIOBE编程语言排行榜中,连续夺得第一宝座,而且国内各大知名互联网公司,后端开发首选语言:非Java莫属.今天只是梳 ...

随机推荐

  1. H3C OSPF协议工作过程概述

  2. echarts实现多条可拖动节点的折现图

    这篇博文主要是利用echarts实现两条以及多条可拖动节点的曲线,demo脱胎于官方demo,在官方demo的基础上添加了另一条曲线.因为之前写过一篇在vue中使用echarts实现可拖动节点的折线图 ...

  3. P1053 第K小的取法

    题目描述 给定一个含n个数的数组.现在从中取出一些数.并把这些数相加得出一个和,如果有多种取法的和相同,则视为多种取法.求所有取法对应的和中第K小的和. 输入格式 第一行包括两个正整数n(n<= ...

  4. P1036 最大公约数

    题目描述 给你两个正整数A和B,求它们的最大公约数. 输入格式 两个正整数 \(A,B(1 \le A,B \le 10^9)\) . 输出格式 一个整数,表示A和B的最大公约数. 样例输入 6 8 ...

  5. 2018-9-3-C#-const-和-readonly-有什么区别

    title author date CreateTime categories C# const 和 readonly 有什么区别 lindexi 2018-9-3 16:52:7 +0800 201 ...

  6. C# 命令行如何静默调用 del 删除文件

    如果在 C# 命令行调用 del 删除文件,很多时候会提示是否需要删除,本文告诉大家如何调用命令行的时候静默删除 在C# 命令行 调用 del 删除文件的时候,会提示是否删除,通过在命令行加上 \Q ...

  7. 【30.43%】【codeforces 746C】Tram

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  8. Linux 内核设备驱动

    设备模型跟踪所有对系统已知的驱动. 这个跟踪的主要原因是使驱动核心能匹配驱动和新 设备. 一旦驱动在系统中是已知的对象, 但是, 许多其他的事情变得有可能. 设备驱动可 输出和任何特定设备无关的信息和 ...

  9. Linux 内核设备注册

    通常的注册和注销函数在: int device_register(struct device *dev); void device_unregister(struct device *dev); 我们 ...

  10. (摘录)ISO C++ Lambda表达式

    ISO C++ 11 标准的一大亮点是引入Lambda表达式.基本语法如下: [捕获列表](形参列表) mutable ->返回值类型 复合语句 其中除了"[]"(其中捕获列 ...