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

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. 数组算法 线性查找

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

线性查找就是从头到尾查找一边。

public static void main(String[] args) {

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

String str = “bb”;

boolean isFlag = true;

//线性查找就是从头到尾的查找方式

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

if(str.equals(arr[i])) {

System.out.println(“找到了指定的元素,位置为:”+i);

isFlag = false;

break;

}

}

if(isFlag) {

System.out.println(“未查询到!!”);

}

}

14. 数组算法 二分法查找

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

二分法查找有一个前提,就是所要查找的数组必须有序(从小到大)。

public static void main(String[] args) {

//二分法查找:

//二分法查找一定一有序的数组!!

int[] arr = new int[] {-100,10,15,16,24,56,3333};

int dest = 24;

int head = 0;

int end = arr.length -1;

boolean isFlag = true;

while(head <= end) {

int middle = (head + end)/2;

if(dest == arr[middle]) {

System.out.println(“找到指定元素,位置为:”+ middle);

isFlag = false;

break;

}else if(arr[middle] > dest) {

end = middle - 1;

}else {

head = middle + 1;

}

}

if(isFlag) {

System.out.println(“该数组未查询到!!!”);

}

}

15.排序 算法的优劣

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

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

16. 冒泡排序

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

在这里插入图片描述

在这里插入图片描述

public static void main(String[] args) {

//冒泡排序

int[] arr = new int[] {43,32,76,-10,0,-123,40,22,98,-98};

//外层for循环是保证几轮,开始就从头到尾,把最大的数放到最后,下次在进行就不用再看最后一个最大的数了。

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

//内层for循环负责交换

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

if(arr[j] > arr[j+1]) {

int temp = arr[j];

arr[j] = arr[j+1];

arr[j+1] = temp;

}

}

}

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

System.out.print(arr[i]+“\t”);

}

}

17. 快速排序

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

在这里插入图片描述

18. Arrays数组工具类

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

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值