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

封装:

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

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和Setpublic 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.mzph.cn/web/11756.shtml

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

相关文章

组合商标申请如何风控提高通过率!

最近一个老客户找到普推知产老杨,说要申请注册一个新的商标,是一个组合商标,有图形,两行文字,一行文字的拼音,还有三个字母的简称,组合商标在申请时会进行拆分审查,图形、文字、拼音…

【C++初阶】第十一站:list的介绍及使用

目录 list的介绍及使用 1.list的含义 2.list的介绍 3.list的使用 1.list的构造 2.list iterator的使用 3.list capacity 4.list element access 5 list modifiers 尾插尾删 和 头插头删 insert 和 erase resize swap clear 6.list sort and reverse 7.list copy vector copy li…

11.php-fpm模板(监控页面取值)

php-fpm模板(监控页面取值) 开启监控页面配置 #修改php配置文件 vim /etc/php-fpm.d/www.conf pm.status_path /php_status#修改nginx配置文件,添加到nginx配置文件中 vim /etc/nginx/conf.d/default.conflocation /php_status {root html;fastcgi_pass 127.0.…

肥猫“也能变“型男“?揭秘福派斯牛肉高脂猫粮的神奇效果!

福猫养成指南:福派斯牛肉高脂猫粮的优点与考虑因素 福派斯牛肉高脂猫粮,这款富含蛋白质与脂肪的猫粮,仿佛是猫咪世界中的美味佳肴,让无数猫咪为之倾倒。然而,这款猫粮的利与弊,你是否都了解呢?接…

AI模型部署实战:利用OpenCV的CUDA模块加速视觉模型部署流程

本文首发于公众号【DeepDriving】,欢迎关注。 一. 前言 我在之前的文章《AI模型部署实战:利用CV-CUDA加速视觉模型部署流程》中介绍了如何使用CV-CUDA库来加速视觉模型部署的流程,但是CV-CUDA对系统版本和CUDA版本的要求比较高,在…

Linux实验 Shell编程

实验目的: 熟练掌握Shell程序的建立与执行;掌握Shell变量的两种类型(Shell环境变量和用户自定义变量)及其用法;掌握Shell中的特殊字符、算术与逻辑运算;掌握Shell中输入输出命令;掌握Shell程序…

在Windows环境下安装CPU版的PyTorch

PytTorch是基于Python开发的,首先需要安装Python,Python的安装很简单,这里不再赘述。而 Windows用户能直接通过conda、pip和源码编译三种方式来安装PyTorch。 打开PyTorch官网(PyTorch),在主页中根据自己的…

python数据分析——时间序列

时间序列 前言一、Datetime 模块常用函数和数据结构的详细解释datetime模块示例一示例二 二、时间运算示例一示例二示例三 三、时间序列分析自回归(Autoregressive model/AR)模型示例 滑动平均(moving average model/MA)模型示例 自回归滑动平均(Autoregressive moving average…

企业微信hook接口协议,ipad协议http,发送链接的方式邀请成员进群

发送链接的方式邀请成员进群 参数名必选类型说明uuid是String每个实例的唯一标识,根据uuid操作具体企业微信 请求示例 {"uuid":"3240fde0-45e2-48c0-90e8-cb098d0ebe43","roomid":10696052955013729, "vids":[788130334…

Qt---文件系统

一、基本文件操作 1. QFile对文件进行读和写 QFile file( path 文件路径) 读: file.open(打开方式) QlODevice::readOnly 全部读取->file.readAll(),按行读->file.readLine(),atend()->判断是否读到文件尾 …

STM32存储左右互搏 USB接口FATS文件读写U盘

STM32存储左右互搏 USB接口FATS文件读写U盘 STM32的USB接口可以例化为Host主机从而对U盘进行操作。SD卡/MicroSD/TF卡也可以通过读卡器转换成U盘使用。这里介绍STM32CUBEIDE开发平台HAL库实现U盘FATS文件访问的例程。 USB接口介绍 常见的USB接口电路部分相似而有不同的连接器…

K8S -----二进制搭建 Kubernetes v1.20

目录 一、准备环境 1.1 修改主机名 1.2 关闭防火墙(三台一起,这里只展示master01) 1.3 在master添加hosts(依旧是三台一起) 1.4 调整内核参数并开启网桥模式 二、部署docker引擎 三、部署 etcd 集群 1.在mast…

15.JUC原子类

文章目录 JUC原子类1.JUC中的Atomic原子操作包1.1. 基本原子类(Basic Atomic Classes)1.2. 数组原子类(Array Atomic Classes)1.3. 引用原子类(Reference Atomic Classes)4. 字段更新原子类(Fie…

StackQueue+泛型简单理解

🍁 个人主页:爱编程的Tom💫 本篇博文收录专栏:Java专栏👉 目前其它专栏:c系列小游戏 c语言系列--万物的开始_ 🎉 欢迎 👍点赞✍评论⭐收藏💖三连支持一…

LeetCode2215找出两数组的不同

题目描述 给你两个下标从 0 开始的整数数组 nums1 和 nums2 ,请你返回一个长度为 2 的列表 answer ,其中:answer[0] 是 nums1 中所有 不 存在于 nums2 中的 不同 整数组成的列表。answer[1] 是 nums2 中所有 不 存在于 nums1 中的 不同 整数组…

Autosar架构

蓝框那种叫component,绿框的叫function cluster。 接口 有三种接口,RTE跟SWC之间链接的叫Autosar Interface,RTE跟BSW的Components链接是Standardized Interface,RTE跟BSW的services链接的是Standardized Autosar Interface。 St…

网络协议的分类

1.概要 网络协议可以分为三类: 封装协议路由协议功能类协议 2.分类说明 OSPF报文直接调用_ IP协议__协议进行封装,以目的地址_244.0.0.5 __发送到所有的OSPF路由器? 244.0.0.1 所有主机;244.0.0.2 所有路由器;244.0.0.6 指定…

Vue+springboot的批量删除功能

vue前台 <div style"margin-bottom: 10px"><el-button type"primary" plain click"handleAdd">新增</el-button><el-button click"delBatch" type"danger" plain style"margin-left: 5px"…

C语言例题41、八进制转换为十进制

#include<stdio.h>void main() {int x;printf("请输入一个8进制整数&#xff1a;");scanf("%o", &x);printf("转换成十进制后的整数为%d\n", x); }运行结果&#xff1a; 本章C语言经典例题合集&#xff1a;http://t.csdnimg.cn/FK0Qg…

Java入门基础学习笔记21——Scanner

在程序中接收用户通过键盘输入的数据&#xff1a; 需求&#xff1a; 请在程序中&#xff0c;提示用户通过键盘输入自己的姓名、年龄、并能在程序中收到这些信息&#xff0c;怎么解决&#xff1f; Java已经写好了实现程序&#xff0c;我们调用即可。 API&#xff1a;Applicat…