前言:
正所谓万丈高楼平地起,有了扎实的基础才能进阶更深奥的课程,才能让你后面的走得更轻松,学Java亦是如此!所以千万不能忽略基础的重要性,下面一起来温习一下那些容易忽略、容易混淆以及比较重要的Java基础。
一、概述:
1.JDK:Java Development Kit,java的开发和运行环境。
2.JRE:Java Runtime Environment,java程序的运行环境,java运行的所需的类库+JVM(java虚拟机)。
3.javac命令:当执行javac时,会启动java的编译器程序。对指定扩展名的.java文件进行编译。 生成了jvm可以识别的字节码文件。也就是class文件,也就是java的运行程序。
4. java命令:负责运行的部分,会启动jvm,加载运行时所需的类库,并对class文件进行执行。一个文件要被执行,必须要有一个执行的起始点,这个起始点就是main函数。
二、Java基础:
1.数据类型:
(1). 8种基本类型:byte(1字节)、short(2)、int(4)、long(8)、float(4)、double(8)、char(2)、boolean
(2). 3种引用类型: 数组、类、接口。
级别从低到高为:byte,char,short(这三个平级)-->int-->float-->long-->double
自动类型转换:从低级别到高级别,系统自动转的;
强制类型转换:把一个高级别的数赋给一个别该数的级别低的变量就需要强转。
2、运算符:
(1). & 和 &&区别:第一个叫逻辑与,第二个叫短路与。逻辑与是无论左边结果是什么,右边都参与运算;而短路与,如果在左边为false,那么右边就不参与运算了;显然短路与效率更高。| 和 || 的区别亦是如此。
(2). == 和 equals方法的区别:
当比较的是基本类型:== 和 equals都是比较值是否相等;
当比较的是引用类型(除了String):== 和 equals都是比较地址值是否相同,即是否为同一个对象;
当比较的是String时:== 比较的还是地址值,但是由于String类重写了equals方法,所以equals比较的是值是否相等。
(3).++和--:
++和--参与运算时,如果++(--)放在操作数后面,则先运算再自增(减),如果++(--)放在操作数前面,则先自增(减),再参与运算。
3、语句:
(1). switch循环:
String s = "牛逼";switch (s){ case "牛逼": System.out.println("牛逼"); break; case "厉害": System.out.println("厉害"); break; default: System.out.println("默认"); break; }
这就是switch循环的用法了,switch支持的数据类型有byte、short、int、char、String以及Enum类型。
(2). while循环:
int x = 10;while( x < 20 ) { System.out.print("value of x : " + x ); x++; }
(3).do while循环:
int x = 10;do{ System.out.print("value of x : " + x ); x++; }while( x < 20 );
do while和while的区别:do while至少执行一次。
break: 作用于switch ,和循环语句,用于跳出,或者称为结束。break语句单独存在时,下面不要定义其他语句,因为执行不到,编译会失败。当循环嵌套时,break只跳出当前所在循环。要跳出嵌套中的外部循环,只要给循环起名字即可,这个名字称之为标号。
continue: 只作用于循环结构,继续循环用的。结束本次循环,继续下次循环。该语句单独存在时,下面不可以定义语句,执行不到。
4、数组:用于存储同一类型数据的一个容器。
(1). 数组的初始化
int [] i = {1,2,3} //静态初始化int [] arr = new int[5]; //动态初始化arr[0] = 10;
(2).二分查找法(前提:数组中的元素必须有序)
二分查找法基本思想:
定义最大索引max,最小索引min,计算中间索引mid=(max+min)/2,拿要查找的数和中间索引处的数比较,如果中间索引处的数大了,就在左边找,这时最小索引min不变,最大索引max=mid-1,如果中间索引处的数小了,就在右边找,这时最大索引不变,最小索引min=mid+1。
代码实现:
public static int getIndex(int[] arr, int value) { int min = 0; int max = arr.length - 1; int mid = (max + min) / 2; while (arr[mid] != value) { if (arr[mid] > value) { max = mid - 1; } else if (arr[mid] < value) { min = mid + 1; } if (min > max) { return -1; } mid = (max + min) / 2; } return mid; }
(3).数组排序之冒泡排序:
冒泡排序基本思想:
相邻元素两两比较,大的往后放,这样一轮下来,最大值就出现在了最大索引处,如此这般继续,便可得到排好序的数组。每比完一次,下一次比较就可少比较一个元素,总共需要比较数组长度减一次。
代码实现:
for(int x=0; x<arr.length-1; x++){ // 外循环控制比较次数 for(int y=0; y<arr.length-1-x;y++){ // 内循环控制每一次的比较 if(arr[y]> arr[y+1]){ int temp= arr[y]; arr[y]= arr[y+1]; arr[y+1]=temp; } } }
(4).数组排序之选择排序:
选择排序基本思想:
从0索引处开始,依次和后面的每一个比较,小的往前放,第一次比较完毕,最小值出现在0索引处,如此这般,便可得到排好序的数组。
代码实现:
for(int x=0; x<arr.length-1; x++){ for(int y=x+1; y<arr.length; y++){ if(arr[y]< arr[x]){ int temp = arr[x]; arr[x] = arr[y]; arr[y] = temp; } } }
作者:贪挽懒月
链接:https://www.jianshu.com/p/980a5d3ccb42