一、Java语言的运行机制

Java是编译型语言也是解释型语言
Java运行过程是:

  1. 源文件(.java文件)经过Java编译器编译成字节码文件(.class文件)
  2. 运行的时候就会走到jvm虚拟机,他会把字节码文件这个类放到类装载器里面,这时候就会把类加载到jvm里面了
  3. 加载进来之后就会有个字节码校验器(这个就是看你代码写的对不对,不对就会告诉你出问题了)
  4. 代码没问题就会通过一个解释器解释给操作系统

二、使用IDEA开发

1、什么是IDE
集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。所有具备这一特性的软件或者软件套(组)都可以叫集成开发环境。

2、什么是IDEA
是jetbrains(杰特宾丝)是捷克的一家公司的一款IDE

3、优化
优化可以看我另外三个用idea的文章,也可以百度搜idea优化

三、标识符

java 集成doris java集成是什么意思_Java


java 集成doris java集成是什么意思_数组_02

四、逻辑运算符位运算符

java 集成doris java集成是什么意思_递归_03

逻辑运算符:

&& 和 || 都有这个短路功能

java 集成doris java集成是什么意思_java 集成doris_04

位运算符

与(&)、非(~)、或(|)、异或(^)

& 比较二进制,如果同位上都是1则算出来的二进制这个位置上是1,否则都位0

| 比较二进制,如果同位上有一个是1那么则算出来的二进制同位是1

单个二进制,就是跟二进制完全相反


java 集成doris java集成是什么意思_递归_05

常见面试题:
<<(左移) >>(右移)

<<相当于 *2
>>相当于 /2

五、数据类型

java 集成doris java集成是什么意思_数组_06


java 集成doris java集成是什么意思_Java_07


除了基本数据类型之外的都叫引用数据类型,比如String、Integer…

什么是字节

java 集成doris java集成是什么意思_java 集成doris_08

拓展

整数拓展:

java 集成doris java集成是什么意思_递归_09


浮点数拓展:

浮点数表现得字长是有限的,也是离散的,舍入误差,大约数,最好完全避免使用浮点数比较,可以用BigDecimal 数学工具类

java 集成doris java集成是什么意思_Java_10

字符拓展:

可以把char强制转换成int,所有的字符本质还是数字

编码问题:Unicode可以处理各种语言的文字 2字节 字符长度0-65536

他还有一张表比如 97 = a ;65 = A;

他这些东西可以使用unicode编码通过转译表示

char c3 = ‘\u0061’ \u代表给他转译

java 集成doris java集成是什么意思_Java_11


转义字符:还有很多

java 集成doris java集成是什么意思_数组_12


布尔值扩展:

java 集成doris java集成是什么意思_数组_13

六、类型转换

强制类型转换、自动类型转换

java 集成doris java集成是什么意思_Java_14

java 集成doris java集成是什么意思_Java_15

java 集成doris java集成是什么意思_数组_16

计算的时候容易出现的问题

java 集成doris java集成是什么意思_java 集成doris_17

七、 九九乘法表

java 集成doris java集成是什么意思_java 集成doris_18

八、可变参数

本质是一个数组

调用方法:

可以用可变长参数去调用

也可以用一个同类型的数组去调用

java 集成doris java集成是什么意思_Java_19


排序求最大值

java 集成doris java集成是什么意思_Java_20

九、递归

递归:A方法调用A方法!就是自己调用自己

StackOverflowError栈溢出异常

java 集成doris java集成是什么意思_Java_21


递归简介:

java 集成doris java集成是什么意思_递归_22


递归头:什么时候不调用自己

递归体:什么时候调用自己

上面那个类就是没有递归头

阶乘概念

java 集成doris java集成是什么意思_递归_23


java 集成doris java集成是什么意思_数组_24


测试:

java 集成doris java集成是什么意思_递归_25


到f(1)就有一个值1,然后一步一步返回给上一步方法

java 集成doris java集成是什么意思_递归_26


边界条件:到最后一个数的时候会执行到底 这里是f(1)

前阶段:自上而下一层一层的调到最下层的这个阶段f(3)——>f(2)——>f(1)

返回阶段:n*(n-1)

Java都是使用栈机制的,相当于是一个罐子,最下面是一个main方法,然后每调用一个方法就会在里面压一层东西,一个方法结束了然后那一层的东西就结束了,main方法执行完了栈里面就空了他就不跑程序了。

加入这个栈里面就无限在往里面压东西他就空间不行了,对于一些嵌套层次比较深的算法,递归就会显得力不从心了,物理上就会造成这个内存崩溃,最后就崩了

所以能不用递归就不用递归,一般我们可以通过一些方法代替,但是有些递归执行的比较快的话就用递归,前提是基数比较小的情况下,如果刚刚那种f(10000)就不要用了,反而会影响性能

十、内存分析(一):

先基本了解一下Java的内存,不是很底层

java 集成doris java集成是什么意思_Java_27


java 集成doris java集成是什么意思_java 集成doris_28

首先声明一个数组这个数组并不存在于堆中,只有一个引用变量存在栈中,当new的时候在堆中才会开辟一片空间去存这个数组(这个数组才算真正产生)赋值的时候里面才有值,没有赋值就是个默认元素。

异常:数组下标越界ArrayIndexOutOfBoundsException异常,比如一个数组只开辟了10个空间大小,而你用下标10想去调用第11个数组的时候会产生

java 集成doris java集成是什么意思_Java_29

java 集成doris java集成是什么意思_java 集成doris_30

数组的四个基本特点

1、长度是确定的,一旦被创建,它的大小就是不可改变的(扩容的话就要创建一个新的数组,后面会学一些集合框架底层就是数组可以扩容)
2、元素必须是相同类型,不允许出现混合类型
3、数组中的元素可以是任何数据类型,包括基本类型和引用类型
4、数组变量数组引用类型,数组也可以看成是对象,每个元素相当于该对象的成员变量,Java中对象是在堆中的,因此数组无论保存原始类型还是引用类型,数组对象本身是在堆中的

十一、Arrays类

java 集成doris java集成是什么意思_递归_31

java 集成doris java集成是什么意思_数组_32


直接打印一个数组对象会出现一个hashcode

  1. toString方法和sort方法
  2. fill方法
    不写区间就默认全部元素被填充

十二、冒泡排序

总共有八大排序,冒泡排序是最出名的之一

冒泡排序代码:两层循环,外层冒泡轮数,里层依次比较

举例说明:要排序数组:int[] arr={6,3,8,2,9,1};

第一趟排序:

第一次排序:6和3比较,6大于3,交换位置: 3 6 8 2 9 1

第二次排序:6和8比较,6小于8,不交换位置:3 6 8 2 9 1

第三次排序:8和2比较,8大于2,交换位置: 3 6 2 8 9 1

第四次排序:8和9比较,8小于9,不交换位置:3 6 2 8 9 1

第五次排序:9和1比较:9大于1,交换位置: 3 6 2 8 1 9

第一趟总共进行了5次比较, 排序结果: 3 6 2 8 1 9


第二趟排序:

第一次排序:3和6比较,3小于6,不交换位置:3 6 2 8 1 9

第二次排序:6和2比较,6大于2,交换位置: 3 2 6 8 1 9

第三次排序:6和8比较,6大于8,不交换位置:3 2 6 8 1 9

第四次排序:8和1比较,8大于1,交换位置: 3 2 6 1 8 9

第二趟总共进行了4次比较, 排序结果: 3 2 6 1 8 9


第三趟排序:

第一次排序:3和2比较,3大于2,交换位置: 2 3 6 1 8 9

第二次排序:3和6比较,3小于6,不交换位置:2 3 6 1 8 9

第三次排序:6和1比较,6大于1,交换位置: 2 3 1 6 8 9

第二趟总共进行了3次比较, 排序结果: 2 3 1 6 8 9


第四趟排序:

第一次排序:2和3比较,2小于3,不交换位置:2 3 1 6 8 9

第二次排序:3和1比较,3大于1,交换位置: 2 1 3 6 8 9

第二趟总共进行了2次比较, 排序结果: 2 1 3 6 8 9


第五趟排序:

第一次排序:2和1比较,2大于1,交换位置: 1 2 3 6 8 9

第二趟总共进行了1次比较, 排序结果: 1 2 3 6 8 9


最终结果:1 2 3 6 8 9

java 集成doris java集成是什么意思_递归_33

public static void mppx(int arr[]){
		//临时变量
        int temp = 0;
		//判断我们要排序多少趟
        for (int i = 0; i < arr.length - 1; i++) {
        	//判断一趟比较多少次
            for (int j = 0; j < arr.length -1 -i; j++) {
                if(arr[j]>arr[j+1]){
                    temp = arr[j+1];
                    arr[j+1] = arr[j];
                    arr[j] = temp;
                }
            }
        }
    }

十三、类与对象的创建

面向对象编程的本质就是:以类的方式组织代码,以对象的形式组织(封装)数据

类有属性和方法
类是抽象的需要实例化出来
类通过new实例化出来后会返回一个自己的对象
对象是一个类具体的实例

我们在使用new关键字创建对象的时候,除了分配内存空间之外,还会对创建好的对象进行默认的初始化以及对类中构造器的调用。

java 集成doris java集成是什么意思_递归_34

构造器

使用new关键字,必须要有构造器,因为他本质是在调用构造器

一个类即使什么都不写也会存在一个方法(无参构造)

java 集成doris java集成是什么意思_java 集成doris_35


构造器要求:与类名相同并且没有返回值

构造器的作用:
实例化初始值
new本质在调用构造方法

注意点:有参构造:一旦定义了有参构造,无参就必须显示定义(不然无参构造就不存在)

十四、内存分析(二创建对象内存分析)

java 集成doris java集成是什么意思_递归_36


堆中实例化出来的对象会默认初始化属性的,dog之所以变了是因为默认初始化属性之后又改变了

java 集成doris java集成是什么意思_数组_37

小结类与对象

java 集成doris java集成是什么意思_数组_38


java 集成doris java集成是什么意思_Java_39

十五、内部类

java 集成doris java集成是什么意思_数组_40


1、成员内部类

java 集成doris java集成是什么意思_Java_41


2、静态内部类

但是如果给内部类加上static变成静态内部类之后id就拿不到了,因为加了static会比id更早实例化,除非把上面那个id也改成static

还有一种比较特殊的内部类:(不算在内部类中)
这个也叫做内部类但是他是相当于在这个大的Java文件里面写了两个类,这个只能算public类下面多了一个类,并且这个类不能修饰成public的

一个Java类中可以有多个class,但是只有一个叫public class

java 集成doris java集成是什么意思_数组_42

3、局部内部类(跟局部变量一样,在方法中定义的变量)

java 集成doris java集成是什么意思_数组_43


4、匿名内部类

java 集成doris java集成是什么意思_递归_44