Java#10(String 类的构造方法和练习)

news2025/8/14 4:27:37

目录

一.String类的构造方法

1.public String()空参构造

2.public String(char[ ] ch2);(对堆区已有的值没有办法复用,数据多会浪费内存空间,而直接赋值如果已有相同数据可以复用,不会在浪费太多内存)

3.public String(byte[ ] bytes)

二.字符串的比较

1.前提基础: == 比较的是什么?

 2.对象1.equals(对象2);返回boolean类型

 3.对象1.equalsIgnore(对象2);返回boolean类型

总结:以后想比较字符串的内容,要用String内的方法(如:equals,equalsIgnore......)

 三.练习


一.String类的构造方法

1.public String()空参构造

2.public String(char[ ] ch2);(对堆区已有的值没有办法复用,数据多会浪费内存空间,而直接赋值如果已有相同数据可以复用,不会在浪费太多内存)

传递一个字符数组,根据字符数组内容再创建一个字符串对象(因为字符串无法"修改",所以可以先将其转化为字符数组,然后在字符数组中修改,然后在重新转化成字符串)

3.public String(byte[ ] bytes)

传递一个字节数组,根据字节数组的内容在创建一个新的字符串对象(以后在网络当中传输的数据其实都是字节信息,我们一般需要将其转化成字符串,就需要这个构造了)

代码:

package Demo;

public class StringDemo {
    public static void main(String[] args) {
        //使用直接赋值的方式获取一个字符串对象
        String s1 = "abc";
        System.out.println(s1);

        //空参构造
        String s2 = new String();
        System.out.println(1+s2+2);//s2 = "";

        //传递一个字符数组,根据字符数组内容再创建一个字符串对象
        char[] ch1 = {'a','b','c','d'};
        String s3 = new String(ch1);
        System.out.println(s3);

        //传递一个字节数组,根据字节数组的内容在创建一个新的字符串对象
        byte[] by1 = {97,98,99,100};
        String s4 = new String(by1);
        System.out.println(s4);
    }
}

演示:

二.字符串的比较

1.前提基础: == 比较的是什么?

(1)在基本数据类型中,比较的是数据值

(2)在引用数据类型中,比较的是地址值

直接赋值可以复用,所以s1,s2的地址值是相同的(复用:使用堆区中同一个地址值)

 2.对象1.equals(对象2);返回boolean类型

 3.对象1.equalsIgnore(对象2);返回boolean类型

package Demo;

public class StringDemo1 {
    public static void main(String[] args) {
        String s1 = new String("abc");
        String s2 = "abc";
        String s3 = "ABC";

        //1.使用==比较
        System.out.println(s1 == s2);//false

        //2.比较两个字符串内容是否相等
        boolean result1 = s1.equals(s2);
        boolean result2 = s1.equals(s3);
        System.out.println(result1);//true
        System.out.println(result2);//false

        //3.比较字符串内容是否相等,忽略大小写
        boolean result3 = s1.equalsIgnoreCase(s3);
        System.out.println(result3);//true
    }
}

键盘录入和直接赋值

为何是false?

因为s1是new出来的,所以和s2不是同一个地址

总结:以后想比较字符串的内容,要用String内的方法(如:equals,equalsIgnore......)

 三.练习

已知正确的用户名和密码,请用程序实现模拟用户登录总共给三次机会,登录之后,给出相应的提示

常见错误:在比较字符串内容时使用==,   而且验证成功后没有加break;

代码:

package Demo;

import java.util.Scanner;

public class StringDemo2 {
    public static void main(String[] args) {
        //已知正确的用户和密码
        String rightUsername = "guaiwu";
        String rightpassword = "123456";

        Scanner sc = new Scanner(System.in);
        //判断
        for (int i = 0; i < 3; i++) {
            System.out.println("请输入用户名:");
            String name = sc.next();
            System.out.println("请输入密码:");
            String password = sc.next();
            if(name.equals(rightUsername) && password.equals(rightpassword)){
                System.out.println("用户登录成功");
                break;
            }else{
                if(2-i == 0){
                    System.out.println("该用户已被锁定");
                }else{
                    System.out.println("用户名或密码错误,您还有"+(2-i)+"次机会");
                }
            }
        }

    }
}

结果展示:

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

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

相关文章

解决使用svg绘制后下载图片以及下载svg内部嵌套image图片失败的问题。

在使用svg进行图形绘制之后&#xff0c;可能需要下载已经绘制的svg图片&#xff0c;我们可能会遇到以下两种情况&#xff1a; 情况1&#xff1a; <svg width"640" height"400" xmlns"http://www.w3.org/2000/svg" id"svgColumn">…

解决问题 - 错误:不支持发行版本 5

文章目录一、提出问题二、解决问题&#xff08;一&#xff09;设置项目SDK与语言等级&#xff08;二&#xff09;设置模块语言等级&#xff08;三&#xff09;设置Java编译器等级&#xff08;四&#xff09;运行程序&#xff0c;测试问题是否已解决一、提出问题 基于JDK11创建…

阿里Redis最全面试全攻略,读完这个就可以和阿里面试官好好聊聊

简述Redis常用的数据结构及其如何实现的&#xff1f; Redis支持的常用5种数据类型指的是value类型&#xff0c;分别为&#xff1a;字符串String、列表List、哈希Hash、集合Set、有序集合Zset&#xff0c;但是Redis后续又丰富了几种数据类型分别是Bitmaps、HyperLogLogs、GEO。…

年搜索量超 7 亿次背后:这款 APP 用火山引擎 DataTester 完成“数据驱动”

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 双十一刚过&#xff0c;双十二在即&#xff0c;随着线上营销玩法的层出不穷&#xff0c;各平台之间的价格逐渐“内卷”。消费者对跨平台比价的需求越来越强烈&#…

【实时语音转文本】PC端实时语音转文本(麦克风外音系统内部音源)

语音转文字这个功能可以应用在视频动态字幕&#xff0c;语音快速输入&#xff0c;实时记录通话内容&#xff0c;高级应用可以在人工智能&#xff0c;语音识别&#xff0c;智能助手方面&#xff0c;还需要一点机器学习可以做出一些好玩的东西&#xff0c;比如PC端AI助理&#xf…

给开源项目做一个漂亮简洁的版本迭代更新图,生成固定链接复制到介绍中、公众号菜单链接中、博客中和网页中等

背景 开源项目的版本迭代与更新经常需要更新迭代文档&#xff0c;但是readme.md没有比较美观一点的效果&#xff0c;所以文本分享一种第三方的方式&#xff1a;用TexSpire的免费在线文档分享功能&#xff0c;手机、PC、Pad都可以适配。 效果预览 使用 视频教程 第一步&…

重磅 | 思特威获得ISO 26262:2018汽车功能安全ASIL D流程认证证书

确保安全是汽车制造商和系统供应商的责任。为了从芯片IP级开始解决功能安全问题&#xff0c;国际标准化组织&#xff08;ISO&#xff09;在2018年追加了汽车半导体的功能安全评估指南。 彼时&#xff0c;新车搭载的芯片数量、种类以及软件代码行数开始呈现倍数增长。按照ISO 2…

重磅!华秋电子再次入选“中国产业数字化百强榜”

11月16日&#xff0c;由江苏省商务厅、南京市人民政府指导&#xff0c;南京市商务局主办的江苏电子商务大会暨第九届中国产业数字化年会在南京开幕。 据了解&#xff0c;会议上公开发布了“2022中国产业数字化百强榜”&#xff0c;这也是托比网自2015年以来发布的第13个榜单。榜…

ES6解构赋值及ES6的一些简写介绍

1、ES6解构赋值&#xff1a; ● 解构赋值&#xff0c;就是快速地从对象或者数组中取出成员的一个语法方式 (1) 解构数组&#xff1a; ● 快速从数组中获取成员 <script>//ES5的方式从数组中获取成员var arr [Jack,Rose,Tom]var a arr[0] //Jackvar b arr[1] //Ro…

实验六 数组(山东建筑大学)

第1关:实验6.1 任务描述 输入3个整数,按由大到小的顺序输出。 输入样例 1 1 2 3 输出样例 1 3 2 1 开始你的任务吧,祝你成功! 第2关:实验6.2 任务描述 输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。 输入样例 1 2 1 3 4 5 6 7 8 10 9 输…

感性认识一下Linux的进程地址空间和写时拷贝技术

虽然本篇文章对操作系统的理解不怎么深入&#xff0c;或者说仅仅是一些皮毛知识(也可能皮毛也算不上)&#xff0c;但还是需要读者有一些Linux的基础理解&#xff0c;如何确定是否有这些基础呢&#xff1f;可以参考我的这一篇博客&#xff1a;Linux —— 进程概念超详解! 1.“奇…

LeetCode 318 周赛

2460. 对数组执行操作 给你一个下标从 0 开始的数组 nums &#xff0c;数组大小为 n &#xff0c;且由 非负 整数组成。 你需要对数组执行 n - 1 步操作&#xff0c;其中第 i 步操作&#xff08;从 0 开始计数&#xff09;要求对 nums 中第 i 个元素执行下述指令&#xff1a;…

阿里 P8 架构师力荐 java 程序员人手一套 116 页 JVM 吊打面试官专属秘籍

只要是 java 程序员&#xff0c;肯定对于 JVM 来说并不陌生&#xff0c;甚至是从熟悉到陌生&#xff0c;为什么这样说呢&#xff1f;因为你看似熟悉的东西&#xff0c;其实对于源码层级了解得少之又少&#xff0c;到头来只有一种陌生的感觉&#xff0c;使用了吗&#xff1f;使用…

技术分享 | 多测试环境的动态伸缩实践

本文将从敏捷研发团队的环境需求与痛点出发&#xff0c;分享如何基于云构建可弹性伸缩的自动化生成式多测试环境&#xff1b;更在经济效益层面&#xff0c;提供了多种成本优化方案&#xff0c;以满足研发团队低成本、高效益的多测试环境运行目标。 一、当前遇到的环境问题 初…

论文阅读笔记 | 三维目标检测——AVOD算法

如有错误&#xff0c;恳请指出。 文章目录1. 背景2. 网络结构3. 实验结果paper&#xff1a;《Joint 3D Proposal Generation and Object Detection from View Aggregation》 1. 背景 AVOD同样是一个two-stage(使用了RPN提取候选框)、anchor-based网络结构。获得较高的召回率对…

【WPF】DiffPlex 文本比对工具

【WPF】DiffPlex 文本比对工具背景关于 DiffPlex准备代码实现效果图源码下载地址背景 现行的文本编辑器大多都具备文本查询的能力&#xff0c;但是并不能直观的告诉用户两段文字的细微差异&#xff0c;所以对比工具在某种情况下&#xff0c;就起到了很便捷的效率。 关于 DiffPl…

D. Extreme Subtraction(差分)

Problem - 1443D - Codeforces 给你一个由n个正整数组成的数组a。 你可以随意使用下面的操作&#xff1a;选择任何一个1≤k≤n的整数&#xff0c;做两件事中的一件。 将数组中的前k个元素递减1。 将数组的最后k个元素递减1。 例如&#xff0c;如果n5&#xff0c;a[3,2,2,1,4]…

【Pytorch with fastai】第 16 章 :训练过程

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

利用jemalloc优化mysql

此方法管理mysql内存也存在一定的弊端&#xff0c;根据自身情况进行选择 优点&#xff1a; jemalloc的确能对内存做一定优化&#xff0c;但是发现并不能解决所有内存碎片问题&#xff0c;只能说有一定缓解作用。 缺点&#xff1a; 使用jemalloc会带来内存增加问题&#xff0…

[附源码]java毕业设计零食销售系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…