使用IDEA学JAVA第三天

今天是寒假学JAVA第三天,主要学习了数组和面向对象的知识。

一、数组和面向对象

1.一维数组

  • 变量:在java程序中,当需要存储单个数据内容时,需要声明一个变量,声明变量的本质就是在内存空间中申请一块存储单元
  • 概念:在java程序中,当需要存储多个数据类型相同的内容时,则需要声明一个数组。声明数组的本质,就是在内存中申请一段连续的存储单元。
  • 数组中的名词:
  • 声明变量:数据类型 变量名=初始值;
  • 数组名:数组中变量的名称
  • 数组的长度:数组名.length;
  • 数组中的元素:数组当中值
  • 数组角标(下标):数组的下标从0开始, ArraylndexOutOfBoundException 数组下标越界异常
  • 声明数组的格式:
    数据类型[]数组名=new数据类型[数组的长度];
    例如:定义一个长度为3的int类型的一维数组
    int[]arr =new int[3];//动态的定义数组【推荐】
    int[]arr1= new int;//静态的定义数组
  • 数组的初始化:
    注意:在数组声明时,如果不给数组直接赋值,那么,byte/short/int/long/的默认值为0,float和double的默认值为0.0,特别需要注意的是布尔类型的默认值为false;
    char 的默认值?//0或者\u0000【Unicode编码】
  • 练习:双色球案例
    共7个号码,其中红球6个,范围1-33,蓝球1个范围是1-17
public class DoubleColorBall {
    public static void main(String[] args) {
        //声明一个int类型,长度为7的一维数组,动态
        int[] arr = new int[7];
        //创建一个随机数对象
        Random random = new Random();
        //开始摇号(向数组中去添加值),需要先摇6红球 范围1~33
        for (int i = 0; i < arr.length; i++) {
            //红球
            arr[i] = random.nextInt(33)+1;
            //去重
            for (int j = i-1; j >= 0; j--){
                //表示号码重复了,j--的目的是把每一个新产生的球i都能与他前面的球不相同。
                if (arr[i] == arr[j]){
                    //若重复,需重新摇号
                    i--;
                    break;
                }
            }
        }
        //篮球
        arr[arr.length-1] = random.nextInt(17)+1;
        //将数组中的双色球遍历
        System.out.println("本期中奖结果:");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }

    }
}

2、面向对象

什么是对象?“万事万物皆对象”
什么是面向对象?
面向对象的本质就是分析事物的特征(名词)和行为(动词)
什么是面向对象编程?
先用面向对象的思想进行分析,再用面向对象的语言进行翻译的过程

类、对象、引用的基本概念

  • 对象:在java中,对象是指客观存在的实体
  • 语法格式:
    new 引用数据类型();
  • 案例:
    new Person(); //表示创建一个Person类型的对象
  • 类:简单来说类就是"分类",是指具有相同特征和行为的多个事物共性的抽象,在java中表现为一种引用数据类型,其中
    包含描述特征的成员变量和描述行为的成员方法;
  • 语法格式:
    [权限修饰符] class 类名(
  • 类体:
    注意:通常情况下,类名的首字母要大写,当类名由多个单词构成时,每个单词的首字母都要大写:【驼峰命名法】
    成员变量(特征、属性)
  • 语法格式:
    【权限修饰符】 数据类型 成员变量名 =成员变量值:
    其中等号和成员变量值可以省略,通常情况下都省略,分号不可以省略:
    案例:
    int age= 3;
    private String name;
  • 注意:通常情况下,成员变量名的首字母要小写,当成员变量名由多个单词构成时,从第二个单词开始,首字母要大写:
  • 引用:引用类型的成员变量名,简称"引用"
  • 语法格式:引用数据类型 引用变量名= new 引用数据类型();
    案例:
    Personp=new Person();
    引用的使用方法:引用名,成员变量名=成员变量值:
  • 注意:当一个类被定义完毕后,可以使用new关键字来创建该类的对象,这个过程被称为类的实例化。
  • 类是对象的抽象,对象是类的实现。
    案例:定义一个坐标类,特征有,横坐标x和纵坐标y,
    练习1:自定义Phone类,特征有:品牌和价格,行为有:打印品牌和价格的方法。要求在main()方法声明Phone类型的引用指向Phone类型的对象并打印特征:将品牌和价格修改为"Nokia"和598后再次打印。
public class Phone {
    String brand;
    double price;

    public void show() {
        System.out.println("品牌:" + brand + ",价格:" + price);
    }

    public static void main(String[] args) {
        Phone p = new Phone();
        p.show();
        p.brand = "Nokia";
        p.price = 598.5;
        p.show();
    }
}

成员方法(行为)

  • 语法格式:
    [权限修饰符]返回值类型成员方法名(形参数据类型1形参变量名1,……,形参数据类型n形参变量名n)(方法体;
  • 返回值:是指从方法体内向方法体外返回的数据内容
    返回值类型:返回值的数据类型
  • 案例:
    要返回66,返回值类型为int
    要返回3.14,返回值类型为double
    要返回"嘿嘿",返回值类型为String
    要返回true或者false,返回值类型为boolean
    要返回数据内容,可以使用return关键字,将其返回并结束方法体。
  • 注意:通常情况下,方法名的首字母要小写,方法名由多个单词构成时,从第二个单词开始,首字母要大写
  • 形参列表
    形式参数:是指从方法体外向方法体内,传递数据内容
    形参列表:形式参数可以有多个
  • 语法格式:成员方法名(形参数据类型1形参变量名1,……,形参数据类型n形参变量名n)
  • 注意:如果一个方法不需要返回任何内容,那么返回值就写void,如果一个方法不需要传入任何内容则形参列表啥也不写。

成员方法体

  • 方法体本质上就是用来述该方法的功能;
  • 方法的调用
    语法格式:引用变量名.方法名(实参列表);
  • 注意:实参就是对形参进行初始化操作,所以实参列表的类型,顺序,个数,必须和形参列表保持一致
  • 方法调用的本质就是找到方法名,然后跳转到方法中,当方法体执行完毕后再跳转回来。
  • 案例:
    练习1:编程实现Girl类的定义,特征有:姓名、年龄、是否有男朋友bf,行为有:打印所有特征的方法,要求在main方法中声明Girl类型的引用指向Girl类型的对象并打印特征,然后修改特征为"貂蝉"、18以及true。
public class Girl {
    String name;
    int age;
    boolean bf;

    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 boolean isBf() {
        return bf;
    }
    public void setBf(boolean bf) {
        this.bf = bf;
    }

    public void show() {
        System.out.println("姓名:" + name + ",年龄:" + age + "," + "男朋友:" + bf);
    }

    public static void main(String[] args) {
        Girl g = new Girl();
        g.show();
        g.name = "貂蝉";
        g.age = 18;
        g.bf = true;
        g.show();
    }
}

构造方法和方法重载

  • 语法格式:
    [权限修饰符]构造方法名【类名】(形参列表)(
    构造方法体
    案例:
public class Person{
String name;
int age;
public Person(00 //无参构造方法
public Person(String name, int age){} //全参构造方法
}
  • 注意事项
    a.构造方法名与类名完全相同,并且没有返回值类型,连void都不许有;
    b.当使用new关键字创建对象时会自动调用构造方法来实现成员变量的初始化工作;
  • 默认构造方法
    a.当一个类中没有定义任何构造方法时,编译器会自动添加一个无参空构造方法,叫做默认/缺省构造方法,如:Person((}
    b.若类中出现了构造方法,则编译器不再提供任何形式的构造方法。
  • 方法重载
    (1)基本概念在Java语言中若方法的名称相同,但参数列表不同,这样的方法之间构成重载关系(Overload).
    (2)体现形式方法重载的主要形式体现在:参数的个数不同、参数的类型不同、参数的顺序不同,与返回值类型和形参变量名无关,但建议返回值类型最好相同。
    判断方法能否构成重载的核心:调用方法时能否加以区分。
    (3)实际意义 方法重载的实际意义在于调用者只需要记住一个方法名就可以调用各种不同的版本,来实现各种不同的功能。
  • 综合练习:创建一个圆Circle类。为该类提供一个变量r表示半径,一个常量PI表示圆周率;同时为该类提供两个方法:方法一用于求圆的面积,方法二用于求圆的周长;为该类提供一个构造方法,用于初始化r的值为4。在main方法中测试。
/**
 * ClassName: Circle
 * Package: PACKAGE_NAME
 * Description:
 *
 * @Author 微笑向阳
 * @Create 2024/1/24 16:26
 * @Version 1.0
 */
public class Circle {
    double r;
    final double PI = 3.1415926;

    public Circle(double r) {
        this.r = r;
    }

    public double area() {
        return PI*r*r;
    }

    public double getR() {
        return r;
    }

    public void setR(double r) {
        this.r = r;
    }

    public double perimeter() {
        return PI*r*2;
    }

    public static void main(String[] args) {
        Circle c = new Circle(4);
        System.out.println("圆的面积为:" + c.area() + "圆的周长为:" + c.perimeter());
    }
}

总结

今天看到了这样一段话深受启发,“学知识,就像怀孕,积累久了,总会显露出来(doge)”,哈哈,开个玩笑,总之从今天开始我找到了自己编程的学习路线,希望我可以坚持下去,加油!!!

  • 39
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微笑向阳~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值