当前位置: 首页 > news >正文

一个月学会Java 第7天 字符串与键盘输入

Day7 字符串与键盘输入

字符串作为所有程序都很重要的东西,这个东西必须好好的学习,在Java中String会比较好学习,比起C和C++里面会更加的简单,
在Java之中也是很好理解的,因为底层已经封装好了char数组,也就是字符串
请添加图片描述

第一章 字符串

字符串的声明非常的简单,只需要使用使用String这个类作为数据类型即可, String name = "XingZai"
,String这个类是特殊的类,可以直接写值而不需要使用new关键字,这是在jdk1.2版本开始就优化了这个,可以直接写了,但是还是保留着的,而且是不一样的,待会就稍微浅讲一下。

还记得我之前所说的,使用new就相当于是创建对象,然后这个对象直接丢入打印里面就是直接调用这个对象的 toString()
这个方法,但是我们来看方法名,是不是 to String,转换到String类型,但是我们的String本来就是String是吧,所以String的toString()
其实就是打印自身,直接上代码

public class Hello {public static void main(String[] args) {String name = "123123";System.out.println(name);}
}

请添加图片描述

感觉这个没有什么好说的,还是非常简单的,声明是这样,然后就是我们之前讲过的拼接字符串,使用 +
号,在数字和数字之间是计算,但是在字符串和其他面前就是拼接了,可以拼接的又但不限于,数字,布尔值,和对象,因为如果拼接对象的话会自动调用这个对象的toString()
方法也就是那个 类@hashCode

public class Hello {public static void main(String[] args) {String s = "123123" + true;System.out.println("s: " + s);String s2 = "Hello: " + new Hello();System.out.println(s2);}
}

请添加图片描述

接下来我们来自定义一下这个toString方法,比如现在我们使用的是Hello类的对象,那我们直接写就行了

public class Hello {public static void main(String[] args) {System.out.println(new Hello());}//toString方法是一个返回String类型的方法,我们只需要在返回值上加上就行public String toString() {return "Hello类" + "123";}
}

请添加图片描述

欧克,接下来我们来讲讲,jdk1.1及之前的使用new关键字创建String对象的方法,和我们现在直接写String的方法有什么区别。这个时候我们还需要知道一个方法,这个是所有的类都有的这么一个方法除了toString()
之外都有的这么一个方法,那就是hashCode()
,之前我也说过了在Java中地址的显示都是通过hashCode的方式来显示了,所以我们的这个 hashCode()这个方法就是获取他的hashCode

public class Hello {public static void main(String[] args) {//传统创建对象的方式来创建String类的对象String s = new String("123");String s1 = "123";System.out.println("s: " + s);System.out.println("s1: " + s1);System.out.println("s: " + s.hashCode());System.out.println("s1: " + s1.hashCode());boolean b = s == s1;System.out.println("s == s1: " + b);if (!b)System.out.println("哈希值是不是一样,但是让他判断竟然是false");Hello hello = new Hello();Hello hello1 = hello;System.out.println("hello: " + hello);System.out.println("hello1: " + hello1);System.out.println(hello1 == hello);}
}

请添加图片描述

是不是感到了深深的疑惑,同样的hashCode,Hello类的对象就是相等,但是同样hashCode的字符串竟然不是相等,你们先别急,我来慢慢道来,这个时候就需要画个图了,请出灵魂画手,s1这个对象是怎么指的

请添加图片描述

(了解Java内存的先别喷,现在还不分开来说,无论常量池,堆还是方法区等等现在都统一叫做内存空间)
我们再来看看,s这个对象是怎么指的

请添加图片描述

所以比对才是不一样的,hello和hello1一样的是因为他们都是指向原hello这个对象,我们的s打印的其实可以理解为toString的hashCode,还是追去
"123"去取hashCode了,但是实际比对比的还是 "123"和s在内存中的映射,咱们直接来看源码
请添加图片描述

拿的都是底层的字符数组,来计算的,所以hashCode才会一样,实际上就是我画的图的那样的指向

这个就是字符串的难题了,剩下的就是很简单的调用一下String这个类的方法,因为直接写的字符串就是String这个类的对象,所以直接使用
.方法() 的操作就行

public class Hello {public static void main(String[] args) {/*在String类中还是有很多方法的,有很多实用的方法,比较常用的比如![请添加图片描述](https://i-blog.csdnimg.cn/direct/c439b9a3ec4c459cb713c7ac1579aa1c.png)length,isEmpty,equals,toCharArray,split,indexOf,replace,toUpperCase,toLowerCase,trim*///第一个length,顾名思义,就是长度String s1 = "123456";System.out.println("s1.length(): " + s1.length());System.out.println("======");//第二个isEmpty,顾名思义,是空,如果真的空就会返回true,如果不是那就返回false//这个\是转义字符,待会会讲,现在在讲String类的APISystem.out.println("\"123\".isEmpty()" + "123".isEmpty());System.out.println("\"\".isEmpty()" + "".isEmpty());System.out.println("======");//第三个equals就是相等的意思,这个是比对字符串用的,因为使用==比对的其实是hashCodeSystem.out.println("equals()" + new String("123").equals("123"));System.out.println("======");//第四个toCharArray就是转换char数组String s2 = "123456";char[] charArray = s2.toCharArray();for (char c : charArray) {System.out.print(c + " ");}System.out.println();System.out.println("======");//第五个split,的意思是切割,根据给的参数切割字符串String s3 = "123 456 789";String[] strings = s3.split(" ");for (String str : strings) {System.out.println(str);}System.out.println("======");//第六个indexOf 下标String s4 = "123456";int i = s4.indexOf('3');System.out.println("index: " + i);System.out.println("======");//第七个replace 重新放置String s5 = "123456";String replace = s5.replace('1', '4');System.out.println("replace: " + replace);System.out.println("======");//第八个toUpperCase 大写转换System.out.println("abc".toUpperCase());System.out.println("======");//第九个toLowerCase 小写转换System.out.println("QWE".toLowerCase());System.out.println("======");//第十个trim 去除前后空格System.out.println("  123123  456456  ".trim());}
}

请添加图片描述

我话先说在前头,这个东西不用死记,用到就记住了,前提稍微学好一点英语,以后上ide之后直接翻结构来查看用方法。

接下来就是我上个代码里面要讲的一个知识点,转义符,在Java中的转义符是有很多的,比如有 \n,\r,\',\",\\,\t
等等,有很多,我就举这几个例子,还有更多的可以去查看ascii码的表里面其实是有的

public class Hello {public static void main(String[] args) {//\n 换行,这个很熟悉,因为在println的末尾会自动添上这么一个,当然也可以手动添加System.out.println("123\n123456");System.out.println("======");//\r 这个是做回车作用的,单个时候就是回到这一行的开头System.out.println("123456\r456");System.out.println("以上是发生了替换");System.out.println("======");//\t 制表符的打印System.out.println("123\t123");System.out.println("======");//\\,\',\" 这个就是转义了,就是直接打印//因为默认的双引号就是字符的开头和结尾,你想要在字符串里面有双引号就需要转义//然后反斜杠本来就是转移符,所以需要转义才能打印出来//还有一个就是单引号,在字符串里面其实可以直接使用,但是在其他语言中不一样//比如python,他无论单引号还是双引号都是字符串,所以这个就需要用到转义//但是在java中如果是你字符串那你就不需要转义了,因为单引号没有阻碍任何东西System.out.println("\\,\',\"");}
}

请添加图片描述

字符串还有一个内容,那就是可以通过字符串转换其他类型,这个会在之后的常用类里面讲到,不少方法是放在包装类里的,之后学会了包装类之后,那就是真的完全拿捏了字符串了

字符串暂时就先讲这么多内容了,只要你都会了就说明你对字符串了如指掌了,那对 System.out.println() 用起来会更加的得心应手

第二章 键盘输入

我们进行开发自然少不了要输入,首先我们想要输入需要引入一个东西,在我们说数组的时候,其实已经讲解过什么是引入,那就是import,在我们使用这个输入类的时候,我们就需要引入一下这个类,就和数组工具Arrays一样

首先我们先说这个类在哪里,这个类在java.util.Scanner,没错这个类就叫做Scanner,然后我们引入了这个类就可以创建这个类的对象并进行使用了

import java.util.Scanner;public class Hello {public static void main(String[] args) {//我们先来创建对象,这次我们需要在括号里添加东西了Scanner scanner = new Scanner(System.in);//scanner内有多种方法,我们根据需要选择对应的方法,比如我们要输入int类型那就使用nextIntSystem.out.println("请输入:");int i = scanner.nextInt();System.out.println(i);}
}

请添加图片描述

我们使用了之后,会出现光标卡住,这里其实就是在等待我们输入了,然后我们直接输入数字,因为我们使用的是int类型的键入

请添加图片描述

这样就完成了我们的输入,那如果你不想输入数字的话,输入了别的,然后代码里面写的是nextInt的话,那就会报错
请添加图片描述

这样就会报错,因为我们的nextInt只能接受int类型的输入,输入其他的就会报这样的错误,说是 输入类型适配错误异常,所以我们只需要调整代码或者是外部的输入就不会报错了

我们可以使用的方法有但不限于这张图里面显示的方法

请添加图片描述

然后我们可以依次类推,是不是看到了除nextInt之外的nextDouble,nextFloat等等,其实都是获取对应类型的值的,我们还有特殊的两个,一个是next()
,一个是nextLine,他们分别为空格结尾和回车作为结尾,然后返回的都是字符串类型

import java.util.Scanner;public class Hello {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("请输入:");String next = scanner.next();System.out.println(next);}
}

请添加图片描述

就和我说的一样,从空格开始就隔断了

import java.util.Scanner;public class Hello {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("请输入:");String next = scanner.nextLine();System.out.println(next);}
}

请添加图片描述

使用Line的时候就是在一行结束之后也就是碰到回车了之后才隔断

import java.util.Scanner;public class Hello {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("请输入:");for (int i = 0; i < 2; i++) {String next = scanner.next();System.out.println(next);}}
}

请添加图片描述

我们明显可以看到,空格自动隔开,如果后面还有获取,或者循环了一下这个获取,还是能获取到的,所以我们可以使用这种方式进行数组的输入啊等等,因为int,double,float等等都是和next是一样的,只有nextLine是特殊的。

相关文章:

一个月学会Java 第7天 字符串与键盘输入

Day7 字符串与键盘输入 字符串作为所有程序都很重要的东西&#xff0c;这个东西必须好好的学习&#xff0c;在Java中String会比较好学习&#xff0c;比起C和C里面会更加的简单&#xff0c; 在Java之中也是很好理解的&#xff0c;因为底层已经封装好了char数组&#xff0c;也就是…...

Java后端面试题(day16)

目录 java常见的引用类型java中深拷贝和浅拷贝如何设计一个秒杀系统?谈一下对高并发的理解&#xff0c;平时怎么处理高并发问题?Comparable和Comparator区别&#xff1f;解决hash冲突有哪些方法&#xff1f;Synchronized锁的升级过程 java常见的引用类型 java的引用类型一般分…...

Auto-Animate:是一款零配置、即插即用的动画工具,可以为您的 Web 应用添加流畅的过渡效果

嗨&#xff0c;大家好&#xff0c;我是小华同学&#xff0c;关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法 用户体验成为了检验产品成功与否的关键因素。而动画效果&#xff0c;作为提升用户体验的重要手段&#xff0c;在网页和应用开发中扮演着举足轻重的角色…...

k8s之ingress-nginx-controller安装

作者&#xff1a;程序那点事儿 日期&#xff1a;2024/01/30 01:25 要在master节点上安装 helm repo add ingress-nginx Welcome - Ingress-Nginx Controller helm search repo ingress-nginx helm pull ingress-nginx/ingress-nginx --version 4.4.2 mv ingress-nginx-4.4.…...

力扣SQL仅数据库(1098~1132)

1098 小众书籍 需求 编写解决方案&#xff0c;筛选出过去一年中订单总量 少于 10 本 的 书籍&#xff0c;并且 不考虑 上架距今销售 不满一个月 的书籍 。假设今天是 2019-06-23 。 返回结果表 无顺序要求 。 数据准备 Create table If Not Exists Books (book_id int, nam…...

优惠点餐api接口对接的具体步骤是什么?

优惠点餐API接口对接的具体步骤通常包括以下几个阶段&#xff1a; 需求分析&#xff1a;明确对接的目标和需求&#xff0c;例如实现在线点餐、订单管理、支付集成等 。选择API服务提供商&#xff1a;根据业务需求选择合适的点餐API服务提供商 。注册和获取API密钥&#xff1a;…...

【韩顺平Java笔记】第8章:面向对象编程(中级部分)【297-313】

文章目录 297. super基本语法297.1 基本介绍297.2 基本语法 298. super使用细节1299. super使用细节2300. super使用细节3301. 方法重写介绍302. 方法重写细节303. 重写课堂练习1304. 重写课堂练习2输出结果&#xff1a; 姓名&#xff1a;田所浩二 年龄:24305. 养宠物引出多态3…...

快递批量查询物流追踪只揽收无物流信息的单号

在电子商务和物流领域&#xff0c;快递单号的追踪是确保货物顺利送达的关键环节。然而&#xff0c;在实际操作中&#xff0c;经常会遇到一些只显示揽收信息而没有后续物流更新的单号&#xff0c;这给商家和买家都带来了不小的困扰。本文将介绍如何通过快递批量查询物流的方法&a…...

【动态网站资源保存下载】

文章目录 概要解决思路技术细节小结 概要 我们在网上浏览网站时&#xff0c;经常有这样的需求&#xff1a;将浏览的网页保存下来&#xff0c;即使无网的情况下也可以继续浏览。比如一些教育类网站的PPT&#xff0c;内容为HTML格式的&#xff0c;无法作为PPT格式下载下来&#…...

Selenium自动化测试中如何处理数据驱动?

在自动化测试中&#xff0c;数据驱动&#xff08;Data-Driven Testing&#xff09;是指通过外部数据源&#xff08;如Excel、CSV、数据库等&#xff09;来控制测试用例的执行&#xff0c;而不是直接在代码中硬编码数据。这种方式可以提高测试的灵活性和可维护性&#xff0c;使得…...

淘宝API接口系列有哪些内容?

淘宝API&#xff08;Application Programming Interface&#xff09;接口系列是一套允许开发者与淘宝平台进行数据交互的接口集合&#xff0c;涵盖了商品信息、订单信息、物流信息、用户信息以及营销等多个方面的数据接口。以下是对淘宝API接口系列内容的详细归纳&#xff1a; …...

华为OD机试 - 冠亚军排名(Java 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;E卷D卷A卷B卷C卷&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加…...

VmWare中安装CenterOs(内网服务器)

VmWare中安装CenterOs(内网服务器) 文章目录 VmWare中安装CenterOs(内网服务器)[toc] 一 、CentOS 7的下载与安装1、下载2、安装&#xff08;1&#xff09;前期准备&#xff08;2&#xff09;正式安装 开始等待&#xff01;&#xff01;&#xff01; 二、软件仓库更换1、root用…...

JS 数组去重 — 各类场景适合方法大全

JS 数组去重 — 各类场景适合方法大全 本文介绍各种场景 JS 去重 方法使用 性能最好、用的最多、场景大全 文章目录 JS 数组去重 — 各类场景适合方法大全 一、基础篇&#xff1a;简单直观的去重方法1. 使用Set数据结构2. 利用filter和indexOf方法3. reduce方法的应用 二、进阶…...

【Java 问题】集合——List

List 1.说说有哪些常见集合&#xff1f;2.ArrayList和LinkedList有什么区别&#xff1f;3.ArrayList的扩容机制了解吗&#xff1f;4.ArrayList怎么序列化的知道吗&#xff1f; 为什么用transient修饰数组&#xff1f;5.快速失败(fail-fast)和安全失败(fail-safe)了解吗&#xf…...

xss 跨站脚本攻击

XSS 的全称是 Cross-Site Scripting&#xff08;跨站脚本攻击&#xff09;。是一种常见的web安全漏洞。 1. XSS 的定义 XSS 是一种注入类型的攻击&#xff0c;攻击者将恶意脚本注入到受信任的网站中。当其他用户访问该网站时&#xff0c;这些脚本会在用户的浏览器中执行。 2…...

5.toString()、构造方法、垃圾回收、静态变量与静态方法、单例设计模式、内部类

文章目录 一、toString()1. 优缺点2. 使用方法举例① Dos类里更省事的方法 ② Application里 二、构造方法1. 导入2. 什么是构造方法3. 怎么写构造方法① 无参的构造方法(无参构造器)② 有参的构造方法(有参构造器)③ 注意 4. 构造方法的重载 三、再探this1. 给成员变量用2. 给…...

Fiddler配合wireshark解密ssl

环境&#xff1a; win11&#xff08;wireshark&#xff09;--虚拟机win7&#xff08;Fiddler&#xff09;---虚拟机win7&#xff08;HTTPS站点&#xff09; 软件安装问题&#xff1a; 需要.net环境&#xff0c;NDP461-KB3102436-x86-x64-AllOS-ENU.exe。 安装fiddler后安装下…...

【UI】将 naive ui 的 message 封装进axios 中,关于naiveui的message相关的用法

文章目录 前言在setup外进行使用直接包裹使用vue 单文件中使用 参考文章&#xff1a; 关于naiveui的message相关的用法 前言 最近新建了一个vite vu3 的项目&#xff0c;完全是从0 到1 &#xff0c;封装到request 的时候 想对axios 请求做一个全局的处理&#xff0c;但发现…...

IC卡批量加密快速写入

我们常用的非接触式IC卡&#xff0c;简称M1卡&#xff0c;他有16个扇区&#xff0c;每个扇区有A密码和B密码 对数据的读写是要验证密码的&#xff0c;因此卡片正式使用前&#xff0c;需要把卡片密码改成需要的密码&#xff0c;系统才可以识别 由于一次加密卡片数量比较大&#…...

软件测试学习笔记丨tcpdump 与 wireshark

本文转自测试人社区&#xff0c;原文链接&#xff1a;https://ceshiren.com/t/topic/32333 一、抓包分析TCP协议 1.1 简介 TCP协议是在传输层中&#xff0c;一种面向连接的、可靠的、基于字节流的传输层通信协议。 1.2 环境准备 对接口测试工具进行分类&#xff1a; 网络嗅…...

Redis:分布式 - 哨兵

Redis&#xff1a;分布式 - 哨兵 概念哨兵 Docker 搭建哨兵分布式选举流程 概念 Redis 的主从复制模式下&#xff0c;一旦主节点由于故障不能提供服务&#xff0c;需要人工进行主从切换&#xff0c;同时大量的客户端需要被通知切换到新的主节点上&#xff0c;对于上了一定规模…...

开源城市运动预约的工具类小程序源码

运动场馆预约小程序是一款主要针对城市运动预约的工具类程序&#xff0c; 产品主要服务人群为20-45岁运动爱好者&#xff0c; 程序前后端完整代码&#xff0c;包括场馆动态&#xff0c;运动常识&#xff0c;羽毛球场地预约&#xff0c;足球场地预约&#xff0c;篮球场地预约&a…...

SldWorks问题 2. 矩阵相关接口使用上的失误

问题 在计算三维点在图纸&#xff08;DrawingDoc&#xff09;中的位置时&#xff0c;就是算不对&#xff0c;明明就4、5行代码&#xff0c;怎么看都是很“哇塞”的&#xff0c;毫无问题的。 但结果就是不对。 那就调试一下吧&#xff0c;调试后发现生成的矩阵很不对劲&#…...

2024十月超全大模型常见面试题(附答案)

大模型相关的面试问题通常涉及模型的原理、应用、优化以及面试者对于该领域的理解和经验。以下是一些常见的大模型面试问题以及建议的回答方式&#xff1a; 请简述什么是大模型&#xff0c;以及它与传统模型的主要区别是什么&#xff1f; 回答&#xff1a;大模型通常指的是参…...

Java 的数据结构整理(整合版)

Java 的数据结构整理&#xff08;整合版&#xff09; 一、数据输入输出 https://www.runoob.com/java/java-scanner-class.html 这部分是为了预防 leetcode 刷习惯了&#xff0c;忘记怎么处理输入输出的问题 数据输入 Java的数据输入和 C 相比非常繁琐&#xff0c;因此大多…...

如何让信息学奥赛学习“边玩边学”?——趣味编程让枯燥学习变得有趣

信息学奥赛&#xff08;NOI&#xff09;作为一项高水平的编程竞赛&#xff0c;内容涉及到大量的算法、数据结构和复杂的逻辑思维&#xff0c;对学生的要求非常高。然而&#xff0c;面对枯燥的知识点和高难度的题目&#xff0c;很多学生在备赛过程中容易感到乏味甚至放弃。那么&…...

【艾思科蓝】C++游戏开发探秘:打造高性能游戏世界的钥匙

【IEEE出版 | 院士、Fellow报告】第八届电气、机械与计算机工程国际学术会议&#xff08;ICEMCE 2024&#xff09;_艾思科蓝_学术一站式服务平台 更多学术会议请看&#xff1a;学术会议-学术交流征稿-学术会议在线-艾思科蓝 引言 在当今的游戏开发领域&#xff0c;C以其高效、…...

企业如何做好数据安全防泄密?10个你不知道的防泄密措施

随着数字化转型的加速推进&#xff0c;企业在处理和存储大量数据时&#xff0c;数据泄密风险也显著增加。从客户资料到商业机密&#xff0c;敏感数据一旦泄露&#xff0c;可能对企业造成不可估量的损失。为了更好地应对这一挑战&#xff0c;企业需要采取全面的防泄密策略。以下…...

MySQL基本操作(1)

初始数据库 数据库的基本概念 数据库是一个按照数据结构来组织、存储和管理数据的仓库&#xff0c;换句话说&#xff0c;就是存储数据的仓库。 为何使用数据库&#xff1f;使用数据库不仅仅为了使数据持久化&#xff0c;还能使得数据能够进行有效的管理&#xff0c;以…...