前言:自从出生,每一个人都是一个学习者或探索者。永远保持一颗谦逊的心态,遵循必定的方法和规范,去学习和实践,永远记得走走停停,多回头看看本身走过的路,温故而知新,也能更好地指导将来的路怎么走(一样,本篇文章也会根据知识的完善和技能的提高而不断更新)。java
如需更多Java、Python、大数据体系知识,请移步我的技术文档:https://anxiangchegu.github.io/technical-docgit
1、Java简介程序员
一、Java是一门面向对象的编程语言,不只吸取了C++语言的各类优势,还摒弃了C++里难以理解的多继承、指针等概念,所以Java语言具备功能强大和简单易用两个特征。Java语言做为静态面向对象编程语言的表明,极好地实现了面向对象理论容许程序员以优雅的思惟方式(思想很重要)进行复杂的编程。github
二、Java具备简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、动态性特色。Java能够编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。算法
三、Java三大致系:编程
Java SE(J2SE)数组
Java EE安全
Java Me网络
一、java语言是简单的:java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用。另外一方面,Java丢弃了C++中不多使用的、很难理解的、使人迷惑的那些特性,如操做符承载、多继承、自动的强制类型转换,尤为是,Java语言不使用指针,而是引用。并提供了自动的废料收集,使得程序员没必要为内存管理而担心。多线程
二、Java语言是动态的:Java语言的设计目标之一就是适应于动态变化的环境,.Java程序须要的类可以动态地被载入到运行环境,也能够经过网络来载入动态的类,这也有利于软件的升级。另外,Java中的类有一个运行时刻的表示,能进行类型时候的检查。
三、Java语言是面向对象的:Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字implements),Java语言全面支持多动态绑定,而C++语言只对虚函数使用动态绑定。Java是一个纯面面对象设计的程序语言!
四、Jva语言是多线程的:在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来建立,一般有两种方法来建立线程:第1、使用型构为Thread(Runable)构造子将一个实现了Runnable接口的对象包装成了一个线程。第2、从Thread类派生出子类并重写run方法,使用该子类建立的对象即为线程。注意Thread类已经实现了runnable接口,所以任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。线程的活动由一组方法来控制,Java语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized)。
五、Java语言是分布式的:Java语言支持Internet的应用开发,在基本的Java应用编程接口中有一个网络应用编程接口(Java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
六、Java语言是高性能的:与那些解释型的高级脚本语言相比,Java的确是高性能的。事实上,Java的运行速度随着JIT(Just-In-Time)编译器的技术发展愈来愈接近C++。
七、Java语言是健壮性的:Java的强类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择,Java的安全检查机制使得Java更具健壮性。
八、Java语言是解释型的:Java程序在Java平台上被编译为字节码格式,而后能够在实现这个Java平台的任何系统中运行。在运行时,Java平台中的Java解释器对这些字节码文件进行解释执行,执行过程当中须要的类在链接阶段被载入到环境中运行。
九、Java语言是安全的:Java一般被用在网络环境中,为此Java提供了安全机制,以防恶意代码的攻击。除了Java具备的许多安全特性之外,Java对经过网络环境下载的类具备一个安全防范机制(类ClassLoder),如分配不一样的名字空间,以防替代本地的同名类、字节码检查,并提供安全管理机制(SecurityManager),让Java应用设置安全岗兵。
十、Java语言是可移植的:这种移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度。Java系统自己也具备很强的可移植性,Java编译器是用Java实现 的,Java的运行环境是用ANSI C实现的。
十一、Java语言是体系结构中立的:Java程序(后缀名为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀名为class文件),而后能够在实现这个Java平台的任何系统中运行,这种途径适合于异构的网络环境和软件的分发。
封装、继承和多态。
一、封装:在Java中,封装是由类(Class)实现的。把现实生活中某一实体抽象成类,且该类包括属性(Type)、方法(Method),如把“学生”抽象成类,“学生”类有对应的属性name、age和方法study。(对于Java中的类,每一个类中均可以有属性和方法,类属性又叫作成员变量)
1 public class Pserson{ 2 private String name; // 属性 3 private int age; // 属性 4 public void eat(){ // 方法 5 } 6 }
二、继承:继承描述的是一种类与类的关系,好比学生是属于人的范畴,Student类(子类)继承Person类(父类),Student类就被称为是Person类的子类(或派生类),Person类就是Student类父类(或基类)。
1 public class Pserson{ 2 private String name; // 属性 3 private int age; // 属性 4 public void eat(){ // 方法 5 } 6 } 7 8 // Student类继承Person类 9 public class Student extedns Pserson{ 10 11 }
三、多态:多态是同一个行为具备多个不一样表现形式或形态的能力。多态有引用多态(父类引用指向子类对象)和方法多态(子类重写的方法或继承自父类的方法)两种,多态能够消除类型之间的耦合关系。
(1)多态存在的三个必要条件:继承、重写、父类引用指向子类对象。
(2)多态的实现方式:重写、接口、抽象类和抽象方法。
(1)对象:是类的一个实例,有状态和行为。如:学生是一个对象,他的状态有:身高、体重、肤色、年龄等;行为有:吃饭、学习、玩耍和睡觉等。
(2)类:类是一个模板,它描述一类对象的行为和状态。
(3)方法:方法就是行为,一个类能够有不少方法,逻辑运算、数据运算以及全部动做都是在方法中完成的。
(4)实例变量:每个对象都有特定的实例变量,对象的状态由这些实例变量的值决定。
(1)大小写敏感:在Java语言环境里,是对大小写敏感的。标识符Hello和hello是不一样的表示。
(2)类名:对于全部的类来讲,类名的首字母应该大写。若是类名由若干单词组成,则后面每一个单词的首字母大写。
(3)源文件名:源文件名必须和类文件名相同,当保存文件的时候,应该使用类名和文件名保存(切记Java是大小写敏感的语言),文件名的后缀是.java。
(4)主方法入口:全部的Java程序由public static void main (String [ ]args)方法开始执行。
强调:为了码出高效,码出质量——推荐阅读学习《阿里巴巴Java开发手册(终极版)》。
Java全部的组成部分都须要名字。类名、变量名以及方法名都被称为标识符。
注意:
(1)全部的标识符都应该以字母(A~Z或a~z),美圆符($)、或者下划线(_)开始;
(2)首字符以后能够是字母(A~Z或a~z),美圆符($)、或者下划线(_)的任何字符组合;
(3)关键字不能用作标识符;
(4)标识符是大小写敏感的。
(1)访问控制修饰符:default,public,protected,private;
(2)非访问控制修饰符:final,abstract,strictfp。
(1)局部变量;
(2)类变量(静态变量);
(3)成员变量(非静态变量)。
接口就是对象之间相互通讯的协议。接口只定义派生要用的方法,可是方法的具体实现彻底取决于派生类。
枚举限制变量只能是预先设定好的值。枚举能够单独声明或者声明在类里面,方法、变量和构造函数也能够在枚举中定义。
数组是存储在堆上的对象,能够保存多个同类型变量。
(1)类及类的构成成分属性、方法、构造器、代码块、内部类;
(2)面向对象的特征:封装性、继承性、多态性(抽象性);
(3)其它的关键字:this\super\package\import\static\final\abstract\interface
(1)类:对事物、逻辑、算法或概念的抽象。描述一类对象的行为和状态。
(2)对象(实例):对象是类的一个实例(对象不是找个男或女友),有状态和行为。
(3)引用:Java中一切都”看做“对象,但操纵标识符实际是指向一个对象的“引用”(reference)。
(4)构造方法:新建对象时,执行的一个特殊方法。在建立一个对象的时候,至少要调用一个构造方法,构造方法的名称必须与类同名,一个类能够有多个构造方法。
(6)this:这个关键字必须放在非静态方法里面,this关键字表明自身,在程序中主要有三个用途:使用this关键字引用成员变量;使用this关键字在自身构造方法内部引用其它构造方法;this关键字表明自身类的对象。
(7)方法重载(overload):就是方法名相同,方法参数的个数和类型不一样函数。Java的重载是发生在本类的,前提条件是本类中存在多个同名不一样参的方法。
(8)抽象类:抽象方法必须用 abstract 关键字进行修饰,若是一个类含有抽象方法,则称这个类为抽象类,抽象类必须用abstract关键字修饰,抽象类中含有无具体实现的方法,因此不能用抽象类建立对象。
1 public abstract class ClassName { 2 abstract void fun(); // 抽象方法 3 }
(9)接口(Interface):极端的抽象类,在结构设计中用于解耦合。接口中的变量会被隐式地指定为public static final变量(而且只能是public static final变量,用private修饰会报编译错误),而方法会被隐式地指定为public abstract方法且只能是public abstract方法(用其余关键字,好比private、protected、static、 final等修饰会报编译错误),而且接口中全部的方法不能有具体的实现,也就是说,接口中的方法必须都是抽象方法。从这里能够隐约看出接口和抽象类的区别,接口是一种极度抽象的类型,它比抽象类更加“抽象”,而且通常状况下不在接口中定义变量。
每一个内部类都能独立地继承一个(接口的)实现,接口只是解决了部分问题,而内部类使得多重继承的解决方案变得更加完整。内部类能够用多个实例,每一个实例都有本身的状态信息,而且与其它外围对象的信息相互独立。(详细参考 :http://cmsblogs.com/?p=63)
(1)非静态内部类:非静态内部类依赖于外部类对象存在,在非静态内部类中,不能定义非静态成员;
(2)静态内部类:使用static 修饰的成员内部类,称之为静态内部类,静态内部类只能访问外部类的静态成员;
(3)局部内部类:声明在方法内部的类,局部类型只能在局部使用,但它的实例能够转为父类型传递出去。
注意:不能够修饰任何访问权限修饰符;不能够直接访问局部变量(方法的参数等效于局部变量);若是必定须要访问,则须要使用final对局部变量进行修饰。
(4)成员内部类:在类(外部类)的内部,且与外部类的成员是“同一级别”的。
(5)匿名内部类:直接建立已知类的子类对象,则该对象的类型就是匿名内部类。
技术文档体系已经独立维护
如需更多Java、Python、大数据体系知识,请移步我的技术文档:https://anxiangchegu.github.io/technical-doc