热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java知识体系简介

一、Java简介1、Java是一门面向对象的编程语言,不仅吸收了C语言的各种优点,还摒弃了C里难以理解的多继承、指针等概念,因此Java语

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAeG1oLXN4aC0xMzE0,size_20,color_FFFFFF,t_70,g_se,x_16一、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中的类,每个类中都可以有属性和方法,类属性又叫做成员变量)

 

 View Code

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

 

 View Code

  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关键字修饰,抽象类中含有无具体实现的方法,所以不能用抽象类创建对象。

 

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等修饰会报编译错误),并且接口中所有的方法不能有具体的实现,也就是说,接口中的方法必须都是抽象方法。从这里可以隐约看出接口和抽象类的区别,接口是一种极度抽象的类型,它比抽象类更加“抽象”,并且一般情况下不在接口中定义变量。

 

  2、内部类

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

 

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

 

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

 

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

 

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


推荐阅读
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文探讨了C语言中指针的应用与价值,指针在C语言中具有灵活性和可变性,通过指针可以操作系统内存和控制外部I/O端口。文章介绍了指针变量和指针的指向变量的含义和用法,以及判断变量数据类型和指向变量或成员变量的类型的方法。还讨论了指针访问数组元素和下标法数组元素的等价关系,以及指针作为函数参数可以改变主调函数变量的值的特点。此外,文章还提到了指针在动态存储分配、链表创建和相关操作中的应用,以及类成员指针与外部变量的区分方法。通过本文的阐述,读者可以更好地理解和应用C语言中的指针。 ... [详细]
  • 从零学Java(10)之方法详解,喷打野你真的没我6!
    本文介绍了从零学Java系列中的第10篇文章,详解了Java中的方法。同时讨论了打野过程中喷打野的影响,以及金色打野刀对经济的增加和线上队友经济的影响。指出喷打野会导致线上经济的消减和影响队伍的团结。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • 本文介绍了在多平台下进行条件编译的必要性,以及具体的实现方法。通过示例代码展示了如何使用条件编译来实现不同平台的功能。最后总结了只要接口相同,不同平台下的编译运行结果也会相同。 ... [详细]
author-avatar
小石头
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有