Java的三种技术架构:
1、J2EE:开发企业环境下的应用程序,主要针对web程序开发。
2、J2SE:桌面应用程序的开发,是其它两者的基础。
3、J2ME:开发电子消费产品和嵌入式设备。
JDK:Java开发工具包,安装时路径不要有中文和空格。
JRE:Java的运行环境。
配置环境变量:让java jdk\bin目录下的工具,可以在任意目录下运行。
新建JAVA_HOME=%安装路径%\Java\jdk
再在path中添加%JAVA_HOME%\bin,注意前面要有;号
javac:编译,当执行javac时会启动java的编译器程序,对指定扩展名的.java文件进行编译,生成了jvm可以识别的字节码文件,也就是class文件(java的运行程序)。
java:运行,启动jvm.加载运行时所需的类库,并对class文件进行执行。
标识符:数字、字母、下划线、$,不能以数字开始。
常量:运行过程中不会改变的量。
变量:内存中的存储空间,用于存储常量。
数据类型:
基本数据类型:byte short int long float double char boolean
引用数据类型:数组、类、接口
%:取模(取余),任何数%2不是0就是1,可用于开关运算。
i++:先使用后加减。
>>>:无符号右移。
^:异或,两边不同是真。
>>:右移,除以2
(条件表达式)?表达式1:表达式2;
1 switch(表达式) { 2 case 取值1: 3 执行语句; 4 break; 5 default: 6 执行语句; 7 break; 8 }
选择的类型四种:byte,short,int ,char。后面增加了枚举。
while和for:可以互换,要是定义变量控制循环次数用for,无限循环用while(true)。
break:结束循环,用于for switch
continue:结束本次循环,进入下一循环。
重载:同一类中,函数名相同,参数类型或者参数列表不一样,与返回值无关。
数组:从0开始,对元素进行编号
int[] arr = new int[4];
int[] arr = new int[]{1,2,3,4};
异常:数组越界、空指针异常。
直接排序:
public static void selectSort(int[] arr) { for (int x = 0; x < arr.length - 1; x++) { // 为什么y的初始化值是 x+1?因为每一次比较,都用x角标上一个元素和下一个元素进行比较。 for (int y = x + 1; y < arr.length; y++) { if (arr[x] > arr[y]) { int temp = arr[x]; arr[x] = arr[y]; arr[y] = temp; } } } }
冒泡排序:
1 public static void bubbleSort(int[] arr) { 2 3 for (int x = 0; x < arr.length - 1; x++) { 4 // -x:让每次参与比较的元减,-1:避免角标越界。 5 for (int y = 0; y < arr.length - x - 1; y++) { 6 if (arr[y] > arr[y + 1]) { 7 int temp = arr[y]; 8 arr[y] = arr[y + 1]; 9 arr[y + 1] = temp; 10 } 11 } 12 } 13 }
二分法(折半查找)
1 public static int halfSeach(int[] arr, int key) { 2 3 int min, mid, max; 4 min = 0; 5 max = arr.length - 1; 6 mid = (max + min) / 2; 7 8 while (arr[mid] != key) { 9 if (key > arr[mid]) 10 min = mid + 1; 11 else if (key < arr[mid]) 12 max = mid - 1; 13 14 if (min > max) 15 return -1; 16 17 mid = (max + min) / 2; 18 } 19 return mid; 20 }
数组翻转
1 public static void reverseArray(int[] arr) { 2 for (int start = 0, end = arr.length - 1; start < end; start++, end--) { 3 int temp = arr[start]; 4 arr[start] = arr[end]; 5 arr[end] = temp; 6 7 } 8 }
寄存器、本地方法区、方法区、堆、栈
堆:局部变量(函数中的的变量、函数上的参数、语句中的变量)
栈:数组和对象