二维数组
初始化遍历和默认初始值
二维数组其实和一维数组差不多,二维数组外层是索引(好像不太对,不过我就是这样理解的),就是在堆空间里开辟了对应的空间,之后对应的空间又开辟了空间存储内容。
二维数组的初始化:数据类型[][] 变量名 = {{数据},{数据}};
public class index {
public static void main(String[] args) {
int[][] arr = {{1,2,3},{4,5,6}};
}
}
遍历:
public class index {
public static void main(String[] args) {
int[][] arr = {{1,2,3},{4,5,6}};
//外层循环,有几对数组就循环几次
for (int i = 0; i < arr.length; i++) {
//内层循环得到没对数组里面的内容
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + " ");
}
}
//结果为1 2 3 4 5 6
}
}
二维数组的动态初始化:
public class index {
public static void main(String[] args) {
int[][] arr = new int[2][3];
}
这里定义了两对数组,每对存储3个数据。这时候因为没有赋值,数据类型为int所以和一维数组一样,如果进行遍历会输出默认值为0,但是如果内层没写的话,遍历输出就会报错,没有默认值,因为空间没开辟会爆NullPointerException的异常。但是,如果访问外层会输出null,这是因为外层开辟了空间,但是没有数据,数组又是引用数据类型所以为null。
二维数组练习
杨辉三角:
public class index {
public static void main(String[] args) {
//初始化数组
int[][] arr = new int[10][];
for (int i = 0; i < arr.length; i++) {
//内层的每个数组的初始化
arr[i] = new int[i + 1];
//每一行第一个为1
arr[i][0] = 1;
//每一行最后一个为1
arr[i][arr[i].length - 1] = 1;
}
//从每行的第二个元素开始
for (int i = 0; i < arr.length; i++) {
for (int i1 = 1; i1 < arr[i].length - 1; i1++) {
arr[i][i1] = arr[i - 1][i1 - 1] + arr[i - 1][i1];
}
}
//遍历数组
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();
}
}
}
面向对象
如何定义类对象格式:
class Person {
String name;
int age;
char gender;
public void show(){
System.out.println("吃饭");
}
}
这就是一个简单的Person类对象,里面描述了名字,年龄,性别,行为。
在定义一个类时,里面包括着属性和方法(行为),一般属性是对类的大致描述,方法是类做出的行为。
在使用对象时的步骤:
(1)创建类对象,初始化属性和方法
(2)实例化对象
(3)通过对象.属性或者对象.方法实现目标需求
局部变量和全局变量
定义在类中方法外的对象叫做全局变量,全局变量在该类中的任何地方都可以访问。局部变量是定义在方法中的变量,方法外不可访问使用。那么什么是方法呢,方法就是对类的行为的描述。
方法
格式为:权限修饰符 有无返回值 方法名(){方法体};
例如:
class Person {
String name;
int age;
char gender;
public void show(){
System.out.println(gender);
}
}
public class Test {
public static void main(String[] args) {
//实例化
Person p = new Person();
//赋值
p.name = "小飞";
p.age = 10;
p.gender = '男';
//访问
System.out.println(p.name);
System.out.println(p.age);
//调用方法
p.show();
}
}
这里先了解一下权限修饰符:private,缺省,protected,public
方法是可以带参数的:方法内的参数为形式参数,调用传过来的参数为实际参数。
例如:
class Person {
String name;
int age;
char gender;
public void show(){
System.out.println(gender);
}
public void age(int newAge){
age = newAge;
}
}
public class Test {
public static void main(String[] args) {
//实例化
Person p = new Person();
//赋值
p.name = "小飞";
p.age = 10;
p.gender = '男';
//访问
System.out.println(p.name);
System.out.println(p.age);
//调用方法
p.show();
p.age(19);
//输出为19
System.out.println(p.age);
}
}
注意:传入的实际参数的数据类型要和形式参数的数据类型保持一致。
可以在一个方法里面调用另外一个方法,因为方法是在实例化时就存储在方法区里面的,用了就调,不用就不调,没有顺序一说。
方法分为有返回值的和无返回值的,上面的方法都是没有返回值的,在我们需要使用方法内处理的数据时,就要使用带返回值的方法,用return 返回值,注意return后面数据的数据类型要和返回值的数据类型一致。
例如:
class Person {
String name;
int age;
char gender;
public int age(int newAge){
age = newAge;
return age;
}
}
public class Test {
public static void main(String[] args) {
//实例化
Person p = new Person();
//调用方法age,传入年龄并接受返回值
int age = p.age(18);
//打印返回值
System.out.println(age);
}
}