Java基础-高级特性-简单总结(小玩意)

    本篇文章主要讲几个小知识点,JDK、JRE、JVM三者的关系。冒泡排序,二分查找法,插入算法,还有输出几个简单图形的代码。


JDK、JRE、JVM三者的关系

    首先通过一张图片来说明

Java基础-高级特性-简单总结(小玩意)_第1张图片

OS操作系统的简单提一句:

    操作系统(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。

    操作系统是用户和计算机的接口,同时也是计算机硬件和其他软件的接口。操作系统的功能包括管理计算机系统的硬件、软件及数据资源,控制程序运行,改善人机界面,为其它应用软件提供支持,让计算机系统所有资源最大限度地发挥作用,提供各种形式的用户界面,使用户有一个好的工作环境,为其它软件的开发提供必要的服务和相应的接口等。实际上,用户是不用解除操作系统的,操作系统管理着计算机硬件资源,同时按照应用程序的资源请求,分配资源,如:划分CPU时间,内存空间的开辟,调用打印机等。

    上文来自百度百科...............

    下面继续从百度百科抄东西..........

    JDK:是Java语言的软件开发工具包,主要用于移动设备、嵌入式设备上的Java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+JAVA操作类库)和JAVA工具。


    JRE:是Java Runtime Environment缩写,指Java运行环境,是sun的产品。运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。


JVM:是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

    Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java能够一次编译,到处运行的原因。


然后讲讲三者之间的关系

根据上面那个图片讲讲我自己的理解

JDK是针对Java开发员的产品,是整个Java的核心,包括了Java运行环境JRE、Java工具和Java基础类库。JRE是运行Java程序所必须的环境的集合,包含JVM标准实现及Java核心类库。JVM是整个Java实现跨平台的最核心的部分,能够运行以Java语言写作的软件程序。

 三者是包含关系,JDK包含JRE,JRE包含JVM,JDK是用于java程序的开发,JRE只能运行class文件而没有编译功能,JRE指java运行环境,光有jvm还不能完成class的执行,在解释class文件的时候jvm需要调用类库。jre目录里的bin文件就可以理解为是jvm,lib中则是jvm工作所需要的类库。看不懂的去看看别的.....


冒泡排序:

从大到小的顺序:根据数组的长度循环遍历,判断数组中相邻的两个数字,如果前一个的值小于后一个的值,就把后一个的值排到前面,也就是交换两个数字的位置

        int [] score = new int[]{-5,29,7,10,5,16};
        for(int i =1;i < score.length - 1;i++) {
            for(int j = 0;j <  score.length - 1-i;j++)
            {
                if(score[j] < score[j+1]) {
                    int temp = score[j];
                    score[j] = score[j+1];
                    score[j+1] = temp;
                }
            }
        }
从小到大的顺序思路和上面的也是一样的,在比较的时候将小的数字放到前面就好了,也就是将内层循环比较的符号换成大于
int [] score = new int[]{-5,29,7,10,5,16};
        for(int i =1;i < score.length - 1;i++) {
            for(int j = 0;j <  score.length - 1-i;j++)
            {
                if(score[j] > score[j+1]) {
                    int temp = score[j];
                    score[j] = score[j+1];
                    score[j+1] = temp;
                }
            }
        }

二分查找法:

    二分查找法有一个前提,就是数组中的数字必须是有序的,这里数组升序输入。二分法就是从中间位置开始找,如果中间位置就是要查找的数字,就break跳出循环,如果中间位置大于或小于要查找的数字,就将中间位置变为要查找的起始或者末尾位置,依次类推。

        int [] arr = new int[]{-5,5,7,10,16,20,30};
        int searchNum=11;//这个是要查找的数字
        int startIndex=0;//开始查找的下标
        int endIndex=arr.length-1;//结束查找位置的下标
        int midIndex=-1;//定义一个中间位置的下标
        boolean isFind=false;//标记是否找到。false是没找到,true是找到了

        do{
            midIndex =(startIndex+endIndex)/2;
            if(arr[midIndex]==searchNum){
                System.out.println("找到了,下标是"+midIndex);
                isFind=true;
                break;
            }else if(arr[midIndex]>searchNum){
                endIndex=midIndex-1;
            }else{
                startIndex=midIndex+1;
            }
        }while (startIndex<=endIndex);
        if(!isFind){
            System.out.println("没找到");
        }

插入算法:

    插入算法是一个比较算法,相当于我们玩扑克牌,开始时手上什么都没有,每次摸一张牌就把牌按照顺数放到手中,直到所有的牌都排好序。

 int [] arr = new int[]{-5,9,7,8,16,14,30,45,36,27,-8,39};
 for(int i=1;i=0&&temp

然后介绍几种简单的图形代码

    平行四边形

for(int i=1;i<=5;i++){
								for(int j=1;j<=5-i;j++){
									System.out.print(" ");
								}
								for(int j=1;j<=5;j++){	
									System.out.print("*");
								}
								System.out.println();
								}

三角形

for(int i=1;i<=5;i++){
								for(int j=1;j<=5-i;j++){
									System.out.print(" ");
								}
								
								for(int j=1;j<=2*i-1;j++){
									
									System.out.print("*");
									
								}
								System.out.println();
								}

九九乘法表

for(int i=1;i<=9;i++){
								
								for(int j=1;j<=i;j++){
									System.out.print(i+"*"+j+"="+i*j+" ");
								}
								System.out.println();
							}
 for (int i=1; i<=9; i++) {  
						            for (int j=i; j<=9; j++) {  
						                System.out.print(j+"*"+i+"="+(i*j)+"\t");  
						            }  
						            System.out.println();  
						        }  
for (int i=9; i>=1; i--) {  
					            for (int j=1; j<=i; j++) {  
					                System.out.print(j+"*"+i+"="+(i*j)+"\t");  
					            }  
					            System.out.println();  
					        }  

菱形

for(int i=1;i<=5;i++){
								for(int j=1;j<=5-i;j++){
									System.out.print(" ");
								}
								for(int j=1;j<=2*i-1;j++){
									System.out.print("*");
								}
								System.out.println();
								}
							for(int i=1;i<=4;i++){
								for(int j=1;j<=i;j++){
									System.out.print(" ");
								}
								for(int j=1;j<=2*(5-i)-1;j++){
									System.out.print("*");
								}
								System.out.println();
							}

数字图形

for(int i=1;i<=5;i++){
							for(int j=1;j<=5-i;j++){
								System.out.print(" ");
							}
							for(int j=1;j<=2*i-1;j++){
								System.out.print(5-i);
							}
							System.out.println();
							}
						for(int i=1;i<=4;i++){
							for(int j=1;j<=i;j++){
								System.out.print(" ");
							}
							for(int j=1;j<=2*(5-i)-1;j++){
								System.out.print(i);
							}
							System.out.println();
						}

空心菱形

for(int i=1;i<=5;i++){
							for(int j=1;j<=5-i;j++){
								System.out.print(" ");
							}
							for(int j=1;j<=2*i-1;j++){
							if(j==1||j==2*i-1){
								System.out.print("*");
							}else{
								System.out.print(" ");
							}
							}
							System.out.println();
							}
						for(int i=1;i<=4;i++){
							for(int j=1;j<=i;j++){
								System.out.print(" ");
							}
							for(int j=1;j<=2*(5-i)-1;j++){
								if(j==1||j==2*(5-i)-1){
								System.out.print("*");
								}else{
									System.out.print(" ");
								}
							}
							System.out.println();
						}
这几个图形都是我从软件里复制过来的,就不要求格式了,想看效果的可以自己复制到软件中看




你可能感兴趣的:(Java)