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),该方法返回一个新字符串,新的字符串包括原来字符串中从beginIndex到endIndex-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个空格并回车。能够看到输出结果例如以下:
watermark/1/image/aHR0cDovL3N5bC1zdGF0aWMucWluaXVkbi5jb20vaW1nL3dhdGVybWFyay5wbmc=/dissolve/60/gravity/SouthEast/dx/0/dy/10" alt="字符串" title="">
你可能想问:我们在比較字符串的时候为什么不用==而用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类型
首先你应该知道double和Double的差别,前者是基本的数据类型,后者是引用类型。即包装类。我们能够直接使用普通运算符“==”对基本数据类型进行比較。但假设将“==”用于比較引用类型的话,仅仅会推断其内存地址是否同样。而且结果一般是否定的。
在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类型。-1、0、1分别代表小于、等于和大于。
该案例的完整代码例如以下图所看到的:
watermark/1/image/aHR0cDovL3N5bC1zdGF0aWMucWluaXVkbi5jb20vaW1nL3dhdGVybWFyay5wbmc=/dissolve/60/gravity/SouthEast/dx/0/dy/10" alt="完整代码" title="">
点击编译并执行。能够在控制台看到输出结果:

四、实验总结
在本章我们主要学习了字符串的定义和经常使用的生成子串、去除空格、比較等方法,和包装类的定义及其基本的操作方法。
參考文档中为你提供了很多其它关于它们的知识。最好还是试试字符串拼接等本课程还未用到的方法。
在实验楼学习结束后,也不要忘记多看看这些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核心开发实战(二)——字符串与包装类的更多相关文章
- J2SE核心开发实战(一)——认识J2SE
认识J2SE 一.课程简单介绍 在本章学习開始前,你应该具备一些Java的基础知识. 我们将在本章来认识J2SE,并复习一下前面学过的面向对象的相关知识. 注:全部的蓝色文字都是带超链接的,这些链接是 ...
- J2SE核心开发实战
原图链接:http://naotu.baidu.com/file/7e3fb5d333b8cb665038390617834559?token=3c3c9d183944dd8e 课程来源:https: ...
- Gin + Vue全栈开发实战(二)
尝试地写了第一篇自己学习Go Web框架的感受和入门的文章,发现反响还不错,大家也提出了很多的问题来一起交流.近期也渐渐地出现了很多有关go语言开发的相关文章,包括有在蚂蚁金服的大牛的分享,我也一直有 ...
- Python自动化运维开发实战 二、Python基本用法
导语: Python编程博大精深,知识点众多,需要先整体上了解python的一些基本用法之后再去对每一个知识点细细研究,这样学习的速度会快很多.所以下面就先看一些python事先需要知道的基本知识. ...
- 基于Flask框架的Python web程序的开发实战 <二> 项目组织结构
看到第七章-大型程序的结构,备受打击,搞不清工厂函数.蓝本.单元测试,不理解这些对象/变量怎么传递的,感觉好乱,虽然按照源码都照抄了,还是不理解.... 缓缓先.... 本来网上的Flask的教程就比 ...
- SDL 开发实战(二):SDL 2.0 核心 API 解析
在上一篇文章 SDL 开发实战(一):SDL介绍及开发环境配置 中,我们配置好了SDL的开发环境,并成功运行了SDL的Hello World 代码.但是可能大部分人还是读不太明白具体Hello Wol ...
- HIbernate学习笔记(二) hibernate对象的三种状态与核心开发接口
1.在hibernate中持久化对象有三个状态,这个面试时可能会问到: (1)transient瞬时态:在数据库中没有与之匹配的数据,一般就是只new出了这个对象,并且在session缓存中也没有即此 ...
- 【课程分享】ASP.NET MVC5&微信公众平台整合开发实战(响应式布局、JQuery Mobile,Windows Azure、微信核心开发)
对这个课程有兴趣的,能够联系我QQ2748165793 基础知识储备 ASP.NET MVC 5基础(6讲) 第一讲-初识ASP.NET MVC并搭建整合开发环境 第二讲-深入MVC开发模式 第三讲- ...
- 基于.net开发chrome核心浏览器【二】
原文:基于.net开发chrome核心浏览器[二] 一: 上一篇的链接: 基于.net开发chrome核心浏览器[一] 二: 相关资源介绍: chrome Frame: 让IE有一颗chrome的心, ...
随机推荐
- linux 安装SNV服务
1.安装vnc server[root@pxe ~]# yum install tigervnc-server -y 2.设置 vnc server 开机启动[root@pxe ~]# chkconf ...
- Objective-c 实例变量的访问级别
在C#和JAVA中无论是method还是variable都有严格的访问级别控制,那么在object-c中对访问级别的使用非常稀少,原因可能是因为在method上没有访问级别的语法,单单控制变量没有什么 ...
- Playrix Codescapes Cup (Codeforces Round #413, rated, Div. 1 + Div. 2) 一夜回到小学生
我从来没想过自己可以被支配的这么惨,大神讲这个场不容易掉分的啊 A. Carrot Cakes time limit per test 1 second memory limit per test 2 ...
- OTOCI(bzoj 1180)
Description 给出n个结点以及每个点初始时对应的权值wi.起始时点与点之间没有连边.有3类操作: 1.bridge A B:询问结点A与结点B是否连通.如果是则输出“no”.否则输出“yes ...
- msp430项目编程53
msp430综合项目---扩展项目三53 1.电路工作原理 2.代码(显示部分) 3.代码(功能实现) 4.项目总结
- 查看mysql库中所有表的大小和记录数
查看mysql库中所有表的大小和记录数 ,), 'MB') as total_size FROM information_schema.TABLES WHERE TABLE_SCHEMA='datab ...
- SPOJ 1479 +SPOJ 666 无向树最小点覆盖 ,第二题要方案数,树形dp
题意:求一颗无向树的最小点覆盖. 本来一看是最小点覆盖,直接一下敲了二分图求最小割,TLE. 树形DP,叫的这么玄乎,本来是线性DP是线上往前\后推,而树形DP就是在树上,由叶子结点状态向根状态推. ...
- codeforces 1051 F
多源点最短路. 但是有限制,m - n <= 20,边数 - 点数 <= 20, 所以这个图非常的稀疏. 任意提取出一个生成树出来,LCA处理任意两点最短路. 然后再去遍历那些多余出来的点 ...
- Ajax 实现文件的下载
JQuery的ajax函数的返回类型只有xml.text.json.html等类型,没有“流”类型,所以我们要实现ajax下载,不能够使用相应的ajax函数进行文件下载.但可以用js生成一个form, ...
- 快速掌握RabbitMQ(一)——RabbitMQ的基本概念、安装和C#驱动
1 RabbitMQ简介 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现,官网地址:http://www.rabbitmq.com.Ra ...