_note_07

1.说一说类和对象的关系?

类的实例化 - 对象;

多个对象实例的抽象 - 类;

2.说一说全局变量和局部变量的区别?


在Java中,全局变量和局部变量是两种不同类型的变量,它们的主要区别在于作用域、存储位置和生命周期。

1. 作用域:全局变量在整个类中都可以访问,而局部变量只在声明它们的方法、语句块或构造函数中可见。

2. 存储位置:全局变量存储在堆中的对象上,而局部变量存储在栈中。

3. 生命周期:全局变量在整个程序的执行过程中都存在,而局部变量只在其所在的方法、语句块或构造函数的执行过程中存在。

4. 默认值:全局变量会被自动初始化为默认值,而局部变量不会自动初始化,需要手动赋值才能使用。


需要注意的是,全局变量的使用应该谨慎,因为它们可以在程序的任何地方被修改,可能导致代码的可读性和可维护性下降。在设计程序时,应尽量避免过多使用全局变量,而是使用局部变量和参数传递来实现数据的传递和共享。

3.什么是匿名对象?匿名对象在什么情况下使用?有什么局限性


匿名对象是指在创建对象时不给对象命名的对象。它是通过直接调用类的构造器函数并使用`new`关键字创建的,但没有将其赋值给任何变量。因此,匿名对象无法通过变量名进行访问,只能通过创建对象时返回的引用进行访问。

匿名对象通常在以下情况下使用:

1. 临时使用:当我们只需要一个对象来执行一次操作,而不需要在后续代码中再次使用该对象时,可以使用匿名对象。这样可以简化代码,并避免创建不必要的对象。

2. 方法调用:当某个方法需要一个对象作为参数进行调用时,可以使用匿名对象作为实参传递给该方法。

匿名对象的局限性包括:

1. 无法重复使用:由于匿名对象没有被赋值给变量,因此无法在后续代码中再次使用该对象。一旦匿名对象的引用超出了当前作用域,它就会被垃圾回收机制回收。

2. 无法直接调用成员方法:由于没有变量名,无法直接调用匿名对象的成员方法。如果需要调用成员方法,必须在创建匿名对象时通过返回的引用进行调用。

3. 可读性差:由于没有变量名,无法直观地知道该对象的用途和含义,因此可能会降低代码的可读性和可维护性。

因此,使用匿名对象时需要权衡其简洁性和可读性,并根据具体情况进行选择。

4.如何去封装一个类。


在Java中,封装是一种面向对象编程的核心概念。通过封装,我们可以将数据和对数据的操作封装在一个类中,同时隐藏实现细节,提供公共接口供其他类使用。

要封装一个类,可以按照以下步骤进行:

1. 设计类的属性:确定类需要存储的数据,并声明私有的实例变量来保存这些数据。这样可以防止直接访问和修改类的属性,只能通过类的方法来进行操作。

2. 提供公共的访问方法:通过公共的getter和setter方法来访问和修改类的属性。这些方法应该是公共的,以便其他类可以使用它们来获取和设置属性的值。

3. 控制访问权限:使用访问修饰符来限制对类的属性和方法的访问。通常,类的属性应该使用`private`修饰符来限制直接访问,而方法应该使用`public`修饰符来提供公共接口。

4. 添加其他方法:根据类的需求,可以添加其他方法来实现类的功能。这些方法应该根据类的设计目标来命名,并且应该是公共的或私有的,以提供适当的访问权限。



通过封装,我们可以控制对类的属性的访问,提供公共接口来操作属性,并隐藏实现细节。这样可以提高代码的可维护性和可重用性,并提供更好的封装和抽象。

5.说一说堆和栈的区别?


在Java中,堆和栈是两种用于存储数据的内存区域,它们有以下几个区别:

1. 存储内容:堆用于存储对象实例,而栈用于存储基本数据类型和对象的引用。

2. 内存管理:堆的内存由Java的垃圾回收器自动管理,当对象不再被引用时,会被自动回收。栈的内存由编译器自动分配和释放,不需要手动管理。

3. 内存分配方式:堆的内存分配是动态的,对象在运行时创建,大小不固定。栈的内存分配是静态的,编译时确定,大小固定。

4. 存储速度:栈的存取速度较快,因为它使用的是指针操作,存取数据的方式简单直接。而堆的存取速度较慢,因为它需要通过引用来访问对象。

5. 存储空间:栈的空间有限,通常比较小,大小由系统预先分配。而堆的空间较大,可以动态增长,大小受限于系统内存。

6. 生命周期:栈中的数据的生命周期是由作用域决定的,当作用域结束时,栈中的数据会被自动销毁。而堆中的对象的生命周期由程序控制,当没有引用指向一个对象时,它会被垃圾回收器回收。

总结来说,堆和栈在存储内容、内存管理、内存分配方式、存储速度、存储空间和生命周期等方面有所区别。了解它们的区别有助于我们更好地理解Java中的内存管理机制,并在编写代码时进行合理的内存使用和优化。

6.编程题:使用java代码描述人的一些属性和行为[功能],人类拥有的属性有:身高、体重、年龄、姓名、性别,人类拥有的功能有:吃喝睡的功能。并提供一个类,类中有主函数,在主函数中实例化一个类的对象,并且给对象赋值,输出实例化的对象的每个属性,并调用功能


package _09212023.homework_07;

/**
 *
 * 使用java代码描述人的一些属性和行为[功能],
 * 人类拥有的属性有:身高、体重、年龄、姓名、性别,
 * 人类拥有的功能有:吃喝睡的功能。并
 * 提供一个类,类中有主函数,在主函数中实例化一个类的对象,并且给对象赋值,
 * 输出实例化的对象的每个属性,并调用功能
 *
 */
public class _6_Person {

    private String name;
    private int age;
    private String gender;
    private double height;
    private double weight;

    // 构造函数
    public _6_Person(String name, int age, String gender, double height, double weight) {
        this.name = name;
        this.age = age;
        this.gender = gender;
        this.height = height;
        this.weight = weight;
    }

    // 访问器
    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 String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public double getHeight() {
        return height;
    }

    public void setHeight(double height) {
        this.height = height;
    }

    public double getWeight() {
        return weight;
    }

    public void setWeight(double weight) {
        this.weight = weight;
    }



    public void eat() {
        System.out.println(name + " is eating.");
    }

    public void drink() {
        System.out.println(name + " is drinking.");
    }

    public void sleep() {
        System.out.println(name + " is sleeping.");
    }



    public static void main(String[] args) {

        _6_Person _6_Person = new _6_Person("John", 25, "Male", 180.0, 75.0);

        System.out.println("Name: " + _6_Person.name);
        System.out.println("Age: " + _6_Person.age);
        System.out.println("Gender: " + _6_Person.gender);
        System.out.println("Height: " + _6_Person.height);
        System.out.println("Weight: " + _6_Person.weight);

        _6_Person.eat();
        _6_Person.drink();
        _6_Person.sleep();
    }
}

7.编程题:描述一下汽车的特性和行为,马路上的汽车,一眼看去,可以发现,汽车有:颜色,品牌,车牌 基本特征,汽车最基本的行为:汽车可以运行,跑起来,要求这个功能更,直接输出当前汽车的颜色、品牌、车牌。另外并提供一个类,类中有主函数,在主函数中实例化一个类的对象,并且给对象赋值,输出实例化的对象的每个属性,并调用功能


package _09212023.homework_07;

/**
 *
 * 描述一下汽车的特性和行为,马路上的汽车,一眼看去,
 * 可以发现,汽车有:颜色,品牌,车牌 基本特征,汽车最基本的行为:汽车可以运行,跑起来,要求这个功能更,
 * 直接输出当前汽车的颜色、品牌、车牌。
 * 另外并提供一个类,类中有主函数,在主函数中实例化一个类的对象,并且给对象赋值,
 * 输出实例化的对象的每个属性,并调用功能
 *
 */
public class _7_Car {

    private String color;
    private String brand;
    private String licensePlate;

    // 构造函数
    public _7_Car(String color, String brand, String licensePlate) {
        this.color = color;
        this.brand = brand;
        this.licensePlate = licensePlate;
    }

    // 访问器
    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public String getLicensePlate() {
        return licensePlate;
    }

    public void setLicensePlate(String licensePlate) {
        this.licensePlate = licensePlate;
    }


    public void run() {
        System.out.println("The car is running.");
    }


    public static void main(String[] args) {
        _7_Car car = new _7_Car("Red", "Toyota", "ABC123");

        System.out.println("Color: " + car.color);
        System.out.println("Brand: " + car.brand);
        System.out.println("License Plate: " + car.licensePlate);

        car.run();
    }
}

8.使用面向对象的方式完成,学生管理系统(主要考察实例化对象,访问对象的属性和函数)

按要求书写学生管理系统的功能,要求如下

首先进入主界面

如果输入1进入登录页面,在登录页面输入用户名和密码,将用户名和密码封装到User对象中,如果这个对象的用户名为111和这个对象密码为222则显示登录成功,否则就显示登录失败,不论是否登录成功则都返回到主界面

如果输入2则进入注册页面,在注册页面输入用户名和密码,将用户名和密码封装到User对象中,如果对象的用户名为111则提示用户已经存在,返回到主界面,否则就显示注册成功,注册成功以后跳转到登录页面,三个页面分别如下:

所涉及的类有

1)IndexService类:提供了主界面显示的功能

2)User类:有用户名和密码两个属性,并且这两个属性都是int类型

3)UserService类:提供了登录功能和注册功能

4)TaskMain类:主函数调用IndexService对象,通过IndexService对象调用主界面功能来启动程序

主界面如下

欢迎进入学生管理系统****

登录请输入输入1*****

注册请输入输入2*****

登录界面如下:

登录页面*****

请输入数字用户名:

请输入数字密码:

登录成功[登陆失败]

注册界面如下:

注册页面*****

请输入数字用户名:

请输入数字密码:

用户名已存在[注册成功]


package _09212023.homework_07;

/**
 *
 * 使用面向对象的方式完成,学生管理系统(主要考察实例化对象,访问对象的属性和函数)
 *
 * 按要求书写学生管理系统的功能,要求如下
 *
 * 首先进入主界面
 *
 * 如果输入1进入登录页面,在登录页面输入用户名和密码,将用户名和密码封装到User对象中,如果这个对象的用户名为111和这个对象密码为222则显示登录成功,否则就显示登录失败,不论是否登录成功则都返回到主界面
 *
 * 如果输入2则进入注册页面,在注册页面输入用户名和密码,将用户名和密码封装到User对象中,如果对象的用户名为111则提示用户已经存在,返回到主界面,否则就显示注册成功,注册成功以后跳转到登录页面,三个页面分别如下:
 *
 * 所涉及的类有
 *
 * 1)IndexService类:提供了主界面显示的功能
 *
 * 2)User类:有用户名和密码两个属性,并且这两个属性都是int类型
 *
 * 3)UserService类:提供了登录功能和注册功能
 *
 * 4)TaskMain类:主函数调用IndexService对象,通过IndexService对象调用主界面功能来启动程序
 *
 * 主界面如下
 *
 * ***********欢迎进入学生管理系统***************
 *
 * ***********登录请输入输入1****************
 *
 * ***********注册请输入输入2****************
 *
 *
 *
 * 登录界面如下:
 *
 * ********登录页面*************
 *
 * 请输入数字用户名:
 *
 * 请输入数字密码:
 *
 * 登录成功[登陆失败]
 *
 *
 *
 * 注册界面如下:
 *
 * ********注册页面*************
 *
 * 请输入数字用户名:
 *
 * 请输入数字密码:
 *
 * 用户名已存在[注册成功]
 *
 */

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class _8 {

    public static void main(String[] args) {
        IndexService indexService = new IndexService();
        UserService userService = new UserService();
        Scanner scanner = new Scanner(System.in);
        while (true) {
            indexService.showIndex();
            int choice = scanner.nextInt();
            if (choice == 1) {
                userService.login();
            } else if (choice == 2) {
                userService.register();
            } else {
                System.out.println("输入错误,请重新输入");
            }
        }
    }

}

/**
 *
 * IndexService类:
 *
 */
class IndexService {
    public void showIndex() {
        System.out.println("***********欢迎进入学生管理系统***************");
        System.out.println("***********登录请输入输入1****************");
        System.out.println("***********注册请输入输入2****************");
    }
}

/**
 *
 * User类:
 *
 */
class User {
    private int username;
    private int password;

    public User(int username, int password) {
        this.username = username;
        this.password = password;
    }

    public void setUsername(int username) {
        this.username = username;
    }

    public void setPassword(int password) {
        this.password = password;
    }

    public int getUsername() {
        return username;
    }

    public int getPassword() {
        return password;
    }
}

/**
 *
 * UserService类:
 *
 */
class UserService {
    private List<User> userList = new ArrayList<>();

    public void login() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("********登录页面*************");
        System.out.println("请输入数字用户名:");
        int username = scanner.nextInt();
        System.out.println("请输入数字密码:");
        int password = scanner.nextInt();
        User user = new User(username, password);
        if (user.getUsername() == 111 && user.getPassword() == 222) {
            System.out.println("登录成功");
        } else {
            System.out.println("登录失败");
        }
    }

    public void register() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("********注册页面*************");
        System.out.println("请输入数字用户名:");
        int username = scanner.nextInt();
        for (User user : userList) {
            if (user.getUsername() == username) {
                System.out.println("用户名已存在");
                return;
            }
        }
        System.out.println("请输入数字密码:");
        int password = scanner.nextInt();
        User user = new User(username, password);
        userList.add(user);
        System.out.println("注册成功");
        login();
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/447075.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于粒子群(PSO)的PID控制器matlab仿真

算法实现简介 利用粒子群算法对 PID 控制器的参数进行优化设计&#xff0c;其过程如图 所示。 图中&#xff0c;粒子群算法与 Simulink 模型之间连接的桥梁是粒子&#xff08;即 PID 控制器参数&#xff09;和该粒子对应的适 应值&#xff08;即控制系统的性能指标&#xff09…

商家转账到零钱场景申请哪一个

商家转账到零钱是什么&#xff1f; 商家转账到零钱功能是指商家可以通过支付平台将资金直接转账到用户的零钱账户中。在这种情况下&#xff0c;商家不需要用户提供银行账户信息&#xff0c;而是使用支付平台的转账功能将资金直接转移到用户的零钱账户中。 商家转账到零钱的使…

什么是脚本语言?——跟老吕学Python编程

什么是脚本语言&#xff1f;——跟老吕学Python编程 脚本语言脚本语言概述脚本语言定义脚本语言简介脚本语言特点 脚本语言特点脚本语言优点脚本语言缺点 脚本语言应用和发展脚本语言应用脚本语言发展情况 脚本语言分类工作控制语言和ShellGUI脚本应用程序定制的脚本语言WEB编程…

储能系统--户用储能美洲市场(三)

2、美洲市场 2.1、美国户储发展驱动力 &#xff08;1&#xff09;电网老化带来配储需求&#xff0c;户用光储成家庭第二用电保障 美国大部分电网建于20世纪60和70年代&#xff0c;超70%以上的输电系统已经超过了25年&#xff0c;在高负荷运转或者外部环境承压时&#xff0c;…

深入理解MVC和MVVM:构建现代Web应用的利器

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

C语言笔记:类型、运算符与表达式

类型与变量 概念 类型是定义变量的&#xff0c;什么是类型&#xff0c;例如张三是一个人&#xff0c;张三就是变量而人就是类型&#xff0c;什么是变量就是用来存储数据的&#xff0c;为什么变量会分为很多类型&#xff0c;因为存储的数据类型不同&#xff0c;需要不容的类型来…

LVS集群(Linux Virtual server)

集群概念lvs模型lvs调度算法lvs实现lvs高可用性&#xff0c;负载均衡 1 集群和分布式 系统性能扩展方式&#xff1a; Scale UP&#xff1a;垂直扩展&#xff0c;向上扩展,增强&#xff0c;性能更强的计算机运行同样的服务 升级单机的硬件设备Scale Out&#xff1a;水平扩展…

C++的一些基础语法

前言&#xff1a; 本篇将结束c的一些基础的语法&#xff0c;方便在以后的博客中出现&#xff0c;后续的一些语法将在涉及到其它的内容需要用到的时候具体展开介绍&#xff1b;其次&#xff0c;我们需要知道c是建立在c的基础上的&#xff0c;所以c的大部分语法都能用在c上。 1.…

妇女节:打开AI视界,成就“她力量”

根据国内招聘平台猎聘发布的《2024女性人才数据洞察报告》&#xff0c;从2023年3月到2024年2月&#xff0c;女性在AIGC领域的求职人次同比增长了190.49%。随着人工智能时代的降临&#xff0c;女性正以前所未有的姿态&#xff0c;在技术的助力下&#xff0c;蜕变成为新生的力量。…

STM32电源及时钟介绍

一、STM32最小系统 二、电源电路 2.1供电电压VDD&#xff0c;VSS F103VET6 的引角图 在 F103VET6 的引角图中可找到 49\50 角&#xff0c; 74\75 角&#xff0c; 99\100 角&#xff0c; 27\28角&#xff0c;10 \11角一共 5 对的VDD&#xff0c;VSS&#xff0c;也就是给我们芯片…

鸿蒙开发学习入门教程之环境配置

最近鸿蒙开发越来越火&#xff0c;各个大厂都有鸿蒙版本的计划和宣传&#xff0c;看这个趋势&#xff0c;可能会在几年内发展壮大&#xff0c;为我们移动端码农开辟一片新的职场。所以现在开始学起来还是很有必要的。今天就一起开始配置环境搞起来吧。 首先&#xff0c;找到官…

高级语言讲义2010软专(仅高级语言部分)

1.编写一程序&#xff0c;对输入的正整数&#xff0c;求他的约数和。 如&#xff1a;18的约数和为1236939 #include <stdio.h>int getsum(int n){int i,sum0;for(i1;i<n;i)if(n%i0)sumi;return sum; } int main(){int sum getsum(18);printf("%d",sum); …

ERP实施顾问面试题目

02什么是BOM和ECN&#xff1f;它们的完整英文拼写是什么&#xff1f;什么是替代料&#xff1f;&#xff08;10分&#xff09; BOM物料清单是英文Bill of Material的简写&#xff1b;ECN工程变更通知单是英文Engineering Change Notice的简写&#xff1b;替代料&#xff1a;由于…

CPP编程-CPP11中的内存管理策略模型与名称空间管理探幽(时隔一年,再谈C++抽象内存模型)

CPP编程-CPP11中的内存管理策略模型与名称空间管理探幽 CPP的四大内存分区模型 在 C 中&#xff0c;**内存分区是一种模型&#xff0c;用于描述程序运行时内存的逻辑组织方式&#xff0c;但在底层操作系统中&#xff0c;并不存在严格意义上的内存分区。**操作系统通常将内存分…

08 数据结构之查找-Hash、二分、顺序

引言&#xff1a; 实现链式哈希的代码 /* 质数&#xff1a; 对于大于1的正自然数&#xff0c; 处理1和它本身别的数都无法整除它&#xff0c; 这个数就是质数 hash函数的确定&#xff1a; α(质量因子) 0.7-0.8比较合适 m&#xff1a;存储数据的真实个数 n&#xff1a;存储空…

H264解码器实现-帧间预测

前言 本文所说的帧间预测是指根据当前预测块的MV向量和预测所需的参考块数据&#xff0c;计算出当前预测块的预测像素值的过程。该过程得到的预测像素值经过运动补偿后&#xff08;与反变换量化之后得到的残差像素值相加&#xff09;可以得到滤波前的重建像素值。 原理说明 …

<Linux> 初识线程

目录 前言&#xff1a; 一、什么是线程 &#xff08;一&#xff09;基本概念 &#xff08;二&#xff09;线程理解 &#xff08;三&#xff09;线程与进程的关系 &#xff08;四&#xff09;简单实用线程 &#xff08;五&#xff09;重谈虚拟地址空间 1. 页表的大小 2…

ARMv8/ARMv9架构入门到精通-学习方法

目录 1、学习ARM基础知识2、学习ARM异常(中断)3、学习MMU4、学习Cache5、学习Trustzone和安全架构6、学习ARM架构和各类IP推荐 本文转自 周贺贺&#xff0c;baron&#xff0c;代码改变世界ctw&#xff0c;Arm精选&#xff0c; 资深安全架构专家&#xff0c;11年手机安全/SOC底层…

WorldView卫星遥感影像数据/米级分辨率遥感影像

目前世界上最常用的高分辨率卫星影像莫过于WORLDVIEW系列了&#xff0c;在卫星遥感圈内可谓大名鼎鼎&#xff0c;不仅具有超高的分辨率还具有其他高分辨卫星所不具有的8波段&#xff0c;风光无限。在分辨率方面目前只有WORLDVIEW3和WORLDVIEW4能够达到0.3米的分辨率&#xff0c…

【神经网络与深度学习】LSTM(Long Short-Term Memory)神经网络模型

概述 LSTM&#xff08;Long Short-Term Memory&#xff09;是一种特殊的循环神经网络&#xff08;RNN&#xff09;结构&#xff0c;通常被用于处理和学习时间序列数据。因此&#xff0c;LSTM属于深度学习领域中的一种神经网络模型。 在深度学习中&#xff0c;LSTM被广泛应用于…
最新文章