Java数组与python列表
学了Java数组之后就感觉和pythond的列表有点像
python
列表不用规定长度,可随意增加元素,随意删除元素,可循环遍历可直接打印
例1–打印遍历
list1 = [1,2,3,4,5,6]
print(list1)#打印列表
for i in list1:
#遍历列表
print(i)
[1, 2, 3, 4, 5, 6]
1
2
3
4
5
6
例2–添加元素
list1 = [1,2,3,4,5,6]
#末尾添加
list1.append([1,2,2])
list1.append(666)
list1.extend([100,200])#多个添加
list1.insert(2,'abc')#索引2处添加
print(list1)
[1, 2, 'abc', 3, 4, 5, 6, [1, 2, 2], 666, 100, 200]
索引取值
list1 = [1,2,3,4,5,6]
print(list1[0],list1[1])
例3–copy和赋值区别
list1 = [1,2,3,4,5,6]#原列表
print(list1)
print(id(list1))
list2 = list1.copy()#复制列表
print(list2)
print(id(list2))
list3 = list1#赋值列表
print(list3)
print(id(list3))
list4 = list1[:] # :是从0到末尾切片的意思,相当于整个列表
print(list4)
print(id(list4))
id是系统生成的,每次运行都不一样.但是赋值的列表每次与原列表都相同
就不一一举例了
具体方法详见网址
Java
定义数组
package com.jingfei.csdn;
public class Array {
public static void main(String[] args) {
//一维数组定义,必须给出大小,并且定义了初始类型,数组类型必须一致.
int arr[] = new int[5];//为初始化时候,默认为0
int[] arr1 = new int[5];
arr[0] = 1;
arr[1] = 2;
//直接初始化值
int arr2[] = {1,2,3,4,5};
int[] arr3 = {1,23,4,5};
//二维数组定义,第一个初值必须给出,第二个数值可给可不给.
//若没给出第二个初值,打印arrr[0],会是null,给了的话,会是一个地址值.
int arrr[][] = new int[5][];
int[][] arrr1 = new int[5][];
int[] arrr2[] = new int[5][];
System.out.println("第二个参数为空时:"+arrr[0]);
int[][] arrr3 =new int[5][3];
System.out.println("第二个参数不为空时:"+arrr3[0]);
//初始化二维数组
int[] a = {1,2,3};//常用
int[] b = {4,5,6};
arrr[0] = a;
arrr[1] = b;
//直接赋值的定义二维数组
int[][] arrr4 = {{1,2,3},{4,5,6},{7,8,9}};//常用
int[] arrr5[] = {{1,2,3},{4,5,6},{7,8,9}};
int arrr6[][] = {{1,2,3},{4,5,6},{7,8,9}};
}
}
第二个参数为空时:null
第二个参数不为空时:[I@1540e19d
内存分配的各个类型数组的初值
类型 | 初值 |
---|---|
byte/short/int/long | 0 |
char | ‘\u0000’ |
float/double | 0.0 |
boolean | false |
引用数据类型 | null |
下面图解
注意: 二维数组中存的为一维数组的地址
程序运行流程图
例1–索引
1月: 31天
2月: 28天
3月: 31天
4月: 30天
5月: 31天
6月: 30天
7月: 31天
8月: 31天
9月: 30天
10月: 31天
11月: 30天
12月: 31天
package com.jingfei.month;
import java.util.Scanner;
public class MonthDemo {
public static void main(String[] args) {
int[] arr = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
Scanner sc = new Scanner(System.in);
System.out.println("请输入要查询的月份1--12,例如一月就输入1");
int mon = sc.nextInt();
int monIndex = mon - 1;//索引与月份相差1
if (monIndex >= 0 && monIndex < arr.length) {
System.out.println(mon+"月有"+arr[monIndex]+"天!");
} else {
System.out.println("输入月份超过范围!");
}
}
}
例2–换值
一.
int[] arr = {11,22,33,44,55};
打印的结果为: [55,44,33,22,11]
package com.jingfei.day05;
public class ReArray1 {
public static void main(String[] args) {
int[] arr = {11, 22, 33, 44, 55};
//打印的结果为: [55,44,33,22,11]
Order(arr);
}
//抽一下方法吧;
private static void Order(int[] arr) {
for (int i = arr.length - 1; i >= 0; i--) {
System.out.print(arr[i] + " ");
}
}
}
二.
[11, 32,55, 47,79,23]
置换后的数组元素为:
[23, 79, 47, 55, 32, 11]
package com.jingfei.day05;
public class ReArray {
public static void main(String[] args) {
//逆置数组
int[] arr = {11,32,55,47,79,23};
int temp = 0; //定义中间变量
for (int i = 0; i <= arr.length / 2; i++) {
temp = arr[i];
arr[i] = arr[arr.length - i - 1];
arr[arr.length - i - 1] = temp;
}
System.out.println("逆序数组为:");
for (int j = 0; j < arr.length; j++) {
System.out.print(arr[j] + " ");
}
}
}
例3–遍历
一.
获取到二维数组中最大的元素,返回该元素的值
package com.jingfei.day05;
public class Max {
public static void main(String[] args) {
//获取数组中的最大值,直接来二位数组
int[][] arr = {{1,2,3},{11,22,33},{10,20,30}};
int result = maxdemo(arr);//调用
System.out.println(result);
}
private static int maxdemo(int[][] arr) {
int max = arr[0][0];
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
max = max>arr[i][j]?max:arr[i][j];
}
}
return max;
}
}
二.
需求:公司年销售额求和
某公司按照季度和月份统计的数据如下:单位(万元)
第一季度:22,66,44
第二季度:77,33,88
第三季度:25,45,65
第四季度:11,66,99
package com.jingfei.csdn;
public class Sum {
public static void main(String[] args) {
int[] a = {22, 66, 44};
int[] b = {77, 33, 88};
int[] c = {25, 45, 65};
int[] d = {11, 66, 99};
int[][] arr = {a, b, c, d};
int sum = 0;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
sum = sum+arr[i][j];
}
}
System.out.println(sum);
}
}
--------------------------------------------
谢谢