添砖Java之路(其五)——封装,String,StringBuilder类。

news2024/10/5 14:17:30

封装:

封装意义:更好的维护数据,让使用者无需关心如何使用,只需要知道怎么使用。

Java Bean:

然后我们要知道Java Bean(实体类)标准。
1.对于这个类的成员都需要设为私有,而且要对外提供相应Get,Set的接口。
2.类中要有公有的无参和带参构造。

意义:对于实体类只需要负责数据的存取,而对数据的处理交给其他方法类完成,以实现数据与业务的分离。

比如我们实现一个学生信息管理系统,学生就是实体类。
如将一个学生信息的封装:

public class StudentInfor {
    
    //成员变量用private修饰
    private String id;
    private String name;
    private int age;
    private String sex;
    private int MathScore;
    private int ChineseSocre;
    private  int EnglishScore;

    private   int arrSocre;


    

    //无参构造
    public StudentInfor() {

    }
    //带参构造
    public StudentInfor(String id, String name, int age, String sex, int mathScore, int chineseSocre, int englishScore) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.sex = sex;
        MathScore = mathScore;
        ChineseSocre = chineseSocre;
        EnglishScore = englishScore;
        arrSocre=mathScore+chineseSocre+englishScore;
    }

    //各个成员的Get和Set
    public String getId() {
        return id;
    }

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

    public int getArrSocre() {
        return arrSocre;
    }

    public void setArrSocre() {
            arrSocre=MathScore+EnglishScore+ChineseSocre;
    }

    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 getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public int getMathScore() {
        return MathScore;
    }

    public void setMathScore(int mathScore) {
        MathScore = mathScore;
    }

    public int getChineseSocre() {
        return ChineseSocre;
    }

    public void setChineseSocre(int chineseSocre) {
        ChineseSocre = chineseSocre;
    }

    public int getEnglishScore() {
        return EnglishScore;
    }

    public void setEnglishScore(int englishScore) {
        EnglishScore = englishScore;
    }
}

权限修饰:

这里我截了一张黑马的图:

具体有什么用后面再说。

String:

首先我们要知道" "双引号里的类容都是String的对象。
jdk8之前内部存储定义的是char类型数组
jdk9以后是定义的byte类型数组存储,可以更好的节省了空间

这里有jdk9版本之后的图。

我们要知道直接new一个String的话会在堆中,而直接赋值的话会在先在常量池中找,我们看一下具体怎么做的。

我们来看个例子:

    public static void main(String[] args) {
            String s1="abc";
            String s2="abc";
            if(s1==s2)
            {
                System.out.println("地址相同");
            }
            else {
                System.out.println("地址不同");
            }

    }

这两个地址会相同吗?

运行一下发现是相同的。

为什么呢?

这里画一张对应的堆图来理解

其中的创建用的是toString方法

这是一张及其简单的图片,但是要注意jdk7版本之前常量池在方法区中,jdk7版本之后常量池在堆中。

Java中还存在常量优化机制。
比如:

    public static void main(String[] args) {
            String s1="abc";
            String s2="a"+"b"+"c";
            if(s1==s2)
            {
                System.out.println("地址相同");
            }
            else {
                System.out.println("地址不同");
            }
    }

这个地址也是相同的哟!

常量优化机制会将   String s2="a"+"b"+"c";->优化为:Stirng s2="abc";

所以地址会相同

StringBuilder:

1.它是一个可变字符。
2.StringBuilder是字符缓冲区,可以理解为容器,这个容器可以储存任何类型的数据类型,只要进入这个容器全部都是变成字符。

我们来举个例子:

   public static void main(String[] args) {
        StringBuilder s1=new StringBuilder();
        s1.append("abc");
        s1.append(11);
        s1.append(false);
        System.out.println(s1);
    }

Java中有个叫做链式编程的东西。

StringBuilder也能演示链式编程,首先我们要知道append返回的是什么,我们可以去API里面查:

可见全都是返回的StringBuilder,所以这时候就可以用前面一个的返回值调用方法,这就是链式编程。

类似这样:

    public static void main(String[] args) {
        StringBuilder s1=new StringBuilder();
        s1.append("abc").append(11).append(false);;
        System.out.println(s1);
    }

结果是一样的

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WWW服务器搭建(1)——HTTP协议原理篇

目录 一、WWW的相关概念 1.1 WWW的定义 1.2 超文本标记语言HTML 1.3 统一资源定位符URL 1.4 超文本传输协议HTTP 二、HTTP协议工作过程 2.1 DNS解析 2.2 TCP连接过程 2.3 HTTP 请求与响应 2.4 TCP连接断开 三、HTTP请求报文格式 3.1 请求行 3.2 请求头 3.3 空行 …

大语言模型的数据预处理

文章目录 质量过滤敏感内容过滤数据去重 当收集了丰富的文本数据之后,为了确保数据的质量和效用,还需要对数据进行预处理,从而消除低质量、冗余、无关甚可能有害的数据。一般来说,需要构建并使用系统化的数据处理框架(…

第十五节:贪心算法(下)

一 、 贪心算法的解题套路实战一(最多的会议宣讲场次) 1.1 描述 一些项目要占用一个会议室宣讲,会议室不能同时容纳两个项目的宣讲。 给你每一个项目开始的时间和结束的时间 你来安排宣讲的日程,要求会议室进行的宣讲的场次最多。…

校园志愿者管理系统带万字文档

文章目录 校园志愿者管理系统一、项目演示二、项目介绍三、10000字论文参考四、部分功能页面五、部分代码展示六、底部获取项目源码和万字论文参考(9.9¥带走) 校园志愿者管理系统 一、项目演示 校园志愿者管理系统 二、项目介绍 基于Spring…

快速对比 找出2个名单不同之处

import pandas as pd# 读取两个Excel文件 df1 pd.read_excel(1.xlsx) df2 pd.read_excel(2.xlsx)# 检查两个DataFrame的列是否相同 if list(df1.columns) ! list(df2.columns):print("两个Excel文件的列不一致。")print("文件1的列:", df1.co…

免费思维13招之九:时间型思维

免费思维13招之九:时间型思维 免费思维的另一大战略思维——时间型思维。 什么是时间型思维呢?就是在某一个规定的时间内对消费者进行免费,比如一个月中的某一天,或一周中的某一天或一天中的某一个时间段对消费者进行免费。 就在去年,有一个电影院老板弟子,他的电影院营…

基于SSM的“基于协同过滤的在线通用旅游平台网站”的设计与实现(源码+数据库+文档)

基于SSM的“基于协同过滤的在线通用旅游平台网站”的设计与实现(源码数据库文档) 开发语言:Java 数据库:MySQL 技术:SSM 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统主界面 景点信息界面 后台界面 部分源码…

设计循环队列-C语言实现

题目描述 设计循环队列 设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。 循环队列的一个好处是我们可以利用这个队列之前用过的…

算法-卡尔曼滤波之为什么要使用卡尔曼滤波器

假设使用雷达来预测飞行器的位置; 预先的假设条件条件: 1.激光雷达的激光束每5s发射一次; 2.通过接受的激光束,雷达估计目标当前时刻的位置和速度; 3.同时雷达要预测下一时刻的位置和速度 根据速度,加速度和位移的…

Spring简介IOCDI

文章目录 Spring简介Spring课程介绍为什么要学学什么怎么学 初识SpringSpring家族Spring发展史 Spring体系结构Spring核心概念目前代码存在的问题核心概念 IOC和DI入门案例IOC入门案例入门案例分析实现步骤实现代码 DI入门案例DI入门案例分析实现步骤实现代码图解演示 Bean的基…

【超详细】跑通YOLOv8之深度学习环境配置3-YOLOv8安装

环境配置3下载安装内容如下: 1、配置清华等镜像源 2、创建环境 3、下载安装Pytorch 4、下载安装YOLOv8运行环境 版本:Python3.8(要求>3.8),torch1.12.0cu113(要求>1.8) 1、配置清华等镜…

用Arm CCA解锁数据的力量

安全之安全(security)博客目录导读 目录 CCA将如何改变Arm架构呢? 在实践中部署CCA 释放数据和人工智能的全部力量和潜力 早期计算中最大的挑战之一是管理计算资源,以最大化计算效率同时提供给不同程序或用户分配资源的分离。这导致了我们今天大多数使用的时间…

Windows环境下代码文档生成工具Doxygen使用详细教程

背景 最近研究aom源码,发现编译需要依赖Doxygen工具,故此篇博客详细记录下Doxygen的安装和使用。 Doxygen Doxygen 是一个强大的源代码文档生成工具,它支持多种编程语言,能够直接从源代码中的注释提取文档,并生成多…

基于SpringBoot设计模式之创建型设计模式·抽象工厂模式

文章目录 介绍开始架构图(以穿搭举例)样例一(html关于列表和表格的应用)定义抽象工厂(html)定义抽象工厂需要制作抽象产物(托盘)定义具体工厂(列表、表格)定义…

Mamba:4 魔幻矩阵A

若在阅读过程中有些知识点存在盲区,可以回到如何优雅的谈论大模型重新阅读。另外斯坦福2024人工智能报告解读为通识性读物。若对于如果构建生成级别的AI架构则可以关注AI架构设计。技术宅麻烦死磕LLM背后的基础模型。 ​Mamba自从出道就一直被拿来和Transformer对比…

HIVE卡口流量需求分析

HIVE卡口流量需求分析 目录 HIVE卡口流量需求分析 1.创建表格 插入数据 2.需求 3.总结: 1.创建表格 插入数据 CREATE TABLE learn3.veh_pass( id STRING COMMENT "卡口编号", pass_time STRING COMMENT "进过时间", pass_num int COMMENT …

懒人网址导航源码v3.9

测试环境 宝塔Nginx -Tengine2.2.3的PHP5.6 MySQL5.6.44 为防止调试错误,建议使用测试环境运行的php与mysql版本 首先用phpMyAdmin导入数据库文件db/db.sql 如果导入不行,请直接复制数据库内容运行sql语句也可以 再修改config.php来进行数据库配置…

AI智能体|我把Kimi接入了个人微信

大家好,我是无界生长。 最近加入AI学习交流群的小伙伴越来越多,我打算在微信群接入一个聊天机器人,让它协助管理微信群,同时也帮忙给群友解答一些问题。普通的群聊机器人肯定是不能满足需求的,得上AI大模型&#xff0c…

EPS软件标注点坐标值

1、如下,点击右侧(尺寸标注)按钮: 2、弹出一个对话框,如下: 3、在上图对话框中设置好箭头样式和小数位数,然后点击图上一点,右击结束再鼠标指定位置,如下: 如…

同城预约上门服务家政小程序

基于Thinkphp和原生微信小程序开发的一款同城预约、上门服务、到店核销家政系统,用户端、服务端、门店端各端相互依赖又相互独立,支持选择项目、选择服务人员、选择门店多种下单方式,支持上门服务和到店核销两种服务方式,支持自营…