JAVA程序开发学习日志—DAY05—2022/07/11

目录

二维数组

一、二维数组的声明

二、二维数组的遍历

面向对象

一、对象概述

二、类的定义

三、对象的使用

四、成员变量和局部变量的区别

五、this关键字

六、构造方法

扩展知识

二维数组

数组里存储的元素是数组

一、二维数组的声明

  1. 数据类型[][] 数组名=new 数据类型[一维数组的个数(行)][一维数组长度(列)];

  2. 数据类型[][] 数组名=new 数据类型[一维数组的个数(行)][];

  3. 数据类型[][] 数组名=new 数据类型[][]{{元素1,元素2},{元素3},{元素4,元素5}};

  4. 数据类型[][] 数组名 = {{元素1,元素2},{元素3},{元素4,元素5}};

//格式一
int[][] arr1 = new int[3][2];
arr1[0][0] = 12;
System.out.println(arr1[0]);//打印的是地址:[I@1b6d3586
System.out.println(arr1[0][0]);//12
//格式2
double[][] arr2 = new double[3][];
System.out.println(arr2[0]);//null
arr2[0] = new double[2];
arr2[1] = new double[3];
arr2[2] = new double[4];
System.out.println(arr2[0]);//打印的是地址:[D@4554617c
//格式3
String[][] arr3 = new String[][]{{"hello","world"},{"!!"},{"Java"}};
//格式4
String[][] arr4 = {{"hello","world"},{"!!"},{"Java"}};

二、二维数组的遍历

//二维数组的遍历
for (int i = 0; i < arr3.length; i++) {
    //得到二维数组每个一维数组
    String[] s = arr3[i];
    System.out.println(Arrays.toString(arr3[i]));
    //遍历每个一维数组
    for (int j = 0; j < s.length; j++) {
        System.out.println(s[j]);
    }
}
System.out.println("===========");
for (String[] s : arr4){
    for (String str : s ){
        System.out.println(str);
    }
}

面向对象

一、对象概述

  1. 对象

    万物皆对象,客观存在的事物都是对象。大到地球,小到每个动物、交通工具、电子产品等。

    简单理解:对象是具体存在的看得见摸得着事物。

  2. 类是对现实生活中的一类具有共同属性和行为的事物的抽象,是具有相同属性和行为的一组对象的集合。

    简单理解:类就是对现实事物的一种描述,类中声明有对象的属性和对象的行为。 (描述对象是什么样的)

  3. 对象的属性

    属性:对象具有的各种特征,每个对象的每个属性都拥有特定的值。

    比如:名称,价格,内存就是手机的属性。 人:名字,年龄,性别

    手机的名称:iphone18

    手机的价格:9.9

    手机的内存:1024GB

  4. 对象行为

    行为:对象能够干什么。

    比如手机可以打电话,照相。 人:吃饭,睡觉,学习
     

    类(class)属性行为对象(具体的事物)
    名字、年龄、性别吃饭、睡觉、打豆豆一无所有的我、不知妻美的刘强东
    手机品牌、型号、内存打电话、玩游戏、学习华为P50、OPPO Find X、小米12
    动物品种、性别、毛色捕食、睡觉、繁殖二哈、金毛

    总结:

    可以把类看做成一张图纸,对象就是通过图纸造出来的具体事物,对象是什么样能做什么,取决于类是如何去设计定义的。

二、类的定义

类是由属性和行为组成。

属性:在类中通过成员变量来体现。(声明在类中方法外的变量)

行为:在类中通过成员方法来体现。(不用static修饰的方法)

例如:创建一个手机类

手机的属性:品牌,价格

手机的行为:打电话,刷视频

例如:

public class 手机{

成员属性;

成员行为;

}

public class Phone {
    //描述手机的属性(成员变量),声明在类中方法外,在创建对象时才被加载
    String name;//手机名称
    double price;//手机价格
    int storage;//内存
    //描述手机的行为(成员方法),不用static修饰的方法。名称:满足驼峰法,动宾结构
    //打游戏
    public void playGame(){
        System.out.println("打游戏");
    }
    //打电话
    public void call(){
        System.out.println("打电话");
    }
}

三、对象的使用

1.创建对象(实例化)

格式:类名 对象名=new 类名();

范例:Phone p=new Phone(): //相当于造出了一个具体的手机

Phone p = new Phone();//实例化

2.使用对象

对象名.属性名=值;

对象名.成员方法名();

//设置属性值,引用.成员变量名=值
p.name = "苹果";//赋值
p.price = 99.9;
p.storage = 128;
//成员变量的访问,格式:引用.成员变量名
System.out.println(p.name);
System.out.println(p.price);
System.out.println(p.storage);
//成员方法的访问,格式:引用.成员方法名
p.playGame();
p.call();

四、成员变量和局部变量的区别

  • 成员变量:定义在类中,方法外的变量
  • 局部变量:在类的方法中定义的变量
区别成员变量局部变量
代码中位置类中方法外类中方法内
内存中位置堆内存栈内存
生命周期不同随对象存在而存在,随对象消失而消失随方法调用而存在,方法执行完消失
初始化值不同有默认的初始化值没有默认值,使用前必须初始化

五、this关键字

  1. 1. 表示当前对象的引用
  2. 2. 当局部变量名和成员变量名一样时,使用this可以区别局部变量和成员变量
  3. 3. 方法被哪个对象调用,this就指代的是哪个对象。
  4. 4. 在成员方法中,可以使用this.方法名调用其它的成员方法
public class People {
    public String name;
    public Integer age;

    public void eat(){
   	    String name = "李四";
    	this.play();//18岁的菜菜在玩耍
    	System.out.println(age+"岁的"+name+"在吃饭");//18岁的李四在吃饭
}
	public void play(){
    	String name = "李四";
    	System.out.println(age+"岁的"+this.name+"在玩耍");//18岁的菜菜在玩耍
}
public class TestPeople {
    public static void main(String[] args) {
        //创建了一个People对象,并初始化属性值
        People p = new People();
        p.name = "菜菜";
        p.age = 18;
        p.eat();
        p.play();
    }
}

六、构造方法

  1. 1.在创建对象时会自动调用构造方法
  2. 2.如果没有定义构造方法,系统将给出一个默认的无参构造方法(看不见的)。
  3. 3.如果定义了构造方法,系统将不再提供默认的构造方法,默认的无参构造方法将会被覆盖
  4. 4.可以使用方法的重载去声明有参或者无参的多个构造方法。
  5. 5.在构造函数中可以使用this(参数列表)调用另一个构造函数。
  6. 注:this() 必须放在第一行
public class Animal {

    String name;//名字
    String gender;//性别
    int age;//年龄

    public void eat(){
        System.out.println("吃饭");
    }
    public void  sleep(){
        System.out.println("睡觉");
    }

    public Animal(){
        this("张三");//调用了有参构造方法。该句必须在第一行
        System.out.println("调用了无参构造方法");
        //this("张三");//报错
    }
    public Animal(String name){
        System.out.println("调用了有参:" + name);//调用了有参:张三
    }
    public Animal(String name, int age,String gender){
        this.name = name;
        this.age = age;
        this.gender = gender;
    }
}
public class TestAnimal {
    public static void main(String[] args) {
        //创建Animal对象,默认调用了无参构造方法
        Animal a = new Animal();//调用无参构造器
        Animal a2 = new Animal("猫猫",5,"公");//调用有三个参数的构造器
        System.out.println(a2.name+a2.gender+a2.age);//猫猫公5
    }
}

扩展知识

  • next 与 nextLine
  • next 不接收空格,遇见空格时结束读取
  • nextLine 接收空格
  • 调用next方法时,通过控制台输入字符串,使用enter键('\n')结束
  • 在next方法下,使用nextLine方法时,该方法会识别enter('\n'),所以会自动结束,不会生效
Scanner scan = new Scanner(System.in);

String str1 = scan.next();
String str2 = scan.nextLine();

System.out.println(str1);
System.out.println(str2);

Scanner scan = new Scanner(System.in);

String str1 = scan.next();
String str2 = scan.next();

System.out.println(str1);
System.out.println(str2);

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值