字符串与包装类

一、实验简单介绍

在本章。我们将学习一些用于处理字符串的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包中,下表给出了包装类和基本数据类型的相应关系:

基本数据类型 相应包装类
byte Byte
boolean Boolean
short Short
char Character
int Integer
long Long
float Float
double Double

包装类的用途主要包括两种:
- 作为和基本数据类型相应的类类型存在,方便涉及到对象的操作。

- 包括每种基本数据类型的相关属性如最大值、最小值等。以及相关的操作方法。

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

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核心开发实战(二)——字符串与包装类相关推荐

  1. J2SE核心开发实战(一)——认识J2SE

    认识J2SE 一.课程简介 在本章学习开始前,你应该具备一些Java的基础知识.我们将在本章来认识J2SE,并复习一下前面学过的面向对象的相关知识. 注:所有的蓝色文字都是带超链接的,这些链接是本课程 ...

  2. 小米手环iOS开发实战(二):开发Demo让你的手环振动起来

    小米手环iOS开发实战(二):开发Demo让你的手环振动起来 上一节讲了CoreBluetooth的使用,理论知识很枯燥,那么现在先利用上一节讲的内容,做一个简易手环应用,实现连接/断开手环,查看手环 ...

  3. Android开发实战二之Hello Android实例

    编写第一个Android程序 Hello Android实例 1.创建Android虚拟设备(AVD) 在开始之前先创建一个Android虚拟设备. Window->Android SDK an ...

  4. 基于Flask框架的Python web程序的开发实战 二 项目组织结构

    看到第七章-大型程序的结构,备受打击,搞不清工厂函数.蓝本.单元测试,不理解这些对象/变量怎么传递的,感觉好乱,虽然按照源码都照抄了,还是不理解.... 缓缓先.... 本来网上的Flask的教程就比 ...

  5. 微信小程序蓝牙BLE开发实战——案例(二)

    微信小程序蓝牙BLE开发实战(二) 上篇主要介绍在开发过程中应用到相关API操作.接下来介绍个人在项目开发中应用蓝牙BLE一些事情. 由于时间比较仓促, 有些注释没那么详细.请理解~写的不好欢迎各位大 ...

  6. 小米手环iOS开发实战(一):iOS蓝牙框架CoreBluetooth

    小米手环iOS开发实战(一):iOS蓝牙框架CoreBluetooth 本项目为对小米手环进行二次开发,利用了小米手环蓝牙连接并不安全的特性,连接后可以获取手环数据,并可修改数据. 本实例使用Swif ...

  7. 小程序云开发实战步骤教程

    ####前言: 在学习云开发的时候将自己的学习过程记录下来了,放在了网上,收获了一波好评,今天下午在办公室没有事情,也发现之前有人在博客里面评论,你这个教程还有一半哩,可能是csdn的自动搬运功能出来 ...

  8. 【SQL开发实战技巧】系列(十二):三问(如何对字符串字母去重后按字母顺序排列字符串?如何识别哪些字符串中包含数字?如何将分隔数据转换为多值IN列表?)

    系列文章目录 [SQL开发实战技巧]系列(一):关于SQL不得不说的那些事 [SQL开发实战技巧]系列(二):简单单表查询 [SQL开发实战技巧]系列(三):SQL排序的那些事 [SQL开发实战技巧] ...

  9. Taro多端开发实现原理与项目实战(二)

    Taro多端开发实现原理与项目实战(二) 多端电商平台项目概述及开发准备 学习了前面的基础知识和进阶后是否跃跃欲试?我们准备了一个电商平台的项目来和大家一起实践使用 Taro 开发电商平台. 项目概述 ...

最新文章

  1. android热更新插件,与Android热更新方案Amigo的再次接触
  2. Chapter 1. Introduce
  3. 解决阿里云OSS跨域问题
  4. linux 自带 mysql,linux下安装mysql
  5. 机器学习总结(17)-XGBoost
  6. 《Python Cookbook 3rd》笔记(2.4):字符串匹配和搜索
  7. 【英语学习】【WOTD】vox populi 释义/词源/示例
  8. mysql bin 恢复工具_基于binlog恢复工具mysqlbinlog_flashback
  9. 语音识别在智能交通中的几种应用分析
  10. Web3D编程入门总结——WebGL与Three.js基础介绍
  11. PHP 中检查是否关联数组(多维数组)的方法 (UPDATE!)
  12. STC8PROG - Linux下的 STC8G STC8H 烧录工具
  13. 林文信12小时学会流行键盘基础教程-爱奇艺链接地址
  14. 阿里云智能技术战略架构师陈绪:透视2019云计算酣战
  15. 公司固定资产该哪个部门管理,一般公司固定资产怎么管理
  16. matlab 斜坡信号响应,matlab斜坡输入响应
  17. 多线程性能及效率问题
  18. Neurodevelopment of the association cortices: Patterns, mechanisms:综述——联合皮层神经发育的模式和对精神病学的启发
  19. php--如何编写一个简易的论坛
  20. lab1 partⅣ

热门文章

  1. 随机对照试验设计有哪些先天优势?
  2. android助手专业版,开发助手专业版 v5.6.1-cs for Android 直装付费专业版
  3. oracle for循环_浅谈Oracle的执行计划
  4. 机器人学习--Imperial College London机器人学课程
  5. Verilog功能模块——符号位扩展
  6. kaggle上传数据集遇到Default slug detected, please change values before uploading
  7. 【ML】 李宏毅机器学习一:error
  8. Windows中常用的git GUI客户端的介绍
  9. monkey测试_爱码小士丨 APP稳定性测试(附视频详解)
  10. 操作系统设计与实现第3版笔记与minix3心得(4)-操作系统发展历史(2)