java基础知识
Posted JAHC
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java基础知识相关的知识,希望对你有一定的参考价值。
目录
1.基本概念
2.面向对象
2.1类
2.2包
2.3对象
一、基本概念
1、java主要目标是:面向对象、简单化、解析型与平台无关、多线程、安全高效、动态性。
java的编译模式:编译解析型
2、字节:是计算机最小的存储单位。1byte = 8 bit (1字节 = 8 位)
3、JVM(java Vritual Machine):
是用软件模拟实现的一种虚拟机。用于执行bytecode字节码。
JVM运行的代码存储在.class文件中,每一个文件包含最多一个public类的代码。JVM用字节代码程序与各操作系统和硬软件分开,保证java程序独立于平台,而JVM本身可以用软件或硬件实现。
每一个java解析器都有一个JVM的具体实现下面三步:
(1)加载代码:由类加载器完成
(2)校验代码:由字节码校验器完成
(3)执行代码:由解析器完成
java程序下载和执行的步骤:
(1)源程序经编译器得到字节代码
(2)浏览器与服务器连接,要求下载字节码文件
(3)服务器将字节代码文件下载到客户端
(4)客户机上的jvm执行
(5)在浏览器上显示并交互
4、垃圾回收机制:
所有的代码都封装在类中,需要时创建类的实例(对象)来处理,这种实例存储在内存堆中。java有一个系统级的线程,对内存的使用进行自动的跟踪。能在jvm空闲的时候,对不用的内存进行自动回收。它消除了释放内存的必要,也避免了内存的泄漏。将编程者从繁忙的内存管理中脱离出来
5、JRE(java Runtime Environment):
是一个java程序运行环境。包含了java应用程序接口(API)和JVM。如图:
6、JDK(java Development Kit):
程序开发工具包,java的三种平台:JavaSE、JavaME、JavaEE都立足于核心的开发工具包JDK的各个版本。如果需要开发程序,一定需要安装JDK,如果自是运行程序,安装JRE就已经足够了。
各种概念的关系图:
二、面向对象编程
面向对象的一些基本概念:抽象、封装、继承、多态。
1、抽象:是人类处理复杂事务的提升。面向对象的思路和传统的思路不同,它强调按照与人类思维方法中的抽象、分类、继承、组合、封装等原则去模拟现实世界的物理存在。抽象导致面向对象编程的方法与数据封装,形成不同层次上的构件,使软件构件化,实现了不同层次上的重用。
2、封装:封装是面向对象技术中隐藏信息的一种机制。目的是将对象的具体实现细节隐藏起来,只通过一个公用接口和消息与其他对象通信。让使用者和设计者分开。“类”是程序封装的最小单位。
3、继承:描述两个类之间的关系。允许一个新类(子类)包含另一个已有类(父类)的状态和行为。子类的派生过程称为继承。继承是抽象分层管理的实现机制。Java中除了Object类外,其他类都有父类。
分为单继承、多继承。继承只支持单继承,多重继承需要通过接口实现。
4、多态:允许一个类中有多个同名方法,但方法的具体实现却不同的机制。同一个程序中同名的方法可用不同代码实现的特性称为多态性。
1、类
(1)类
一个类在使用前,一定需要声明。
基本类声明的两种方法:
[修饰符] class 类名 {类体}
[修饰符] class 类名 [extends 父类名] [implements 接口名列表] {类体}
类修饰符可以有多个,说明类的权限:
- public:公共类。可被其他类访问或引用其成员变量和成员方法。java语言规定包含main()方法的类必须是公共类。
- abstract:抽象类。指不能实例化的类。具体操作需要在子类中实现。
- final:终结类。指明该类没有子类。
- 没有修饰符:则具有默认修饰符。该类只允许该类相同包中的类可以访问和调用,其他包中的类不能访问和使用。
(2)成员变量
类中声明该类的所有的变量,都叫成员变量。
声明方式:[变量修饰符] 类型 变量名 [=初值] [,变量名 [=初值]],......;
注意:成员变量的作用域是整个类。而局部变量是作用于方法内部。一旦从方法中返回,局部变量就会消失。成员变量只存在于类中哦,不能出现在方法中。
变量的修饰符,说明使用的权限:
- public:允许所有类访问该变量。
- protected:仅允许相同包的类和该类的子类来访问。
- private:仅允许本类访问的内部变量。
- static:表示该变量是类变量,是该类所有对象共享的变量。独立于该类所有对象,可以直接进行访问。
- 没有static修饰:是实例变量(对象变量),只能通过对象来访问它。
(3)成员方法
[方法修饰符] 返回值类型 方法名(参数表) {方法体}
方法修饰符:
- public、protected、private:和变量修饰符意义一样。
- static:类方法。可以直接进行访问和调用
- 没有static修饰:实例方法。
- abstract:抽象方法。没有定义方法体。static方法和final方法都不允许是abstract方法。
- native:表示是其他语言代码的方法,用它与java代码集成。
- synchronize:表示多个并发线程对共享资源访问的控制。
- final:表示终结方法,不允许子类的覆盖。
注意:void的方法是没有返回值的。
调用的时候:
- 任何情况都可以用实例变量名.方法名来调用。
- 在类方法中,可以直接调用本身的类方法,但不能直接调用实例方法。
- 在实例方法中,可直接调用本身的类方法或实力方法。
- 在实例方法中可以使用this.方法名或者super.方法名调用。
2、包
是java语言对一组相关的类、接口和子包进行封装的机制。声明一个包需要使用package语句。
引入格式:package 包的全名。
使用包中的类的导入格式:import 包全名.类名 | *;
java中的基本类库包:
(1)java核心包
- java.lang包:封装所有应用的基本类。如:Object、Class、String、System等。而Object是所有类的根,包含属性和方法被所有类继承
- java.awt包:封装抽象窗口工具包,提供构建和管理用户图形界面功能。
- java.applet包:为Applet提供执行所需的所有类。
- java.io包:提供程序输入/输出文件操作类。
- java.net包:提供程序执行网络通信应用及URL的处理类。
- java.rmi包:提供程序远程方法调用所需的类。
- java.math包:提供常用的整数算术以及十进制算术的基本方法类。
- java.util包:提供实用程序类、集合类。
- java.sql包:提供访问和处理标准数据源数据的类。
- java.security包:提供网络安全操作类。
- java.text包:提供所有处理文本、日期、数字和非自然语言的消息操作的类。
- java.bean包:提供开发编写java bean所需的类。
(2)javax扩展包
- javax.naming包:提供命名服务需要的类和接口。
- javax.swing包:提供构建和管理应用程序图形界面的轻量级的构件。
- javax.rmi包:提供远程方法调用的应用程序接口。
- javax.transaction包:提供事务管理所需要的基本类。
- javax.sound包:提供多媒体声音需求的MIDI输入/输出以及合成操作基本类。
- javax.accessibility包:提供用户界面构件之间相互访问机制的基本类。
注意:java.lang包是编译器自动导入的。在编译时,不需要手动导入该包。使用其他包中的类必须要import导入。
3、对象
对象:是一组相关变量和相关方法的封装体,通过对类的实例化而创建。
对象的主要属性:状态、行为。
状态(静态属性):用变量表示。行为(动态属性):用方法表示。
类是对象的抽象,对象是类的实例。对象和实例是同义词。
在创建对象时内存种存储的是该对象的引用值的堆地址和有关信息。并非内存直接地址,也不是引用本身。
用new关键字实例化一个对象后,才给对象分配内存,并调用对象的构造方法,返回该对象的堆地址和相关信息。
给变量赋值null不同于没有初始化,赋值null是可以给别的变量赋值的。
1、对象的初始化--构造函数
构造函数式用于初始化对象的。要求与类名相同,无返回值。一个类可以有多个构造函数,但是一定要具有不同的参数。
格式:[类修饰符] 类名 ([形参列表]) [throws 子句] {方法体}
构造函数的特点:
- 名称需要和类名相同,
- 给对象赋初值,所以没有返回值,但不能用void来声明。
- 不能被程序直接调用,只能通过new来调用
- 如果没有定义构造函数,java会默认赠送一个无参的构造函数。
- 可以重写,实现不同的初始化方法。
2、对象的使用
使用的几种情况:
(1)访问对象的变量和调用方法。通过对象名.变量/方法
(2)对象作为其他类的成员变量。注意:在使用前必须要给该对象分配内存。
(3)对象作为方法的参数和返回值。
4、java源程序结构
包含源代码(.java文件)、由编译器生成的类(.class文件)、由归档工具jar生成(.jar文件)、对象状态序列化(.ser文件)
以上是关于java基础知识的主要内容,如果未能解决你的问题,请参考以下文章