疯狂Java学习笔记(一)——Java语言概述

本书深入介绍了Java编程的相关方面,全书内容覆盖了Java的基本语法结构、Java的面向对象特征、Java集合框架体系、Java泛型、异常处理、Java GUI编程、JDBC数据库编程、Java注释、Java的IO流体系、Java多线程编程、Java网络通信编程、和Java反射机制

程序是对现实世界的数字化模拟。

“案例驱动”的学习方式:编程实战,知道一个知识点能解决什么问题,才去学习这个知识点。


第一章Java语言概述与开发环境

Java语言是一门纯粹的面向对象编程语言,吸收了C++语言的各种优点,又摒弃了C++里难以理解的多继承、指针等概念

Java是静态面向对象语言的代表   

//动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。如Python和Ruby。  静态类型语言和动态类型语言刚好相反,他的数据类型是在编译期间检查的,也就是说,在写程序时要声明所有变量的数据类型。如C、C++、Java。

Java小程序——Applet

在Java语言出现之前,互联网的网页实质上就像一张纸,不会有任何动态的内容。有了Java语言之后,浏览器的功能被扩大了,Java程序可以直接在浏览器里运行,可以直接与远程服务器交互

Sun在1996年初发布了JDK1.0,这个版本包括两部分:运行环境(JRE)和开发环境(JDK)。运行环境包括核心API、集成API、用户界面API、发布技术、Java虚拟机5个部分;开发环境包括编译Java程序的编译器(即javac命令)

Java的语言优势:跨平台

Java语言是一种特殊的高级语言,它既具有解释型语言的特征,也具有编译型语言的特征,因为Java程序要经过先编译、后解释两个步骤。

计算机高级语言按照程序的执行方式可以分为解释型和编译型两种。

编译型语言是指使用专门的编译器,针对特定平台(操作系统)将某种高级语言源代码一次性翻译成可被该平台硬件执行的机器码(包括机器指令和操作数),并包装成该平台所能识别的可执行性程序的格式,这个转换过程称为编译(Compile)。编译生成的可执行性程序可以脱离开发环境,在特定的平台上独立运行。   有些程序编译结束后,还可能需要对其他编译好的目标代码进行链接,即组装两个以上的目标代码模块生成最终的可执行性程序,通过这种方式实现低层次的代码复用。  现有的C、C++、Pascal等都属于编译型语言。

解释型语言是指使用专门的解释器对源程序逐行解释成特定平台的机器码并立即执行的语言,通常不会进行整体性的编译和链接处理。现有的Ruby、Python都属于解释型语言。

除此之外,还有一种伪编译型语言,如VB,它属于半编译型语言。

 

Java程序的运行机制和JVM:

Java源文件(*.java)-使用javac编译->不具有可执行性的与平台无关的字节码文件(*.class)-使用java解释执行->特定平台的机器码(*.exe)

Java语言里负责解释执行字节码文件的是Java虚拟机(Java Virtual Machine),JVM是可运行Java字节码文件的虚拟计算机

JVM是一个抽象的计算机,和实际的计算机一样,它具有指令集并使用不同的存储区域,他负责执行指令,还要管理数据、内存和寄存器。可以认为JVM分为向上和向下两部分,所有平台上的JVM向上提供给Java字节码程序的接口完全相同,但向下适应不同平台的接口则互不相同。

JRE(Java Runtime Environment)是运行Java程序时的必须条件。JRE包含JVM,JVM是运行Java程序的核心虚拟机,而运行Java程序不仅需要核心虚拟机,还需要其他的类加载器、字节码校验器以及大量的基础类库。JRE除了包含JVM之外,还包含运行Java程序的其他环境支持。一般而言,如果只是运行Java程序,可以只安装JRE,无需安装JDK。

bin:该路径下存放了JDK的各种工具命令,常用的java、javac等命令就放在该路径下。

lib:该路径下存放的是JDK工具命令的实际执行程序

src.zip:该压缩文件里存放的是Java所有核心类库的源代码


使用命令行工具编译运行Java程序:

编译:javac HelloWorld.java  //使用-d选项指定源文件所在目录

运行:java HelloWorld   //java java类名  使用-classpath选项定位类

 

Java程序的组织形式:

Java程序是一种纯粹的面向对象的程序设计语言,因此Java程序必须以类(class)的形式存在,类是Java程序的最小程序单位,Java不允许可执行语句、方法等成分独立存在,所有的程序部分都必须放在类定义里。

只包含一个空类定义的程序可编译成功,但运行时会报错(类中找不到main方法),该错误提示仅表明这个类不能被java命令解释执行,并不表示这个类是错误的。实际上,Java解释器规定:如需某个类能被解释器直接解释执行,则这个类里必须包含main方法,而且main方法必须使用public static void来修饰,且main方法的形参必须是字符串数组类型,也就是说main方法的写法几乎是固定的。Java就从这个main方法开始解释执行,即main方法是程序的入口

 

Java源文件的命名规则:

一个Java源文件可以包含多个类定义,但最多只能包含一个public类定义,若Java源文件里包含public类定义,则该源文件的文件名必须与这个public类的类名相同。

Java源文件里不包含public类定义时,文件名任意。

 

Java的垃圾回收机制:

传统的C/C++语言,需要程序员负责回收已经分配的内存。若一些分配出去的内存得不到及时回收,就会引起系统运行速度下降,甚至导致程序瘫痪,这种现象被称为内存泄漏。与C/C++不同,Java程序员不需要直接控制内存回收,Java程序的内存分配和回收都是由JRE在后台自动进行的,称为垃圾回收机制(Garbage Collection GC)

程序员可以通过调用Runtime对象的gc()或System.gc()等方法来建议系统进行回收。

你可能感兴趣的:(Java)