JAVA数组,类与对象
一、一维数组
1、数组概念
数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。
数组既可以存储基本数据类型,也可以存储引用数据类型(后面讲解)。
2、数组定义格式
格式1: 数据类型[] 数组名;
格式2: 数据类型 数组名[];
3、数组的初始化
(1)、什么是数组的初始化
Java中的数组必须先初始化,然后才能使用。
所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值。
(2)、初始化的分类:
a:动态初始化: 只指定长度,由系统给出初始化值
b:静态初始化: 给出初始化值,由系统决定长度
注意事项: 这两种方式,只能使用一种,不能进行动静结合
(3)、动态初始化的格式:
数据类型[] 数组名 = new 数据类型[数组长度];
数组长度其实就是数组中元素的个数。
(4)、静态初始化格式
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};
举例: int[] arr = new int[]{1,2,3};
简化格式:
数据类型[] 数组名 = {元素1,元素2,…};
举例: int[] arr = {1,2,3};
(5)、例题
数组元素对调:
public class Shuzu2 {
public static void main(String[] args) {
int []arr={2,6,4,5,9,8};
for (int i = 0; i < arr.length/2; i++) {
int a=arr[i];
arr[i]=arr[arr.length-i-1];
arr[arr.length-i-1]=a;
}
for (int j = 0; j < arr.length; j++) {
System.out.println(arr[j]);
}
}
}
二、二维数组
1、二维数组格式1
数据类型[][] 变量名 = new 数据类型[m][n];
m表示这个二维数组有多少个一维数组 必须写上
n表示每一个一维数组的元素个数 可选
二维数组格式2
数据类型[][] 变量名 = new 数据类型[m][];
m表示这个二维数组有多少个一维数组
这一次没有直接给出一维数组的元素个数,可以动态的给出。
二维数组格式3
数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…}...};
简化版:
数据类型[][] 变量名 = {{元素…},{元素…},{元素…}};
这个格式属于静态初始化:由我们指定具体的元素值,由系统给分配长度
2、二维数组的遍历
public class Twoshuzu {
public static void main(String[] args) {
int [][] arr={{1,3},{2,4,5}};
for (int i=0;i<arr.length;i++){
for (int j = 0; j < arr[i].length; j++) {
System.out.println(arr[i][j]);
}
}
}
}
需求:公司年销售额求和
某公司按照季度和月份统计的数据如下:单位(万元)
第一季度:22,66,44
第二季度:77,33,88
第三季度:25,45,65
第四季度:11,66,99
public class Twoshuzu1 {
public static void main(String[] args) {
int [][]arr=new int [4][3];
arr[0]=new int[]{22,66,44};
arr[1]=new int[]{77,33,88};
arr[2]=new int[]{25,45,65};
arr[3]=new int[]{11,66,99};
int sum=0;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
sum+=arr[i][j];
}
}
System.out.println("总销售额是:"+sum+"万元");
}
}
三、类与对象
1、类和对象的概念
a:类:是一组相关的属性和行为的集合
b:对象:是该类事物的具体体现
举例:运动员是一个类,刘翔,苏炳添各是类里的对象。
2、学生类的创建
public class Student {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
调用这个类:
public class Mytest {
public static void main(String[] args) {
Student student=new Student();
student.setName("李明");
student.setAge(22);
String name=student.getName();
int age=student.getAge();
System.out.println(name);
System.out.println(age);
}
}
3、成员变量与局部变量
(1)、在类中的位置不同
成员变量:在类中方法外
局部变量:在方法定义中或者方法声明上
(2)、在内存中的位置不同
成员变量:在堆内存
局部变量:在栈内存
(3)、生命周期不同
成员变量:随着对象的创建而存在,随着对象的消失而消失
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
(4)、初始化值不同
成员变量:有默认初始化值
局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。
注意事项:: 局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。
4、this关键字与对象的封装(即private关键字的使用)
(1)、this关键字可以理解为当前类的一个对象,谁调用它它就是谁,就是个为了防止局部变量与成员变量名字相同。
(2)、封装指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
封装好处:
隐藏实现细节,提供公共的访问方式
提高了代码的复用性
提高安全性。
private关键字特点
a:是一个权限修饰符
b:可以修饰成员变量和成员方法
c:被其修饰的成员只能在本类中被访问