java基础(知识一)

目录

基本概念

面向对象

对象

测试



一、基本概念

  1. java主要目标是:面向对象、简单化、解析型与平台无关、多线程、安全高效、动态性。java的编译模式:编译解析型

  2. 字节:是计算机最小的存储单位。1byte = 8 bit (1字节 = 8 位)

  3. JVM(java Vritual Machine):是用软件模拟实现的一种虚拟机。用于执行bytecode字节码。JVM运行的代码存储在.class文件中,每一个文件包含最多一个public类的代码。JVM用字节代码程序与各操作系统和硬软件分开,保证java程序独立于平台,而JVM本身可以用软件或硬件实现。

  4. 每一个java解析器都有一个JVM的具体实现下面三步:
    (1)加载代码:由类加载器完成
    (2)校验代码:由字节码校验器完成
    (3)执行代码:由解析器完成

  5. java程序下载和执行的步骤:
    java程序的遍历在这里插入图片描述
    (1)源程序经编译器得到字节代码
    (2)浏览器与服务器连接,要求下载字节码文件
    (3)服务器将字节代码文件下载到客户端
    (4)客户机上的jvm执行
    (5)在浏览器上显示并交互

  6. 垃圾回收机制:
        所有的代码都封装在类中,需要时创建类的实例(对象)来处理,这种实例存储在内存堆中。java有一个系统级的线程,对内存的使用进行自动的跟踪。能在jvm空闲的时候,对不用的内存进行自动回收。它消除了释放内存的必要,也避免了内存的泄漏。将编程者从繁忙的内存管理中脱离出来

  7. JRE(java Runtime Environment):
    是一个java程序运行环境。包含了java应用程序接口(API)和JVM。如图:
    在这里插入图片描述

  8. JDK(java Development Kit):
    程序开发工具包,java的三种平台:JavaSE、JavaME、JavaEE都立足于核心的开发工具包JDK的各个版本。如果需要开发程序,一定需要安装JDK,如果自是运行程序,安装JRE就已经足够了。
    各种概念的关系图:
    在这里插入图片描述
    返回顶部

二、面向对象编程

  1. 抽象:是人类处理复杂事务的提升。面向对象的思路和传统的思路不同,它强调按照与人类思维方法中的抽象、分类、继承、组合、封装等原则去模拟现实世界的物理存在。抽象导致面向对象编程的方法与数据封装,形成不同层次上的构件,使软件构件化,实现了不同层次上的重用。

  2. 封装:封装是面向对象技术中隐藏信息的一种机制。目的是将对象的具体实现细节隐藏起来,只通过一个公用接口和消息与其他对象通信。让使用者和设计者分开。“类”是程序封装的最小单位。

  3. 继承:描述两个类之间的关系。允许一个新类(子类)包含另一个已有类(父类)的状态和行为。子类的派生过程称为继承。继承是抽象分层管理的实现机制。Java中除了Object类外,其他类都有父类。分为单继承、多继承。

         注意:
         (1)继承只支持单继承,多重继承需要通过接口实现。
         (2)如果,父类没有默认的构造方法,子类就必须显式调用super(),并给出参数以便编译器定位到父类适合的构造器。
         (3)子类不会继承任何父类的构造方法,子类默认的构造方法是编译器自动生成的,不是继承的。

  1. 多态:允许一个类中有多个同名方法,但方法的具体实现却不同的机制。同一个程序中同名的方法可用不同代码实现的特性称为多态性。
    就是:运行期才能动态决定调用的子类方法。对某个类型调用某个方法,执行的实际方法可能是某个子类的覆写方法。

  2. 注意转型情况:
    向上转型(upcasting):把一个子类类型安全地变为父类类型的赋值。
    如:父类 a = new 子类();

         向下转型(downcasting):如果把一个父类类型强制转型为子类类型。前提是父类类型指向的是子类类型,才可以转型成功。

          如:父类 a = new 子类(); // 父类类型指向子类
          子类 b = (子类) a; // 强转成功
          父类 a = new 父类(); // 父类类型指向父类
          子类 b = (子类) a; // 强转失败

Java提供了instanceof操作符,可以先判断一个实例究竟是不是某种类型:

返回顶部

三、类


  1. (1)一个类在使用前,一定需要声明。
    (2)基本类声明的两种方法:
         [修饰符] class 类名 {类体}
         [修饰符] class 类名 [extends 父类名] [implements 接口名列表] {类体}

        (3)类修饰符可以有多个,说明类的权限:

  • public:公共类。可被其他类访问或引用其成员变量和成员方法。java语言规定包含main()方法的类必须是公共类。

  • abstract:抽象类。指不能实例化的类。具体操作需要在子类中实现。

  • final:终结类。指明该类没有子类。

  • 没有修饰符:则具有默认修饰符。该类只允许该类相同包中的类可以访问和调用,其他包中的类不能访问和使用。

  1. 成员变量
    (1)类中声明该类的所有的变量,都叫成员变量。
    (2)声明方式:[变量修饰符] 类型 变量名 [=初值] [,变量名 [=初值]],…;
    (3)注意:成员变量的作用域是整个类。而局部变量是作用于方法内部。一旦从方法中返回,局部变量就会消失。成员变量只存在于类中哦,不能出现在方法中。

        (4)变量的修饰符,说明使用的权限:

  • public:允许所有类访问该变量。
  • protected:仅允许相同包的类和该类的子类来访问。
  • private:仅允许本类访问的内部变量。
  • static:表示该变量是类变量,是该类所有对象共享的变量。独立于该类所有对象,可以直接进行访问。
  • 没有static修饰:是实例变量(对象变量),只能通过对象来访问它。
  1. 成员方法
    (1)[方法修饰符] 返回值类型 方法名(参数表) {方法体}

         (2)方法修饰符:

  • public、protected、private:和变量修饰符意义一样。

  • static:类方法。可以直接进行访问和调用

  • 没有static修饰:实例方法。

  • abstract:抽象方法。没有定义方法体。static方法和final方法都不允许是abstract方法。

  • native:表示是其他语言代码的方法,用它与java代码集成。

  • synchronize:表示多个并发线程对共享资源访问的控制。

  • final:表示终结方法,不允许子类的覆盖。

    (3)注意:void的方法是没有返回值的。
     调用的时候:
    任何情况都可以用实例变量名.方法名来调用。
    在类方法中,可以直接调用本身的类方法,但不能直接调用实例方法。
    在实例方法中,可直接调用本身的类方法或实力方法。
    在实例方法中可以使用this.方法名或者super.方法名调用。

       类中有get、set方法,其中可以存入可变参数。setName(String… name){ }。其实这个相当于传入了一个String[] ,但是可变参数存入允许无需实例化这个数组,也可以不传入参数。

返回顶部

四、包

        (1)是java语言对一组相关的类、接口和子包进行封装的机制。声明一个包需要使用package语句。

        (2)引入格式:package 包的全名。
        (3)使用包中的类的导入格式: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导入。

返回顶部

对象

  • 对象:是一组相关变量和相关方法的封装体,通过对类的实例化而创建.
  • 对象的主要属性:状态、行为。
  • 状态(静态属性):用变量表示。行为(动态属性):用方法表示。
  • 类是对象的抽象,对象是类的实例。对象和实例是同义词。
  • 在创建对象时内存种存储的是该对象的引用值的堆地址和有关信息。并非内存直接地址,也不是引用本身。
  • 用new关键字实例化一个对象后,才给对象分配内存,并调用对象的构造方法,返回该对象的堆地址和相关信息。
    给变量赋值null不同于没有初始化,赋值null是可以给别的变量赋值的。
  1. 对象的初始化–构造函数
    构造函数式用于初始化对象的。要求与类名相同,无返回值。一个类可以有多个构造函数,但是一定要具有不同的参数。
    格式:[类修饰符] 类名 ([形参列表]) [throws 子句] {方法体}
    构造函数的特点:

    名称需要和类名相同,
    给对象赋初值,所以没有返回值,但不能用void来声明。
    不能被程序直接调用,只能通过new来调用
    如果没有定义构造函数,java会默认赠送一个无参的构造函数。
    可以重写,实现不同的初始化方法。

  2. 对象的使用
    使用的几种情况:
    (1)访问对象的变量和调用方法。通过对象名.变量/方法
    (2)对象作为其他类的成员变量。注意:在使用前必须要给该对象分配内存。
    (3)对象作为方法的参数和返回值。

  3. java源程序结构
    包含源代码(.java文件)、由编译器生成的类(.class文件)、由归档工具jar生成(.jar文件)、对象状态序列化(.ser文件)

返回顶部

测试

分为几个测试:
  • 白盒测试(white-box testing),对所有的逻辑路径都进行测试,一般由程序员完成。
  • 黑盒测试(black-box testing),又叫功能测试。在完全不考虑程序内部结构和内部情况下,检查程序功能是否按照需求规格说明书的规定正常使用。一般由独立的使用者完成。
  • 自动测试:用程序批量、反复测试程序,并可自动检查程序的结果是否满足预定的要求。
  • 手动测试:需要手动输入所需要的参数,手动检测程序结果是否满足预定的要求。
  • 回归测试:在修改旧的代码后,重新测试来确认修改没有引入新的错误或导致其他代码产生错误。
  • Junit测试:是一个java语言的单元测试框架。使用junit测试只需要在方法的顶部使用@Test注解即可进行测试。

返回顶部

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值