实训三之JAVA基础篇(初识面向对象)

1.一维数组


变量:在java程序中,当需要存储单个数据内容时,需要声明一个变量,声明变量的本质就是在内存空间中申请一块存储单元


概念:在java程序中,当需要存储多个数据类型相同的内容时,则需要声明一个数组。声明数组的本质,就是在内存中申请一段连续的存储单元.


数组中的名词:
声明变量:                   数据类型变量名 =初始值
数组名:                       数组中变量的名称
数组的长度:                数组名.length
数组中的元素:            数组当中值


数组角标(下标): 数组的下标从0开始

ArrayIndexOutOfBoundException 数组下标越界异常

声明数组的格式
数据类型[] 数组名 = new 数据类型[ 数组的长度]

例如: 定义一个长度为3的int类型的一维数组        int[] arr = new int[3]: //动态的定义数组 [推荐]                                                                                     int[] arr1 = new int[](1.2,3)://静态的定义数组

数组的初始化:                                           
                                                                                                                                                             注意:在数组声明时,如果不给数组直接赋值,那么,byte/short/int/long/的默认值为0                               float和double的默认值为0.0,特别需要注意的是布尔类型的默认值为false;
         char 的默认值=====>0 或者u0000[Unicode编码]

双色球中奖实例应用

​
import java.util.Random;

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 - 1; i++){
            //红球
            arr[i] = random.nextInt(33) + 1;
        }
        //蓝球
        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.成员方法(行为)


语法格式:


[权限修饰符] 返回值类型 成员方法名(形参数据类型4 形参变量名1....,形参数据类型n 形参变量名n)方法体;


构造方法
静态方法
普通方法


3.返回值类型


返回值:        是指从方法体内向方法体外返回的数据内容                                                                    返回值类型:         返回值的数据类型


案例:
要返回66,返回值类型为 int
要返回3.14,返回值类型为 double
要返回“嘿嘿”,返回值类型为String
要返回true或者false,返回值类型为boolean
要返回数据内容,可以使用**return** 关键字,将其返回并结束方法体                                            注意:通常情况下,方法名的首字母小写,方法名由多个单词构成时,从第二个单词开始,首字母要大写

4.形参列表


形式参数:是指从方法体外向方法体内,传递数据内容
形参列表: 形式参数可以有多个
语法格式: 成员方法名(形参数据类型1 形参变量名...,形参数据类型n 形参变量名n)                      注意:如果一个方法不需要返回任何内容,那么返回值就写void,如果一个方法不需要传入任何内容则形参列表啥也不写。

示例

public class A {
    public void show(){
        System.out.println("方法体内是描述该方法的作用");
    }

    static class MathDemo {
        public int add(int a, int b){
            return a + b;
        }

        public static void main(String[] args){
            MathDemo md = new MathDemo();
            md.add(1,2);
            System.out.println("方法执行完,该我了!");
        }
    }
}

5.面向对象(没有对象也要面向吗?-----来自单身狗的疑问^_^)


什么是对象?
万事万物皆对象
什么是面向对象?


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


面向过程和面向对象的区别?
把大象装冰箱需要几步?                                                                                                                    面向过程===三步--->打开冰箱--->把大象装进冰箱--->关上冰箱                                                        面向对象===一步--->找个人把大象装进冰箱

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


对象:在java中,对象是指客观存在的实体语法格式:
new 引用数据类型();


案例:
//表示创建一个Person类型的对象newPerson(;:简单来说类就是"分类",是指具有相同特征和行为的多个事物共性的抽象,在java中表现为一种引用数据类型,其中包含描述特征的成员变量和描述行为的成员方法


语法格式:
{权限修饰符} class 类名{
类体;                                                                                                                                                        }
案例:
class Person{
类体;                                                                                                                                                        }
注意:通常情况下,类名的首字母要大写,当类名由多个单词构成时,每个单词的首字母都要大写;[驼峰命名法]

成员变量(特征、属性)                                                        

语法格式
[权限修饰符]        数据类型        成员变量名 = 成员变量值                                                              其中等号和成员变量值可以省略,通常情况下都省略,分号不可以省略                                         案例:
int age = 3;
private String name;

注意:通常情况下,成员变量名的首字母要小写,当成员变量名由多个单词构成时,从第二个单词开始,首字母要大写;

引用:引用类型的成员变量名,简称“引用”

语法格式: 引用数据类型 引用变量名 = new 引用数据类型();        

案例:
//表示创建一个Person类型的引用p 指向Person类型的对象Person p = new Person();                    引用的使用方法: 引用名.成员变量名 = 成员变量值; //p.name = bb;                                                 注意:当一个类被定义完毕后,可以使用new关键字来创建该类的对象,这个过程被称为类的实例化类是对象的抽象,对象是类的实现。                                       
案例:定义一个坐标类,特征有,横坐标x和纵坐标y,创建坐标类的对象,将对象的信息打印出来,修改特征信息(要求横坐标+1, 纵坐标增加自定义值),并再次打印

import java.util.Scanner;

public class C {
    int x;
    int y;
    final float a = (float) 3.14;
    Scanner sc = new Scanner(System.in);

    public C(){};
    public C(int a, int b){
        this.x = a;
        this.y = b;

    };
    public void show(){
        System.out.println("该点的横坐标为: " + x);
        System.out.println("该点的纵坐标为: " + y);


    };
    public int  addX(){
        x = x + 1;
        return x;
    };
    public int addY(){
        System.out.println("请输入纵坐标增长的数值: ");
        int m ;
        m = sc.nextInt();
        y = y + m;
        return y;
    };

    public static void main(String[] args) {
        C C = new C();
        C c = new C(5, 6);
        c.show();
        System.out.println("======================");
        c.addX();
        c.addY();
        c.show();

    }
}

7.构造方法和方法重载

语法格式:
[权限修饰符]        构造方法名        [类名]        (形参列表){
        构造方法体                                                                                                                                            }
案例:
public class Person{
String name;
int age;                                                                                                                                                }
public Person(){}  //无参构造方法
public Person(String name, int age){}  //全参构造方法

注意事项
a.构造方法名与类名完全相同并且没有返回值类型,连void都不许有(因为void是有返回值--空);      b.当使用new关键字创建对象时, 会自动调用构造方法来实现成员变量的初始化工作;
默认构造方法
a.当一个类中没有定义任何构造方法时,编译器会自动添加一个无参空构造方法,叫做                 默认/缺省构造方法如: Person(){}
b.若类中出现了构造方法,则编译器不再提供任何形式的构造方法

public class Phone{
    //当用户没有写任何形式的构造方法时, 系统会自动为程序员提供一个无参的构造方法
    /*public Phone(){
        System.out.println("我是无参构造方法...我正在被调用");
    }*/

    //若用户自己编写了任意有参或无参的构造方法, 系统不会再提供默认的构造方法

    String band;
    float price;
    public void show1(){
        System.out.println("品牌: " + band + ", 价格: " + price);
    }

    public static void main(String[] args) {
        Phone p = new Phone();
        p.show1();
        p.band = "Yeme";
        p.price = (float) 5.99;
        p.show1();
    }
    //调用main方法的是java虚拟机JVM

}

8.单元测试方法

一个普通类

public class Person {
    String name;
    int age;

    public void show(){
        System.out.println("name = " + name + ", age = " + age);
    }
    //单元测试(Ctrl+Shift+t)---选择JUnit4并添加相应导包需要的jar包
    //好处是不需要main方法
}

其测试类

public class PersonTest {

    @Test
    public void test01() {
        Person p = new Person();
        p.show();

    }

}

9.this关键字


基本概念在构造方法中和成员方法中访问成员变量时,编译器会加上this.的前缀,而this.相当于汉语中我的”,不同的对象调用同一个方法时,由于调用方法的对象不同导致this关键字不同,从而this.方式访问的结果也就随之不同。
使用方式
(1)当形参变量名与成员变量名相同时,在方法体中会优先使用形参变量(就近原则),若希望使用成员变量,则需要在成员变量的前面加上this.的前缀,明确要求该变量是成员变量。                        (2)在构造方法的第一行可以使用this的方式来调用本类中的其它构造方法(了解)。

实例展示:  get, set 方法

public class Person {
    String name;
    int age;

    public void show(){
        System.out.println("name = " + name + ", age = " + 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;
    }
}

10.封装


基本概念
通常情况下可以在测试类给成员变量赋值一些合法但不合理的数值,无论是编译阶段还是运行阶段都不会报错或者给出提示,此时与现实生活不符。为了避免上述错误的发生,就需要对成员变量进行密封包装处理,来隐藏成员变量的细节以及保证成员变量数值的合理性,该机制就叫做封装
实现流程
(1)私有化成员变量,使用private关键字修饰:
(2)提供公有的get和set方法,并在方法体中进行合理值的判断                                                      (3)在构造方法中调用set方法进行合理值的判断

代码示例: 以8中为基础, 改变为满足输入年龄符合自己要求

/**
 * @Author: bb
 * @Description:
 * 实体类  在包(com, bean, pojo, doamin, entity)中存放
 * @Date Created in 2024-01-31 22:47
 * @Modified By:
 */
public class Person {
    private String name;
    private int age;

    public void show(){
        System.out.println("name = " + name + ", age = " + age);
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        if (age > 0 && age < 150) {
            this.age = age;
        }else{
            System.out.println("您输入的年龄有误!!!");
        }
    }
}
import org.junit.Test;

import static org.junit.Assert.*;

/**
 * @Author: bb
 * @Description:
 * @Date Created in 2024-01-31 22:59
 * @Modified By:
 */
public class PersonTest {

    @Test
    public void test01() {
        Person p = new Person();
        p.show();
        p.setName("bb");
        p.setAge(-1);

    }

}

输出结果如下: 

11.方法重载(会用即可)


(1)概念
在Java语言中若方法的名称相同,但**参数列表相同**,这样的方法之间构成重载关系(Overload).
(2)体现形式
方法重载的主要形式体现在: 参数的个数不同、参数的类型不同、参数的顺序不同与返回值类型和形参变量名无关,但建议返回值类型最好相同
判断方法能否构成重载的核心:  调用方法时能否加以区分
(3)实际意义
方法重载的实际意义在于 调用者只需要记住一个方法名就可以调用各种不同的版本,来实现各种不同的功能。

简单示例:

public class B {
    public static void main(String[] args) {
        int a = 1;
        String name ="bb";
        char c ='a';
        boolean b = true;
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        System.out.println(name);
    }
}

煤油啦!!!因为练车考驾照, 还出去玩了两天,就没有写完^-^

后面慢慢都会补起来的!!!

仅供参考!!!

欢迎大家批评指正*_*

晚安O.O

  • 34
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值