1、Java基础

Java的三种技术架构:

1、J2EE:开发企业环境下的应用程序,主要针对web程序开发。

2、J2SE:桌面应用程序的开发,是其它两者的基础。

3、J2ME:开发电子消费产品和嵌入式设备。

JDK:Java开发工具包,安装时路径不要有中文和空格。

JRE:Java的运行环境。

1、配置path环境变量:让java jdkin目录下的工具,可以在任意目录下运行。

新建JAVA_HOME=%安装路径%Javajdk

再在path中添加%JAVA_HOME%in,注意前面要有;号

2、配置classpath环境变量:设置了class文件的路径信息,启动jvm(java虚拟机)的时候,那么java虚拟机就会 根据classpath环境变量所保存路径信息下去寻找对应的class文件

不建议永久配置,临时配置 set classthpath=;e:,加“;”代表也会在当前目录下查找。

javac:编译,当执行javac时会启动java的编译器程序,对指定扩展名的.java文件进行编译,生成了jvm可以识别的字节码文件,也就是class文件(java的运行程序)。

java:运行,启动jvm.加载运行时所需的类库,并对class文件进行执行。

javac进入目标文件.java所在的目录下编译,java进入包所在目录(E:eclipseProjectDemo5in)进行运行    java cn.guojie.udp.DemoReveice

javac编译通过时,java运行仍造成“找不到或无法加载主类 Demo1”错误,可能是运行的时候写错了类名(class文件的文件名是对应的类名的,不是对应的java文件名的),或者是没有进入java包所在的目录,要设置一下set classthpath=;e:。

标识符:数字、字母、下划线、$,不能以数字开始。

常量:运行过程中不会改变的量。

变量:内存中的存储空间,用于存储常量。

数据类型:

基本数据类型: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 }

寄存器、本地方法区、方法区、堆、栈

堆:局部变量(函数中的的变量、函数上的参数、语句中的变量)

栈:数组和对象

有志者,事竟成,破釜沉舟,百二秦关终属楚;苦心人,天不负,卧薪尝胆,三千越甲可吞吴。
原文地址:https://www.cnblogs.com/1989guojie/p/6095973.html