本篇文章主要讲几个小知识点,JDK、JRE、JVM三者的关系。冒泡排序,二分查找法,插入算法,还有输出几个简单图形的代码。
首先通过一张图片来说明
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();
}
这几个图形都是我从软件里复制过来的,就不要求格式了,想看效果的可以自己复制到软件中看