黑马java学习笔记4(阶段一 第二章~第三章 05)

以下学习笔记记录于:2024.07.24-2024.07.30

阶段一 JavaSE基础

第二章 面向对象基础

01 面向对象入门

image-20240725165940763

02 深刻认识面向对象

image-20240728112128934

image-20240728112050784

注:new就相当于新建一张表来对数据和方法进行存储。

03 对象在计算机中的执行原理

image-20240728113454016

image-20240728112723139

image-20240728113754704

04 类与对象的注意事项

image-20240728125129942

image-20240728124920100

05 this关键字

image-20240728141820474

image-20240728142244483

image-20240728142515918

06 构造器

image-20240728143936628

若定义了有参构造器,则要顺便把无参构造器写出来

image-20240728144342327

07 面向对象三大特征之一:封装*

image-20240728145305063

image-20240728145431759

08 实体JavaBean(实体类)

image-20240729205946267

实体类仅进行数据存取,且除了图片中所框选的必要内容外无其他内容。

快速生成常用代码结构:鼠标右键点击”Generate 生成”,在弹窗中进行选择需要生成的内容,如果想要给多个成员变量设置则按住Shift或Ctrl,用鼠标选择好之后点击“确定”即可。

特别地,鼠标指向第一个成员变量,按住Shift后直接点击最后一个成员变量这样就可以直接将所有成员变量全选。

选择“Getter and Setter”可生成get、set方法;选择“Constructor”可生成无参数或有参数构造器。

image-20240729203609519

Student.java:

// JavaBean实体类,专门用来进行数据存取
public class Student {
    // 1.必须私有成员变量,并为每一个成员变量都提供get、set方法
    private String name;
    private double score;
    // 2.必须为类提供一个公开的无参数构造器
    public Student() {
    }

    public Student(String name, double score) {
        this.name = name;
        this.score = score;
    }

    public String getName() {
        return name;
    }

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

    public double getScore() {
        return score;
    }

    public void setScore(double score) {
        this.score = score;
    }
}

StudentOperator.java:

// 专门存放数据业务处理
public class StudentOperator {
    private Student student;

    public StudentOperator(Student student) {
        this.student = student;
    }

    public void printPass(){
        if (student.getScore() >= 60){
            System.out.println(student.getName() + "成绩及格");
        }else {
            System.out.println(student.getName() + "成绩不及格");
        }
    }
}

testJavaBean.java:

package com.itheima.JavaBean;

public class testJavaBean {
    public static void main(String[] args) {
        Student s = new Student();
        s.setName("波妞");
        s.setScore(100);
        System.out.println(s.getName());
        System.out.println(s.getScore());

        StudentOperator operator = new StudentOperator(s);
        operator.printPass();
    }
}

运行结果:

image-20240729205141124

09 面向对象编程的综合案例

image-20240730194557474

Movie.java:

// 设计一个电影类
public class Movie {
    private int id;
    private String name;
    private double price;
    private double score;
    private String director;
    private String actor;
    private String info;

    public Movie() {
    }

    public Movie(int id, String name, double price, double score, String director, String actor, String info) {
        this.id = id;
        this.name = name;
        this.price = price;
        this.score = score;
        this.director = director;
        this.actor = actor;
        this.info = info;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public double getScore() {
        return score;
    }

    public void setScore(double score) {
        this.score = score;
    }

    public String getName() {
        return name;
    }

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

    public String getDirector() {
        return director;
    }

    public void setDirector(String director) {
        this.director = director;
    }

    public String getActor() {
        return actor;
    }

    public void setActor(String actor) {
        this.actor = actor;
    }

    public String getInfo() {
        return info;
    }

    public void setInfo(String info) {
        this.info = info;
    }
}

MovieOperator.java:

package com.itheima.JavaBean.Movie;
// 设计一个电影的操作类
public class MovieOperator {
    private Movie[] movies;

    public MovieOperator() {
    }

    public MovieOperator(Movie[] movies) {
        this.movies = movies;
    }

    // 1. 展示系统全部电影信息
    public void printAllMovies(){
        System.out.println("------系统全部电影信息如下------");
        for (int i = 0; i < movies.length; i++) {
            Movie movie = movies[i];
            System.out.println("编号:" + movie.getId());
            System.out.println("名称:" + movie.getName());
            System.out.println("价格:" + movie.getPrice());
            System.out.println("-----------------------------");
        }
    }

    // 2. 根据电影编号查询该电影的信息并展示
    public void searchMovieById(int id){
        for (int i = 0; i < movies.length; i++) {
            Movie movie = movies[i];
            if (movie.getId() == id){
                System.out.println("该电影详情如下:");
                System.out.println("编号:" + movie.getId());
                System.out.println("名称:" + movie.getName());
                System.out.println("价格:" + movie.getPrice());
                System.out.println("得分:" + movie.getScore());
                System.out.println("导演:" + movie.getDirector());
                System.out.println("演员:" + movie.getActor());
                System.out.println("其他信息:" + movie.getInfo());
                return;     // 已经找到电影信息并输出之后就没必要继续执行该方法了
            }
        }
        System.out.println("没有此编号对应的电影信息!!!");
    }
}

MovieText.java:

import java.util.Scanner;

// 目标:完成电影信息展示功能;根据电影id查询该电影详情
    /*
    电影数据:
        1, "水门桥", 38.9, 9.8, "徐克", "吴京", "12万人想看"
        2, "出拳吧,妈妈", 39, 7.8, "唐晓白", "田雨", "3.5万人想看"
        3, "月球陨落", 42, 7.9, "罗兰", "贝瑞", "17.9万人想看"
        4, "一点就到家", 35, 8.7, "许宏宇", "刘昊然", "10.8万人想看"
    */
public class MovieText {
    public static void main(String[] args) {
        Movie[] movies = new Movie[4];
        movies[0] = new Movie(1, "水门桥", 38.9, 9.8, "徐克", "吴京", "12万人想看");
        movies[1] = new Movie(2, "出拳吧,妈妈", 39, 7.8, "唐晓白", "田雨", "3.5万人想看");
        movies[2] = new Movie(3, "月球陨落", 42, 7.9, "罗兰", "贝瑞", "17.9万人想看");
        movies[3] = new Movie(4, "一点就到家", 35, 8.7, "许宏宇", "刘昊然", "10.8万人想看");
        // 创建一个电影操作类的对象,接收电影数据,并对其进行业务处理
        MovieOperator operator = new MovieOperator(movies);

        while (true) {
            System.out.println("===电影信息系统===");
            System.out.println("数字1:查询全部电影信息");
            System.out.println("数字2:根据id查询某个电影的详细信息展示");
            System.out.println("请您输入操作命令:");
            Scanner sc = new Scanner(System.in);
            int command = sc.nextInt();
            switch (command){
                case 1:
                    operator.printAllMovies();
                    break;
                case 2:
                    System.out.println("请您输入想要查询的电影id:");
                    int id = sc.nextInt();
                    operator.searchMovieById(id);
                    break;
                default:
                    System.out.println("您输入的命令有问题,请重新输入----");
            }
        }
    }
}

运行结果:

image-20240730194640786

image-20240730194718022

10 成员变量、局部变量的区别

image-20240730195523355

第三章 API基础

API(全称 Application Programming Interface: 应用程序编程接口):就是别人写好的程序,我们直接调用即可。

02 包的概述

image-20240730201108800

image-20240730201050437

03 String概述

image-20240730204217095

image-20240730204133686

image-20240730204306120

04 String提供的常用方法

image-20240730204441639

// 快速熟悉String提供的处理字符串的常用方法
public class StringDemo {
    public static void main(String[] args) {
        String s = "黑马Java";
        // 1. public int length():获取字符串长度
        System.out.println(s.length());

        System.out.println("------------");
        // 2.public char charAt(int index):提取字符串中某个索引位置处的字符
        char c = s.charAt(1);
        System.out.println(c);

        // 字符串的遍历
        for (int i = 0; i < s.length(); i++) {
            char ch = s.charAt(i);
            System.out.println(ch);
        }

        System.out.println("------------");
        // 3. public char[] toCharArray():把字符串转换成字符数组,再进行遍历
        char[] chars = s.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            System.out.println(chars[i]);
        }
        System.out.println("------------");
        // 4. public boolean equals(Object anObject):判断字符串内容,内容一样就返回true
        String s1 = new String("黑马");
        String s2 = new String("黑马");
        System.out.println(s1 == s2);           // false:此处是拿两者存储的地址来比较
        System.out.println(s1.equals(s2));      // true:此处是拿两者所指向的内容来比较

        System.out.println("------------");
        // 5. public boolean equalsIgnoreCase(String anotherString):忽略大小写来比较字符串的内容
        String c1 = "34AeFG";
        String c2 = "34aEfg";
        System.out.println(c1.equals(c2));              // false
        System.out.println(c1.equalsIgnoreCase(c2));    // true

        System.out.println("------------");
        // 6. public String substring(int beginIndex, int endIndex):截取字符串内容(包前不包后!!!)
        String s3 = "Java是最好的编程语言之一";
        String rs1 = s3.substring(0, 8);
        System.out.println(rs1);

        System.out.println("------------");
        // 7. public String substring(int beginIndex):从当前索引位置一直截取到字符串的末尾
        String rs2 = s3.substring(5);
        System.out.println(rs2);

        System.out.println("------------");
        // 8. public String replace(CharSequence target, CharSequence replacement):把字符串中的某个内容替换成新内容,并返回新的字符串对象给我们
        String info1 = "这个电影简直垃圾,垃圾电影!!!!";
        String rs3 = info1.replace("垃圾", "**");
        System.out.println(rs3);

        System.out.println("------------");
        // 9. public boolean contains(CharSequence s):判断字符串中是否包含某个关键字
        String info2 = "Java是最好的编程语言之一,我爱Java,Java不爱我!";
        System.out.println(info2.contains("Java"));
        System.out.println(info2.contains("java"));
        System.out.println(info2.contains("Java2"));

        System.out.println("------------");
        // 10. public boolean startsWith(String prefix):判断字符串是否以某个字符串开头
        String rs4 = "张三风";
        System.out.println(rs4.startsWith("张"));
        System.out.println(rs4.startsWith("张三"));
        System.out.println(rs4.startsWith("张三三"));

        System.out.println("------------");
        // 11. public String[] split(String regex):把字符串按照某个指定内容分割成多个字符串,存储到一个字符串数组中并返回给我们
        String rs5 = "迪丽热巴,杨幂";
        String[] names = rs5.split(",");
        for (int i = 0; i < names.length; i++) {
            System.out.println(names[i]);
        }
    }
}

运行结果:

image-20240730212516847

image-20240730212529881

05 String的注意事项

image-20240730215953739

在这里插入图片描述

image-20240730214942273

image-20240730214914769

// 搞清楚String使用的注意事项
public class StringDemo2 {
    public static void main(String[] args) {
        // 1. String的对象是不可变的
        String name = "黑马";
        name += "程序员";
        name += "波妞";
        System.out.println(name);

        // 2. 只要是以双引号给出的字符串对象,会存储在字符串常量池中,且相同内容的字符串只存储一份
        String s1 = "abc";
        String s2 = "abc";
        System.out.println(s1 == s2);   // true

        // 3. 通过new String方式创建字符串对象,每new一次都会产生一个新的对象放在堆内存中
        char[] chars = {'a', 'b', 'c'};
        String a1 = new String(chars);
        String a2 = new String(chars);
        System.out.println(a1 == a2);   // false
    }
}

运行结果:

image-20240730215748854

笔试题:

image-20240730220137109

2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值