添砖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…

Java身份证识别接口集成开发示例,身份证查询接口

人类是有情感的,人们所接触到的各种事物和信息都会被身体相应器官所接收,然后通过神经元传入大脑继而被识别,然后大脑便会产生对该事物的认知和情绪。人们大多喜欢热情、有趣的事物,对冷冰冰、枯燥、无趣的APP基本是提不起兴趣的。…

16.Set、泛型、枚举、反射、Class

Set Set集合是Collection集合的子接口,元素不能重复,只能有一个null,元素存放无序。 常用子类 HashSet TreeSet LinkedHashSet HashSet 其实底层就是HashMap,当我们构造一个HashSet对象,就是在 new HashSet(); …

23. 合并 K 个升序链表 - 力扣(LeetCode)

基础知识要求: Java:方法、while循环、for循环、PriorityQueue类、if判断 Python: 方法、while循环、for循环、heapq 模块、if判断 数据结构:队列 题目: 给你一个链表数组,每个链表都已经按升序排列。 请你将所有链…

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版本的要求比较高,在…

大模型介绍

大模型通常指的是参数量超过亿级别,甚至千亿级别的深度学习模型。这类模型能够处理更加复杂的任务,并在各项基准测试中取得了优异的成绩。大模型在自然语言处理、计算机视觉、推荐系统等领域都取得了显著的成果。 大模型的主要优势在于其强大的表征能力&…

k8s的核心组件etcd功能详解【含etcd各类参数详细说明】

etcd 是 Kubernetes 中的一个关键组件,用于存储集群的配置信息、状态和元数据。它通常作为 Kubernetes 集群的数据存储后端,为其他组件提供可靠的分布式键值存储服务。下面我会详细介绍 etcd 的功能以及常见的参数,以及如何配置和使用 etcd。…

Linux实验 Shell编程

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

在Windows环境下安装CPU版的PyTorch

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

基于OpenCV年龄与性别识别系统

深入解析基于OpenCV年龄与性别识别系统 在这篇博客中,我们将详细解析一个使用OpenCV进行年龄和性别识别的Python脚本。这个脚本展示了如何利用深度学习模型,从视频或图像中检测人脸并预测每个人脸的年龄和性别。 1. 导入必要的模块 import cv2 as cv …

ELK的详解

ELK是由Elasticsearch、Logstash和Kibana三个开源软件(后来又新加了一个FileBeat)组成的日志管理解决方案,这一组合在近年来得到了广泛的关注和应用。以下是对这三个组件的详细说明: Elasticsearch: Elasticsearch是…

nginx 负载均衡配置详解

基于 ${nginx_home}/conf/nginx.conf 文件配置实现,如下: http {# 定义server地址upstream server_group {server 192.168.xxx.1:8080;server 192.168.xxx.2:8080;server 192.168.xxx.3:8080;}server {listen 80;location / {root html;index …

python数据分析——时间序列

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

持续总结中!2024年面试必问 100 道 Java基础面试题(四十五)

上一篇地址:持续总结中!2024年面试必问 100 道 Java基础面试题(四十四)-CSDN博客 八十九、在Java中,什么是线程局部变量(ThreadLocal变量)? 在Java中,ThreadLocal变量是…

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

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

Flutter 中的 CircleAvatar 小部件:全面指南

Flutter 中的 CircleAvatar 小部件:全面指南 在 Flutter 中,CircleAvatar 是一个用于显示头像的圆形控件,通常包含一个图标、图片或者一个简单的文本字符。它在设计上与 Material Design 指南中的头像规范相匹配,常用于展示用户信…

C# 常用汇总

时间处理 public static class DateTimeHelper{/// <summary>/// 获取当前时间戳&#xff08;Unix时间戳&#xff09; /// </summary>/// <returns></returns>public static long GetCurrentUnixTimestamp(){DateTimeOffset offset DateTimeOffset.…