Java基础概念

本文概述了Java的基础概念,包括Java语言的跨平台原理、JRE与JDK的区别、Java程序的编译与运行过程,以及publicclass和普通class的区别。重点讲解了如何在不同类间调用方法和方法执行顺序。
摘要由CSDN通过智能技术生成

Java基础概念

Java语言跨平台原理

在需要运行Java应用程序的操作系统上,先安装一个JVM(Java Virtual Machine)即Java虚拟机,由JVM来负责Java程序在该系统中的运行,不同的操作系统需要安装不同的JVM,这样Java程序只需要跟JVM打交道,底层的操作由JVM去执行。

JRE和JDK

  • JRE(Java Runtime Environment)即Java运行时环境,主要负责运行Java程序。
  • JDK(Java Development Kit)即Java开发工具包,主要用来开发Java程序,给Java开发人员使用的。
  • JDK和JRE的关系
    Java程序员开发完程序之后需要编译运行,因此JDK包含了JRE,安装JDK之后,就不用再去特意安装JRE了,JRE中包含了JVM(Java虚拟机)。对于那些只希望运行Java程序的人来说,只需要安装JRE即可

Java程序的编译与运行

  • 源文件(source file).java文件,源文件里面所编写的代码叫做源代码(source code)。.java结尾的文件不能直接运行,该文件主要是给程序员看的,使用javac命令将其编译,生成以.class结尾的文件。使用javac命令编译源代码的时期叫做编译期,Java的编译器加载对应的java源文件,然后检查源码里面的语法,如遇到编译错误,不生成.class文件。
  • .class文件叫做字节码文件,这些字节码文件是给计算机看的,运行字节码文件,使用java命令,之后JVM(java虚拟机)中的类装载器会从类路径下的电脑硬盘里面寻找这个class文件,然后将其加载到内存中开始运行。使用java命令运行的时期叫做运行期,这个阶段由类装载器寻找class文件并装载到jvm里面开始运行,这个时期如果出现了错误,我们称之为运行期错误。

Java程序运行的原理

  • 经过javac命令将java源文件编译生成相应的class文件
  • 使用java命令之后会由jvm中的了装载器将class文件装载到内存中
  • jvm中的执行引擎负责只写class文件中的指令
  • 执行引擎将指令发送给OS(operating system,操作系统)
  • 操作系统再去调用相应的device(设备,例如打印机)
    请添加图片描述

public class和class的区别

  • 采用public class来声明class,那么文件名必须和类名一致
  • 使用class来声明类,文件名可以是任何合法的文件名称,文件名不需要和Class类一致
  • 在一个Java文件里面,可以声明多个class,但是只能声明一个public class

跨类调用方法

静态方法可以采用”类名.”的方式

public class Test01{
    public static void main(String[] args){
        //不在同一个类里面,只能使用"类名."的方式调用
        Test02.m2();
        //Error:在当前类中找不到m2方法.
        //m2();
        //在同一个类里面,可以直接调用
        m1();
        //同一个类里面,也可以采用"类名."的方式调用
        Test01.m1();
    }	

    public static void m1(){
        System.out.println("m1");
    }
}
/*
    定义另一个类
*/
class Test02{

    public static void m2(){
        System.out.println("类Test02中的m2");
    }
}

方法的执行顺序

main方法是程序的入口,程序是从main方法里面开始自上而下执行的。

方法重载发生的条件

  • 发生在同一个类中,这个是判断重载的首要条件,即必须得是同一个类中的方法
  • 方法名必须完全相同
  • 参数列表必须不同。类型,个数,顺序,三者满足一个不同即可

注意:

  • 方法是否构成重载和方法的返回值类型无关
  • 方法重载和方法的修饰符列表无关
//参数的类型不同,构成重载
public static void m1(int a){}
public static void m1(double a){}

//参数的个数不同,构成重载
public static void m2(int a,int b){}
public static void m2(int a){}

//参数的顺序不同,构成重载,不过开发中不这样使用	
public static void m3(int a,double b){}
public static void m3(double a,int b){}

//以下两个m4方法并没有构成重载.
//两个方法完全一样,错误
public static void m4(int a){}
public static void m4(int b){}
/*
方法的重载和方法的返回值类型无关,不构成重载
*/
public static void m5(){}
public static int m5(){
    return 100;
}

/*
方法的重载和方法的修饰符列表无关,不构成重载
*/
static void m6(){}
public static void m6(){}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值