Java 基础知识点 笔记总结 (三)

  • 1. eclipse 操作

  • 2. 数组 定义和概述

  • 3. 数组 静态初始化和动态初始化

  • 4. 获取数组长度 和 遍历数组

  • 5. 不同类型数组的默认值

  • 6. 数组的内存解析

  • 7. 多维数组

  • 8. 二维数组获取长度 和 遍历数组

  • 9. 多维数组的默认值

  • 10. 二维数组的内存解析

  • 11. 数组赋值

  • 12. 数组的复制

  • 13. 数组算法 线性查找

  • 14. 数组算法 二分法查找

  • 15.排序 算法的优劣

  • 16. 冒泡排序

  • 17. 快速排序

  • 18. Arrays数组工具类

1. eclipse 操作

===========================================================================


官方下载eclipse.

修改字符集utf8,设置字体格式等。


alt + / 可以自动填充代码。 像下面的都可以直接操作。

  • main => 对应main函数。

  • syso => 对应System.out.println();


导入已有的项目工程

在这里插入图片描述

导入的项目工程,可能会出现乱码情况(字符集问题)。正常情况下,windows系统默认是GBK,这里转为了utf8肯定乱码。因此,我们可以通过notepad++,给他转为utf8格式再导入。

在这里插入图片描述


隐藏关闭项目

在这里插入图片描述


我们在ctrl+鼠标左键,查看源码,可能需要先关联源码(attach source),配置如下:

在这里插入图片描述


设置注释内容,例如:作者,版本,创建时间等等。

在这里插入图片描述

2. 数组 定义和概述

=========================================================================


数组定义:

在这里插入图片描述


数组注意事项:

  • 数组本身是引用数据类型。

  • 数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型。

  • 数组的长度一旦确定,就不能修改了。

在这里插入图片描述

3. 数组 静态初始化和动态初始化

===============================================================================


数组静态初始化如下:

public static void main(String[] args) {

int[] ids;

ids = new int[]{1,2,3,4,5,6};

//静态初始化,就是数组的初始化和数组元素的赋值操作同时进行了。

}


数组动态初始化如下:

public static void main(String[] args) {

String[] str = new String[5];

//动态初始化,数组的初始化和数组元素的赋值操作分开进行

}


在这里插入图片描述

4. 获取数组长度 和 遍历数组

==============================================================================

length获取长度,for循环遍历数组。

public static void main(String[] args) {

String[] str = new String[5];

str[0] = “张三”;

str[1] = “张四”;

str[2] = “张五”;

str[3] = “张六”;

str[4] = “张七”;

// 获取第二个字符

System.out.println(str[0].charAt(1));

// 获取长度

System.out.println(str.length);

// 遍历数组

for(int i=0;i<str.length;i++) {

System.out.println(str[i]);

}

}

//三

//5

//张三

//张四

//张五

//张六

//张七

5. 不同类型数组的默认值

===========================================================================

public static void main(String[] args) {

//int型数组默认为0

int[] in = new int[5];

for(int i=0;i<in.length;i++) {

System.out.print(in[i]);

}

System.out.println();

System.out.println(“******************”);

//short型数组默认为0

short[] sh = new short[5];

for(int i=0;i<sh.length;i++) {

System.out.print(sh[i]);

}

System.out.println();

System.out.println(“******************”);

//float型数组默认为0.0

float[] fl = new float[5];

for(int i=0;i<fl.length;i++) {

System.out.print(fl[i]);

}

System.out.println();

System.out.println(“******************”);

//char型数组默认为0或’\u0000’ ,而非’0’ ,这里默认不显示的!!

char[] ch = new char[5];

for(int i=0;i<ch.length;i++) {

System.out.print(“----”+ch[i]+"---- ");

}

if(ch[3] == 0)

System.out.println(“验证是否等于0,是!!”);

System.out.println(“******************”);

//boolean类型数组默认是false

boolean[] bool = new boolean[5];

for(int i=0;i<bool.length;i++) {

System.out.print(bool[i]+" ");

}

System.out.println();

System.out.println(“******************”);

//String类型数组默认为null

String[] str = new String[5];

for(int i=0;i<str.length;i++) {

System.out.print(str[i]+" ");

}

System.out.println();

System.out.println(“******************”);

}

6. 数组的内存解析

========================================================================

在这里插入图片描述

7. 多维数组

=====================================================================

多维数组,从数组底层的运行机制来看,其实没有多维数组。

多维数组很简单,就是一层一层套。

像二维数组,就可以简单分为外层数据元素和内层数组元素。

public static void main(String[] args) {

//二维数组的静态初始化

int[][] arr = new int[][] {{1,2,3},{4,5},{7,8}};

//二维数组的动态数组化

String[][] arr1 = new String[3][2];

String[][] arr2 = new String[3][];

//这里注意,前面的数字3必须写,后面可以不用写,这就可以当成一个一维数组来看。

//String[][] arr3 = new String[][3]; //这就是错误的!!!!

}

8. 二维数组获取长度 和 遍历数组

================================================================================

public static void main(String[] args) {

//二维数组的静态初始化

int[][] arr = new int[][] {{1,2,3},{4,5},{7,8}};

//对于arr而言,length 其实就是查看里面有几个数组

System.out.println(arr.length); // 3

//对于arr[1]而言,length就是查看第二个数组arr[1]的长度为多少

System.out.println(arr[1].length); //2

System.out.println(“***********”);

//遍历二维数组

for(int i=0;i<arr.length;i++) {

for(int j=0;j<arr[i].length;j++) {

System.out.print(arr[i][j] + “,”);

}

System.out.println();

}

}

// 3

// 2

// ***********

// 1,2,3,

// 4,5,

// 7,8,

9. 多维数组的默认值

=========================================================================

其实和上面的数组默认值是一样的。只不过这里注意的是像arr[0],这是返回的地址!!!

public static void main(String[] args) {

int[][] arr = new int[4][3];

//arr[0]的默认值是一个地址

System.out.println(arr[0]); //[I@7d6f77cc , 这里解释一下I,意思就是int型!

//int型的arr[0][0]的默认值为0

System.out.println(arr[0][0]); // 0

//像这种没有列只有行的,就是null了

double[][] arr = new double[4][];

System.out.println(arr[0]); //null

}

10. 二维数组的内存解析

===========================================================================

其实就是一个arr1总地址,arr1[0]保存arr1[0]数组的地址信息,一次类推。

在这里插入图片描述


此外数组的写法还有一下几种形式:

在这里插入图片描述

11. 数组赋值

======================================================================

对于赋值而言,array2并不是复制了一份array1,而仅仅指向了和array1相同的地址而已!!

public static void main(String[] args) {

int array1[][] = new int[][] {{1,2,3},{4,5},{6}};

int[][] array2;

array2 = array1;

//array2并不是复制了一份array1,而仅仅指向了和array1相同的地址而已!!

//这一点要记住!!!

}

12. 数组的复制

=======================================================================


使用for循环来进行复制!!!

public static void main(String[] args) {

String array1[][] = new String[][] {{“aa”,“bb”,“cc”}};

String[][] array2 = new String[array1.length][];

//复制array2

for(int i=0;i<array1.length;i++) {

array2[i] = array1[i];

}

//遍历array2

for(int i=0;i<array2.length;i++) {

for(int j=0;j<array2[i].length;j++) {

System.out.print(array2[i][j]+" ");

}

}

}

13. 数组算法 线性查找

总目录展示

该笔记共八个节点(由浅入深),分为三大模块。

高性能。 秒杀涉及大量的并发读和并发写,因此支持高并发访问这点非常关键。该笔记将从设计数据的动静分离方案、热点的发现与隔离、请求的削峰与分层过滤、服务端的极致优化这4个方面重点介绍。

一致性。 秒杀中商品减库存的实现方式同样关键。可想而知,有限数量的商品在同一时刻被很多倍的请求同时来减库存,减库存又分为“拍下减库存”“付款减库存”以及预扣等几种,在大并发更新的过程中都要保证数据的准确性,其难度可想而知。因此,将用一个节点来专门讲解如何设计秒杀减库存方案。

高可用。 虽然介绍了很多极致的优化思路,但现实中总难免出现一些我们考虑不到的情况,所以要保证系统的高可用和正确性,还要设计一个PlanB来兜底,以便在最坏情况发生时仍然能够从容应对。笔记的最后,将带你思考可以从哪些环节来设计兜底方案。


篇幅有限,无法一个模块一个模块详细的展示(这些要点都收集在了这份《高并发秒杀顶级教程》里),麻烦各位转发一下(可以帮助更多的人看到哟!)

由于内容太多,这里只截取部分的内容。

了解详情https://docs.qq.com/doc/DSmxTbFJ1cmN1R2dB
);

}

}

}

13. 数组算法 线性查找

总目录展示

该笔记共八个节点(由浅入深),分为三大模块。

高性能。 秒杀涉及大量的并发读和并发写,因此支持高并发访问这点非常关键。该笔记将从设计数据的动静分离方案、热点的发现与隔离、请求的削峰与分层过滤、服务端的极致优化这4个方面重点介绍。

一致性。 秒杀中商品减库存的实现方式同样关键。可想而知,有限数量的商品在同一时刻被很多倍的请求同时来减库存,减库存又分为“拍下减库存”“付款减库存”以及预扣等几种,在大并发更新的过程中都要保证数据的准确性,其难度可想而知。因此,将用一个节点来专门讲解如何设计秒杀减库存方案。

高可用。 虽然介绍了很多极致的优化思路,但现实中总难免出现一些我们考虑不到的情况,所以要保证系统的高可用和正确性,还要设计一个PlanB来兜底,以便在最坏情况发生时仍然能够从容应对。笔记的最后,将带你思考可以从哪些环节来设计兜底方案。


篇幅有限,无法一个模块一个模块详细的展示(这些要点都收集在了这份《高并发秒杀顶级教程》里),麻烦各位转发一下(可以帮助更多的人看到哟!)

[外链图片转存中…(img-mjKv1ThR-1724304415239)]

[外链图片转存中…(img-FY9r0ege-1724304415240)]

由于内容太多,这里只截取部分的内容。

了解详情https://docs.qq.com/doc/DSmxTbFJ1cmN1R2dB

  • 18
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值