Java环境搭建及JVM、JRE、JDK之间的关系

本篇属于之前的查缺补漏,突然意识到之前的这些根本没注意,也是不太清楚,所以就整理一下漏掉的东西,加深一下印象。

一、Java的环境搭建

  • 打开Java官网http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html,
    下载你所需要的JDK版本;
  • 安装JDK,配置环境变量

二、JVM、JRE、JDK之间的关系

  • JVM就是Java虚拟机,它里面包括Java.exe文件,它的作用是:识别.class文件,将class的字节码指令进行识别并调用操作系统向上的API完成动作。也就是说,JVM是Java能跨平台的核心。
  • JRE是Java运行时环境,它主要包括JVM的标准实现和Java的一些基本类库;
  • JDK是Java开发工具包,jdk是Java开发的核心,它集成了jre和一些好用的小工具,比如java.exe、javac.exe、jre.exe等。

关系:
它们三者的关系是层层嵌套的,即:JDK > JRE > JVM
提示:
电脑安装完jdk有两个版本的jre,二者之间有什么区别?
答案是:没有联系。甚至准确的来说,它俩是一样的,无论是用哪一个都是可以的。

三、方法的定义和使用

之前都很模糊的定义或构造方法,虽然总在用,但事实上还是稀里糊涂的,傻敷敷了,唉,再梳理一下!
1、限制条件:
在主类中定义,并且由主方法直接调用的方法形式。语法如下:

public static 返回类型 方法名称([参数类型 变量, ......]) {
 方法体代码;
 [return [返回值];]
}

返回类型有两类:一是无返回值—void;二是返回某种类型的值(例如:int);

1.无返回值(无参数)

public class TestDemo {
     public static void main(String[] args) {
         print(); //主方法里面直接调用方法
     }
     public static void print() {
         System.out.println("Hello World!"); //定义方法
     }
}

2.无返回值类型(有参数)

public class TestDemo {
    public static void main(String[] args) {
        print("Hello"); //主方法里面直接调用方法
        print(" world");
        print("!");
        }
    public static void print(String msg) { //定义方法
       System.out.print(msg); 
       }
}

3.有返回值类型(有参数)

public class TestDemo {
    public static void main(String[] args) {
        int result = add(10, 20);
        System.out.println(result);
        //既然方法有返回值,那么这些返回值也可以直接输出
        System.out.println(add(100, 200));
        }
    public static int add(int x, int y) { //定义方法,有参数,返回int类型
        return x + y;
    }
}
  1. 方法的重载:在同一类中,方法名相同,参数列表不同(个数、类型、顺序),但要求方法的返回值类型一定要相同;
public class TestDemo {
	public static void main(String[] args) {
  		//此时将根据参数的类型和个数的不同执行不同的方法体
  		System.out.println(add(10, 20));
 	 	System.out.println(add(30, 40, 50));
  		System.out.println(add(1.1, 2.1));
 	}
 	public static int add(int x, int y) {
 		 return x + y;
	 }
 	//此时方法名称相同,参数的个数不同
	 public static int add(int x, int y, int z) {
  		return x + y + z;
	 }
	 public static double add(double x, double y) {
  		return x + y;
 	}
}
  1. 方法的递归:递归思想就是说自己调用自己,虽然代码效率不高,但是对于同一个操作方法需要重复很多遍才得出结果的那种问题,用起来很方便;写递归需要注意两个重点:
    1、递归结束的条件
    2、递归过程中,每一遍之间做出的变更
    递归最典型的题可能就是求阶乘的问题了吧,例如:
public class TestDemo {
    public static void main(String[] args) {
    System.out.println(mul(60));
    }
    public static double mul(int num) {
         if(num == 1)
         return  1;
         return num * mul(--num);
    }
}

通过代码可以发现使用while循环的操作其实大部分都可以更换为递归,之所以使用递归主要是一个方法可以执行的操作很多,而且结构要好。

四、形参和实参

  • 形参:只在调用时才给它分配内存单元,一旦调用结束,立即释放分配的内存单元。因此形参只在函数内部有效。
  • 实参:可以是常量、变量、表达式、函数等,无论实参是哪一种,在函数调用时他们就必须有确定的值,以便于把这些值传给形参。因此,应预先用赋值、参数等方法使参数有确定的值。
  • 实参和形参在数量上,类型上、顺序上应严格一致,否则就会发生类型不匹配的错误。
  • 在一般传值调用的机制中只能把实参传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参值发生改变,而实参中的值不会变化。而在引用调用的机制当中是将实参引用的地址传递给了形参,所以任何发生在形参上的改变实际上也发生在实参变量上。
    通俗来说也就是:
  1. 比如你定义一个函数void add(int a, int b),这里的a和b就是形参。
  2. 当你进行函数调用的时候,add(1, 2),这里的1和2就是实参。
发布了45 篇原创文章 · 获赞 11 · 访问量 4832

猜你喜欢

转载自blog.csdn.net/weixin_44187963/article/details/93607756