多维数组
定义: n维数组就是元素为n-1维数组的数组
- int[] 数组名 int[][] 数组名
- int 数组名 [] int[] 数组名[]
初始化:
-
1 . 数据类型[][] 数组名 = new 数据类型[m][n];
-
m: 二维数组中一维数组的个数
-
n: 一维数组中的元素个数
-
2. 数据类型[][] 数组名 = new 数据类型[m][];
-
m: 二维数组中一维数组的个数
-
3.数据类型[][] 数组名 = new 数据类型[][]{{元素1,元素2...},{元素1,元素2...},{元素1,元素2...}...};
-
简写: 数据类型[][] 数组名 = {{元素1,元素2...},{元素1,元素2...},{元素1,元素2...}...};// 第一个次定义的时候可以简写
demo 遍历多维数组里面的所有的元素
public class ObjectDemo1 {
public static void main(String[] args) {
int[][] arr = new int[3][3];//{{0,0,0},{0,0,0},{0,0,0}}
arr[1][2] = 100;
System.out.println(arr[1][2]);
int[][] arr2 = new int[4][];
arr2[0] = new int[5];
arr2[1] = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9};
for (int i = 0; i < arr2.length; i++) {
for (int j = 0; j < arr2[i].length; j++) {
System.out.println(arr2[i][j]);
}
}
}
}
面向对象
-
面向过程: 注重事物实现的过程 . 面向过程的语言: C
-
面向对象: 注重事物实现的结果 面向对象的语言:python c++ java scala JS php
面向对象的三个特征: 封装, 继承, 多态 (抽象和类 )
-
类:类是一个模板,它描述一类对象的行为和状态。
-
对象:对象是类的一个实例,有状态和行为
对于事物的描述
特征描述映射到类里面 就是属性 变量
行为描述映射到类里面 就是方法
类里面的6大成员:
成员变量: 定义在类中方法外的变量,不被static修饰的变量叫做成员变量 对象变量
成员方法: 不被static修饰方法叫做成员方法
静态变量: 被static修饰的变量 都是静态变量
静态方法: 被static修饰方法 都是静态方法
局部变量: 定义在方法内部的变量 叫做局部变量 随着方法的调用而初始化 随着方法的消失而消失
构造方法: 方法名和类名一模一样 没有返回值(甚至连void都没有)的方法
** 如何根据类创建对象,格式:**
类名 对象名 = new 类名();
给对象赋值,就相当于是给类中的成员变量赋值:
对象名.成员变量名 = 初始化值;
成员方法的调用需要通过对象调用
对象名.成员方法名();
每次new都是创建了一个新的对象
一个文件内部定义多个类 只有一个类能被public修饰
而且 被public修饰的这个类 一定要跟文件名保持一致
demo:
ackage day07;
public class TeacherTest {
public static void main(String[] args) {
Teacher teacher = new Teacher();
teacher.name = "王";
teacher.age = 23;
teacher.sex = "男";
Teacher teacher1 = new Teacher();
teacher1.name = "胡";
teacher1.age = 21;
teacher1.sex = "男";
Teacher teacher2 = new Teacher();
teacher2.name = "许";
teacher2.age = 20;
teacher2.sex = "女";
teacher.show();
}
}
class Teacher {
String name;
int age;
String sex;
public void show(){
System.out.println("姓名:"+ name + "---性别:"+sex + "---年龄:"+ age);
}
}
成员变量和局部变量:
成员变量: 位于类中方法外 随着对象的创建而创建 随着对象的消失而消失
位于堆内存中 有初始化值 又叫对象变量
局部变量: 位于方法内部 作用范围只在当前方法内 随着方法运行而创建 随着方法的运行完毕而消失
位于栈内存中 进栈和出栈操作
封装
-
封装:
-
- 成员变量私有化: private 权限修饰符: public protected (default) private
-
private: 权限修饰符,私有的,修饰方法和变量, 被private 修饰的方法和变量,只能在本类中访问
-
2.提供一套访问的修改的方法(get方法/set方法) this:区分同名的成员变量和局部变量,this指代的是成员变量
-
封装:只允许本类访问
-
特点:高内聚 低耦合
package day07.demo1;
public class DogDemo {
public static void main(String[] args) {
Dog dog = new Dog();
dog.setName("小白");
dog.setAge(8);
dog.setSex("男");
dog.getAge();
dog.getName();
dog.getSex();
dog.show();
}
}
class Dog {
private String name;
private int age;
private String sex;
public void setName(String dogName) {
name = dogName;
}
public String getName() {
return name;
}
public void setAge(int dogAge) {
if (dogAge <= 0 || dogAge >= 15) {
System.out.println("你输入的年龄不符合狗的寿命");
age = 3;
return;
} else {
age = dogAge;
}
}
public int getAge() {
return age;
}
public void setSex(String dogSex) {
if (dogSex.equals("公狗") || dogSex.equals("母狗")) {
sex = dogSex;
} else {
System.out.println("你输入的性别有误,请重新运行");
sex = "公狗";
return;
}
}
public String getSex() {
return sex;
}
public void show() {
System.out.println("姓名:" + name + "年龄:" + age + "性别:" + sex);
}
}
构造函数
构造方法:
方法名和类名一模一样 但是没有返回值类型 连void都没有的方法 叫做构造方法
构造方法的主要作用就是为了创建对象而使用的
构造方法可以重载:
我们把有参数列表的构造方法叫做有参构造
把没有参数列表的构造方法叫做无参构造
-
刚开始在创建对象的时候 我们没有写构造方法 为什么还能创建对象成功?
因为每个类里面默认的系统都会给定一个无参构造
只要你手动书写了一个构造方法 不管你手动书写的构造方法是无参还是有参
系统默认的那个无参构造都会消失
idea当中快速创建set和get方法的快捷键:
将光标放在类的成员变量上----> alt + Insert ---->选择Getter and Setter---->将要创建的成员变量都选中就可以了
idea 当中快速创建构造函数的方法的快捷键:
将光标放在类的成员变量上----> alt + Insert ---->选择Constructor---->将要创建的成员变量都选中就可以了(一个都不选择创建一个无参构造函数)