J2SE核心开发实战(二)——字符串与包装类

2023-12-06 23:48

本文主要是介绍J2SE核心开发实战(二)——字符串与包装类,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

字符串与包装类

一、实验简介

在本章,我们将学习一些用于处理字符串的API以及包装类的相关知识。

本章知识点

  • 字符串API
  • 包装类及其应用

二、认识字符串类

1. 什么是字符串类

Java字符串类(java.lang.String)是Java中使用最多的类,也是最为特殊的一个类,很多时候,我们对它既熟悉又陌生。

首先你要知道什么是字符串:

字符串(String)是由数字、字母、下划线组成的一串字符,是编程语言中表示文本的数据类型。

你可以查看更多关于字符串的知识。

操作字符串的常用方法有复制、计算其长度、查找字符串中的某些字符等。

然而,Java标准库中的String类包含很多的方法,要想记住所有的类和方法是一件不太可能的事情。最好的办法就是养成随时查阅API文档的习惯。在最后的参考文献中我们为你提供了官方API文档的链接,你可以在其中详细查看每一个操作字符串的方法。

查阅API文档对于未来章节的学习也十分重要,请保持这个习惯。

2. 用String类中的自带方法操作字符串

在Eclipse中创建项目StringUtil,新建一个com.shiyanlou.course包,并创建StringTools类。

这里会用到trim()substring()equals()length()方法,
- String trim(),该方法返回一个新字符串,新的字符串删除了原始串中首尾的空格。
- String substring(int beginIndex, int endIndex),该方法返回一个新字符串,新的字符串包含原来字符串中从beginIndexendIndex-1的所有内容。
- boolean equals(Object other),该方法用于比较两个字符串,如果原字符串与忽略大小写的情况下与other相等,则返回true
- int length(),该方法返回一个字符串的长度。

这个项目首先需要获取来自用户的输入,然后去除输入的字符串中首尾多余的空格,再与字符串shiyanlou相比较,如果两个字符串相同,则截取该字符串前6位部分作为新的字符串。

主要的代码如下:

同样,你不必在实验环境中输入这些中文注释。

package com.shiyanlou.course;import java.util.Scanner;public class StringTools {public static void main(String[] args) {String a = new String();String b = new String();String c = new String();//创建3个字符串对象Scanner scan = new Scanner(System.in);// 创建扫描器System.out.println("Please input a sentence with 10 more letters include space(s) : ");// 获得用户输入的包含空格的字符串a = scan.nextLine();//将键盘上的输入赋到字符串a中b = a.trim();//将a中头部和尾部的空格去掉,赋值到b中if(b.equals("shiyanlou"))c = b.substring(0, 6);else {c = "";}//如果b字符串为shiyanlou,则取其第0个到第6个字符作为子串,赋值到c中//如果b字符串不为shiyanlou,则c的值为空System.out.println("a :"+a);System.out.println("The length of a is :"+a.length());System.out.println("b :"+b);System.out.println("The length of b is :"+b.length());System.out.println("c :"+c);System.out.println("The length of c is :"+c.length());//分别输出a、b、c三个字符串及其长度}}

点击编译并运行,在控制台先输入5个空格,紧接着输入shiyanlou,再输入4个空格并回车,可以看到输出结果如下:

字符串

你可能想问:我们在比较字符串的时候为什么不用==而用equals()呢?
你可以点此了解更多关于”==”和equals的信息。

三、认识包装类

1. 什么是包装类

我们知道,Java语言是面向对象的,但Java中的基本数据类型却不是面向对象的。这在实际使用过程中造成了诸多不便。为了解决此问题,Java语言的设计者们在设计类时,为每种基本数据类型也设计了一个对应的类。这八个和基本数据类型对应的类统称为包装类(Wrapper Class),也称为外覆类或数据类型类。

包装类均位于java.lang包中,下表给出了包装类和基本数据类型的对应关系:

基本数据类型对应包装类
byteByte
booleanBoolean
shortShort
charCharacter
intInteger
longLong
floatFloat
doubleDouble

包装类的用途主要包含两种:
- 作为和基本数据类型对应的类类型存在,方便涉及到对象的操作。
- 包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法。

下面我们通过一个例子来进一步认识包装类。

2. 比较Double类型

首先你应该知道doubleDouble的区别,前者是基本的数据类型,后者是引用类型,即包装类。我们可以直接使用普通运算符“==”对基本数据类型进行比较,但如果将“==”用于比较引用类型的话,只会判断其内存地址是否相同,并且结果通常是否定的。

在Eclipse中创建项目DoubleCompare,新建一个com.shiyanlou.course包,并创建DoubleCompare类。

在该类的main()方法中,定义两个含有数字的字符串并将其转换为Double类型的数据。

String s_1 = "123.321";
String s_2 = "567.765";
//显然,这里的123.321和567.765都不是数值,而是“一句话”
//你也可以自定义这些数字Double num_1 = Double.parseDouble(s_1);
Double num_2 = Double.parseDouble(s_2);
//定义了Double类型的数据,并将字符串转换为双精度浮点数赋予其值

上面的parseDouble(String s)就是Double类中自带的将字符串中的数字转换为double类型的方法。

我们再将其输出。

System.out.println("number 1: " + num_1);
System.out.println("number 2: " + num_2);

然后我们来比较这两个数据,主要代码如下:

switch (num_1.compareTo(num_2)) {case -1:System.out.println("number 1 is smaller than number 2");break;case 0:System.out.println("number 1 is equal to number 2");break;case 1:System.out.println("number 1 is bigger than number 2");break;
}

相信你能够理解这个分支语句的含义。需要特别说明的是,compareTo(Double anotherDouble)也是Double类提供的一个方法,用于比较两个Double类型数据的大小,返回值为int类型,-101分别代表小于、等于和大于。

该案例的完整代码如下图所示:

完整代码

点击编译并运行,可以在控制台看到输出结果:

结果

四、实验总结

在本章我们主要学习了字符串的定义和常用的生成子串、去除空格、比较等方法,和包装类的定义及其主要的操作方法。参考文档中为你提供了更多关于它们的知识,不妨试试字符串拼接等本课程还未用到的方法。在实验楼学习结束后,也不要忘记多看看这些API文档,多动手写写代码,天道酬勤!

五、作业

请使用String类的toLowerCase()toUpperCase()方法写一个字符串大小写转换工具。

参考文档

关于字符串API,你可以查看Java SE官方文档获取更多更好玩的内容:
+ Java SE官方API文档 - Java.lang.String

以下是Java中一些包装类的官方技术文档:

  • Java SE官方API文档 - Java.lang.Byte
  • Java SE官方API文档 - Java.lang.Boolean
  • Java SE官方API文档 - Java.lang.Integer

我们没有给出所有的包装类参考文档,请你自己动手Ctrl+F体会一下查找的过程。

本文原文链接:https://www.shiyanlou.com/courses/111 本课为实验楼原创课程,转载请注明。

这篇关于J2SE核心开发实战(二)——字符串与包装类的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/463784

相关文章

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

C++包装器

包装器 在 C++ 中,“包装器”通常指的是一种设计模式或编程技巧,用于封装其他代码或对象,使其更易于使用、管理或扩展。包装器的概念在编程中非常普遍,可以用于函数、类、库等多个方面。下面是几个常见的 “包装器” 类型: 1. 函数包装器 函数包装器用于封装一个或多个函数,使其接口更统一或更便于调用。例如,std::function 是一个通用的函数包装器,它可以存储任意可调用对象(函数、函数

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount